QRコードの概要
符号化(エンコード)
エラー訂正の概要
エラー訂正に必要な「行列」の解説
「行列」を使ってエラー訂正をしよう
リード・ソロモン符号とエラー訂正の方法
多項式の割り算
リード・ソロモン符号の作り方
ガロア理論と体
QRコードを作ろう
QRコードメーカー
「言葉の距離」よりも「人間同士の距離感」をつかみかねています。 独極・QRコード担当の「あじな」です。 まともな人間になりたい・・・

これまでの復習 [表示する]

  1. QRコードは株式会社デンソーが作ったもので、スマホや携帯で読み取れる
  2. QRコードは「小さな白と黒の四角でできている」「多少汚れても大丈夫」という特徴がある
  3. 白黒の四角を使うのは、コンピュータにわかりやすくさせるため
  4. QRコードは「機能パターン」と「符号化領域」で出来上がっている
  5. 「機能パターン」は、「クワイエットゾーン」「位置検出パターン」「位置検出パターンの分離パターン」「タイミングパターン」「位置合わせパターン」の5種類
  6. 「符号化領域」は「形式情報」「型番情報」「データ領域」の3種類
  7. 「形式情報」は「エラー訂正レベル」と「マスクパターン参照子」で決まり、「\(4 \times 8=32\)」種類のパターンがある
  8. 「型番情報」は「QRコードのバージョンによって決まり、40種類ある
  9. 「データ領域」は「データ」と「エラー訂正情報」で出来上がる
  10. QRコードはバージョンが1~40まである。一辺の大きさは、「QRコードのバージョン(1~40)\( \times \)4\( + \)17」
  11. 「エラー訂正レベル」は「L(7%の汚れまで)」「M(15%の汚れまで)」「Q(25%の汚れまで)」「H(30%の汚れまで)」の4種類ある。
  12. 「エラー訂正レベル」が「L」だと「QRコード」で表現できるデータの量は最大で、「H」のときに最小になる。
  13. 「1bit」とは白・黒、1・0のような2種類の情報を表すことができる能力のことで、文字を増やすと「2bit(4種類)」「3bit(8種類)」と表現できる種類が増える
  14. 日常の言葉を「エンコード」して「コード(符号)」に置き換え、「コード(符号)」を「デコード」して日常の言葉に戻す
  15. QRコードの「エンコード」方式は「数字モード」「英数字モード」「漢字モード」「8bitモード」の4種類
  16. どの「エンコード」方式でも、データは「モード指示子」+「文字数指示子」+「データ」+「終端パターン」+「埋め草ビット」+「埋め草ワード」となる
  17. QRコードには「白」と「黒」を読み間違えても、元の情報を復元する「エラー訂正」能力が備わっている
  18. 「エラー訂正」は読み取れた(聞き取れた)言葉から最も近い「ありえそうな単語」を推測すること
  19. 「エラー訂正力が強い」ということは、「あえて使っていない単語が多い」ということと同じで、効率性は悪い

言葉の近さ

前回の解説では、「こんに■は」を例にとって、近い言葉を探すことで復元をするというお話をしましたが、どうやって「言葉の近さ」は決まるのでしょうか?
日本語で考えると、ちょっと難しいので、QRコードらしく、1,0の世界で考えてみます。

結論からいうと、「1,0の単語における、単語間の「距離」は、2つの単語の1,0が異なる箇所の個数にしよう!」と決まっております。
例えば、「10001」と「0000」の距離は、(二つの符号間で2個ほど異なる部分があるので)「2」となります。
こういった距離のことを「ハミング距離」と呼びます。
まぁ、そういわれればそうかな・・・という感じですよね。

最小距離を見極めろ!

距離に関連して、もう一つ「QRコード」の「エラー訂正」で重要な考え方があります。「最小距離」です。
例として、3桁の1,0からなる符号を考えてみてください。
この符号は、最大で何種類のものが表せるかというと、「\(2^3=8\)」なので、8種類になります。
この符号を全部書くとつぎの8個になります。「000」「001」「010」「011」「100」「101」「110」「111」
では、早速、先ほど解説した「ハミング距離」を、それぞれの符号間で計算してみましょう。
次の表は、一番上の行に記載している符号と、一番左の列に記載している符号との「ハミング距離」を表に記載したものです。

---000001010011100101110111
00001121223
00110212132
01012012312
01121103121
10012230112
10121321021
11023121201
11132212110

さて、例にあげている8個の符号間で最も小さい「ハミング距離」はいくつだったでしょうか?
簡単ですね。「1」ですね。ということは、例にあげている8個の符号間の「最小距離」は「1」となります。

単語を制限したら最小距離はどうなるの?

では次に、先ほどでてきた3桁の1,0の単語の組み合わせのうちから、いくつかの単語を禁止して、「000」「111」の2種類の符号しか使えないことにしてみましょう。
こうすると、単語間の距離はどうなるでしょうか?2つしかないので簡単ですね。「000」⇔「111」の距離は「3」となります。
つまり、2種類の符号しか使えないことにした場合、最小距離は「3」になるのです。先ほどの最小距離「1」の状況から変わりましたね。
このことから、「単語を制限する(いくつか使えない単語を作る)と最小距離は大きくなる」ということがわかります。
逆に言えば、「「最小距離」を大きくすると、「使えない単語」が増えてくる」ということですね。

ちょっとずつ、「エラー訂正」の本質に触れるような話になってきました。
次の解説から「最小距離」と「エラー訂正能力」の関係を見ていきます。