3.3. QR コードを作ろう!75...3.3. QR コードを作ろう!75 STEP2 マスク処理 (2-1)...

6
3.3. QR コードを作ろう! 75 STEP2 マスク処理 (2-1) 仕様にしたがって、STEP1 (1-7) で得たデータ列を QR コードのデータおよび誤り訂正 コード語領域に配置する。 STEP1 (1-7) で得たデータ列を、0 ならば明、1 ならば暗で、図 3.3 に記述してある001 から208 の番号順に埋めていきます。 202 204 206 208 201 203 205 207 200 198 196 194 199 197 195 193 186 188 190 192 185 187 189 191 184 182 180 178 183 181 179 177 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170 172 174 176 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 136 134 132 130 128 126 124 122 120 118 116 114 112 110 108 106 104 102 100 098 135 133 131 129 127 125 123 121 119 117 115 113 111 109 107 105 103 101 099 097 074 076 078 080 082 084 086 088 090 092 094 096 073 075 077 079 081 083 085 087 089 091 093 095 072 070 068 066 064 062 060 058 056 054 052 050 071 069 067 065 063 061 059 057 055 053 051 049 026 028 030 032 034 036 038 040 042 044 046 048 025 027 029 031 033 035 037 039 041 043 045 047 024 022 020 018 016 014 012 010 008 006 004 002 023 021 019 017 015 013 011 009 007 005 003 001 3.3: データおよび誤り訂正コード語の配置

Transcript of 3.3. QR コードを作ろう!75...3.3. QR コードを作ろう!75 STEP2 マスク処理 (2-1)...

3.3. QRコードを作ろう! 75

STEP2 マスク処理

(2-1) 仕様にしたがって、STEP1の (1-7)で得たデータ列をQRコードのデータおよび誤り訂正

コード語領域に配置する。

STEP1の (1-7)で得たデータ列を、0ならば明、1ならば暗で、図 3.3に記述してある001から208

の番号順に埋めていきます。

202

204

206

208

201

203

205

207

200

198

196

194

199

197

195

193

186

188

190

192

185

187

189

191

184

182

180

178

183

181

179

177

138

140

142

144

146

148

150

152

154

156

158

160

162

164

166

168

170

172

174

176

137

139

141

143

145

147

149

151

153

155

157

159

161

163

165

167

169

171

173

175

136

134

132

130

128

126

124

122

120

118

116

114

112

110

108

106

104

102

100

098

135

133

131

129

127

125

123

121

119

117

115

113

111

109

107

105

103

101

099

097

074

076

078

080

082

084

086

088

090

092

094

096

073

075

077

079

081

083

085

087

089

091

093

095

072

070

068

066

064

062

060

058

056

054

052

050

071

069

067

065

063

061

059

057

055

053

051

049

026

028

030

032

034

036

038

040

042

044

046

048

025

027

029

031

033

035

037

039

041

043

045

047

024

022

020

018

016

014

012

010

008

006

004

002

023

021

019

017

015

013

011

009

007

005

003

001

図 3.3: データおよび誤り訂正コード語の配置

76 第 3章 QRコードを作ろう!

(2-2) モジュールパターンに市松模様 (000)のマスク処理を施す。

(2-1)の図 3.3に市松模様 (図 3.4)のマスクをかけます。すなわち、同じ番号で

明かつ明ならば明 (0⊕ 0 = 0)明かつ暗ならば暗 (0⊕ 1 = 1)暗かつ暗ならば明 (1⊕ 1 = 0)

のように排他的論理和をとります。ただし、灰色の部分は除きます。なお、マスクをかけた後の

QRコードは図 3.6を見てください。

202

204

206

208

201

203

205

207

200

198

196

194

199

197

195

193

186

188

190

192

185

187

189

191

184

182

180

178

183

181

179

177

138

140

142

144

146

148

150

152

154

156

158

160

162

164

166

168

170

172

174

176

137

139

141

143

145

147

149

151

153

155

157

159

161

