誤り訂正機能とは
誤り訂正機能とは
2次元シンボルでは、バーやセルが小さいためにバーコードに比べ損傷を受ける確率が非常に高い。
そのため、損傷を受けたデータを演算により元に戻すために、誤り訂正機能を持つことが一般的になっている。
これは、データ通信やデジタル信号処理の世界では古くから使用されていた技術である。
誤り訂正とは、方程式で関連付けられた誤り訂正データをシンボル内に配置し、データの損傷があった場合、その誤り訂正データから元のデータを求めようとすることである。
具体的には、全てのデータから連立多項方程式を作り、汚れや傷で読めない未知のデータを演算によって求める。
生成多項式とは、
R(x)=r0+r1x+r2x2+r3x3+r4x4……
のような式である。
したがって、未知数を多くするためにはそれだけ多くの余分なデータをエンコードすることになるため、誤り訂正レベルが高いほどシンボルは大きくなる。
誤り訂正量
リードソロモン方式では、2種類の誤りを訂正することができる。
一つは、正しく読み取りができずに誤読になった誤りデータ(t)で、代入エラーとも呼ぶ。
もう一つは、読み取りを行わなかったか、あるいはデコードできずに未読になった誤りデータ(e)で、棄却エラーとも呼ぶ。
これらの誤り訂正データ数は、次のような関係にある。
e + 2t ≦ d – p
e:未読したデータ(棄却エラー)
t:誤読したデータ(代入エラー)
d:誤り訂正のデータ数
p:誤り検知のデータ数(エラーチェック)
したがって、未読データは同数の誤り訂正データで訂正できるが、誤読データを訂正する場合は、2倍の誤り訂正データが必要であることになる。
誤り訂正機能の限界
誤り訂正能力は、汚れや傷に対する万能薬のように見られることが多いが、実はこの薬が効かない場合もある。
例えば、QR Code, DataMatrix, MaxiCode, AztecCodeのようなファインダーパターンがあるシンボルで、そのファインダーパターンが汚れて見えなくなってしまった時はどうなるだろうか。
一般的にリーダは、このファインダーパターンを見つけてシンボルの種類を認識しているので、シンボルの種類が認識できなければ、当然読み取ることはできない。
つまり、誤り訂正機能はあくまでもデータの障害に対してしか機能しないのである。