QRコードを生成する手順で、
1. 入力テキストの分析と符号化
2. 誤り訂正符号というものを生成する
3. マトリックス(碁盤の目)に符号を並べる
4. マスクなるものをかける
5. 形式と型番を示す情報をつける
「2. 誤り訂正符号というものを生成する」にやってきました。
規格書を読んでみると、
- QRコードには、損傷した場合に復元できる”誤り訂正”能力がある。
- 誤り訂正レベルは以下の4段階から選べる
- レベル L 復元能力7%
- レベル M 復元能力15%
- レベル Q 復元能力25%
- レベル H 復元能力30%
ふむ。そうですか。
そのために、
- データコード後列に付加する一連の誤り訂正コード語を生成するリードソロモン誤り訂正を備えている。
?※△□? なんだそれ。その後しばらくよく理解できない記述が続いている。
ハクション大魔王じゃないが痒い。
で、結局どうすればいいのさ!というところを読み取っていくと、
まず基本として理解しなければならないのは、こういうことだった。
- 1. 入力テキストの分析と符号化にて符号化された入力テキストを8ビットずつにわけたが、8ビットで1データコード語と呼ぶ。
- QRコードに格納されるデータは、データコード語列とそのデータコードに対して計算された誤り訂正コード語列である。
- 型番と誤り訂正レベルによって、データコード語の数と誤り訂正語の数が決められている。例えば、
- 型番1で誤り訂正レベルLの場合(以下 1 - L のように表記する。)、データコード語は19個で、誤り訂正コード語は7個と規定されている。
- 1- H の場合、データコード語は9個になり、誤り訂正コード語は17個とされている。
- 型番と誤り訂正レベルによって、データコード語列を複数のブロックに分けることになっている。このブロックをRS(リードソロモン)ブロックという。RSブロックごとに、誤り訂正コード語列を算出する。例えば、以下のように決められている。
- 1- x であれば、RSブロック数は1である。
- 3 - Q の場合、RSブロック数は2である。3- Qの全ブロックのデータコード語は34個、誤り訂正コード語は36個であるが、各RSブロックのデータコード語は17個、誤り訂正コード語は18個である。
- 5 - H の場合、RSブロック数は4個あり、そのうち2個のRSブロックのデータコード語は11個、誤り訂正コード語は22個、残り2個のRSブロックのデータコード語は12個、誤り訂正コード語は22個。
というわけでプログラムの手順としては
- 使う型番と誤り訂正レベルに応じて、データコード語列をRSブロックに分割する。
- 分割したデータコード語列に対して誤り訂正コード語列を求める。
ということになる。
さて、誤り訂正コード語列を求めるにはどすればいいのか。
規格書にはさらに難解な言葉が、、、
- 規格書より引用
QRコードの多項式は、2を法とする算術及び100011101を法とする算術(体の原始多項式 x8 + x4 + x3 + x2 + 1の係数を示す100011101を持つ2の8乗のガロア体)を用いて計算する。。。。。。
うーん。高校で数学をちゃんとやっておけば、、、いや、高校でもガロア体なんて言葉聞いたことないとおもうぞ。。。やっぱり理系のひとはこんなのわかるんだろうね。きっと。そもそも私はスペイン文学士だ。ドンキホーテなら全部読んだぞ。えへん。日本語だけど。ぶつぶつ。。。
いや、こんなときはgoogleで検索してみよう。じゃあガロア体とは?
うーん。高校で数学をちゃんとやっておけば、、、いや、高校でもガロア体なんて。。。。
続く。。。
0 件のコメント:
コメントを投稿