163

165

167

169

171

173

175

136

134

132

130

128

126

124

122

120

118

116

114

112

110

108

106

104

102

100

098

135

133

131

129

127

125

123

121

119

117

115

113

111

109

107

105

103

101

099

097

074

076

078

080

082

084

086

088

090

092

094

096

073

075

077

079

081

083

085

087

089

091

093

095

072

070

068

066

064

062

060

058

056

054

052

050

071

069

067

065

063

061

059

057

055

053

051

049

026

028

030

032

034

036

038

040

042

044

046

048

025

027

029

031

033

035

037

039

041

043

045

047

024

022

020

018

016

014

012

010

008

006

004

002

023

021

019

017

015

013

011

009

007

005

003

001

図 3.4: 市松模様によるマスクパターン

3.3. QRコードを作ろう! 77

STEP3 形式情報の符号化

(3-1) 誤り訂正レベル (L:01)とマスクパターン (市松模様:000)を連結する。

( 01, 000 )→ ( 0, 1, 0, 0, 0 )

(3-2) (3-1)で得たデータ列 (01000)から誤り訂正コード語 (生成多項式による剰余)を求める。

GF(2)上の 3個 (最小距離 7)の誤りが訂正可能な [15,5]BCH符号として、誤り訂正コード語を

求めます (m = 4, t = 3)。すなわち、GF(24)の原始元を αとすると、生成多項式は

G(x)= (x− α1)(x− α2)(x− α3)(x− α4)(x− α5)(x− α6)(x− α8)(x− α9)(x− α10)(x− α12)=x10 + x8 + x5 + x4 + x2 + x+ 1

となります。また、データ (情報)を多項式表現すると

I(x) = 0x4 + 1x3 + 0x2 + 0x+ 0 = x3

となります。したがって、誤り訂正コード語の多項式表現は

R(x)= [I(x)x10] mod G(x)

= 1x9 + 1x8 + 1x7 + 1x6 + 0x5 + 1x4 + 0x3 + 1x2 + 1x+ 0

となります (10 = 15− 5)。

(3-3) (3-1)で得たデータ列に (3-2)で得たデータ列を連結する。

形式情報の符号語 (データ+誤り訂正データ語)を作成しましょう。GF(24)上およびGF(2)上の

演算であることに注意すれば、巡回符号 (BCH符号)の符号語の多項式表現は

X(x) = I(x)x10 −R(x) = I(x)x10 +R(x)

によって与えられましたから、(3-2)より多項式の係数を並べれば、符号語

→ ( 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0 )

が得られます。

注意:第 2章では右から高次の係数を並べましたが、ここでは、左から高次の係数を並べます。こ

れは本質的な問題ではなく、仕様の問題です。

(3-4) (3-3)で得たデータ列と101010000010010の排他的論理和をとる。

010001111010110

⊕) 101010000010010

111011111000100

→ ( 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0 )

78 第 3章 QRコードを作ろう!

(3-5) 仕様にしたがって、(3-4)で得たデータ列を形式情報領域に配置する。

(3-4)で得たデータ列を、0ならば明、1ならば暗で、図 3.5に記述してある01から15の番号順に

埋めていきます。なお、形式情報はデータおよび誤り訂正コード語の解読に必修の情報であるた

め、2ヶ所に配置することで冗長性を高めています。

01 02 03 04 05 06 07

15

14

13

12

11

10

09

08

07

06

05

04

03

02

01

08 09 10 11 12 13 14 15

図 3.5: 形式情報の配置

3.3. QRコードを作ろう! 79

完成!!! (2-2)で得たデータおよび誤り訂正コード語にマスク処理を施したもの、および、(3-5)

の形式情報、タイミングパターン、位置検出パターンを 1つにまとめれば、図 3.6のような QR

コードが完成します。

図 3.6: 完成したQRコード

80 第 3章 QRコードを作ろう!

如何だったでしょうか。本テキストを通して、数学を身近に感じていただければ幸いに思い

ます。