3.3. qr コードを作ろう!75...3.3. qr コードを作ろう!75 step2 マスク処理 (2-1)...
TRANSCRIPT
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コード