QRコードをつくってみる4
QRコードでは1モジュール1bitを意味するので先に得られたコード語列を
2進化しそれぞれ所定のモジュールに配置します。
なおRSブロック(表5)が2つ以上の
場合はデータをインターリーブ配置する必要がありますが、
サンプルの1-H型は不要なので説明を省きます。
また位置検出パターンおよびタイミングパターンは各バージョンで固定なので
あらかじめ配置しておきます。
・配置のルール
1、一番左上を(0,0)としi行j列(i,j)の座標系を考えます。
例えばサンプルのバージョン1では(0,0)~(20,20)です。
2、スタートは右下とします。
サンプルでは(20,20)からスタートですのでここにデータ(0 or 1)を配置します。
3、上下の進行方向を決めておきます。最初の進行方向は上です。
4、幅2つ分を基準とします。
幅2つ分のうち右側にいるとき...
ひとつ左に移動することを試みます。
あいていればそこに移動し次のデータを配置します。
もし固定のパターン等で埋まっていたら現在の進行方向(上または下)へ1つ移動しデータを配置します。
幅2つ分のうち左側にいるとき...
そこより現在の進行方向側に空きがあるか確認します。
空きがあれば現在のモジュールに上下方向で最も近くかつ幅2つのうち右側に優先してデータを配置します。
もし進行方向に空きが無ければ一つ左方向へ移動しそこにデータを配置します。またその時進行方向を今までの逆にします。
・配置の具体例
上記の説明ではややわかりにくいので具体例をあげます。
仮に"01234567 89ABCDEF GHIJKLMN"というデータがあり(実際には0か1しかないが..)
6行4列のマトリックスに上記のルールで配置すると...
D | C | B | A |
F | E | 9 | 8 |
H | G | 7 | 6 |
J | I | 5 | 4 |
L | K | 3 | 2 |
N | M | 1 | 0 |
となります。
また同様のマトリックスで中央の4行2列がすでに固定パターン"*"で埋まっている場合、
"01234567 89ABCDEF"というデータを配置する場合は...
9 | 8 | 7 | 6 |
A | * | * | 5 |
B | * | * | 4 |
C | * | * | 3 |
D | * | * | 2 |
F | E | 1 | 0 |
となります。
この配置のルールで先ほど得たデータを2進化し各ビット毎のデータを各モジュールに割り振ります。
下図は位置検出パターン・タイミングパターン・サンプルのデータを割り振った直後の状態です。
次ページ:マスク処理
前のページ
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
次のページ