里德·所罗门(QR码)的纠错

时间:2019-03-02 17:35:20

标签: qr-code reed-solomon

当QR码使用Reed-Solomon进行纠错时,我是对的,如果存在一定程度的损坏,QR码阅读器理论上可能会返回错误的结果?

如果是,是否还有其他级别的完整性检查(校验和等)可以防止这种情况发生?

1 个答案:

答案 0 :(得分:1)

您可以在Web上搜索“ QR Code ISO”,以找到文档的pdf版本。我在这里找到一个:

https://www.swisseduc.ch/informatik/theoretische_informatik/qr_codes/docs/qr_standard.pdf

标准中纠错具有多种优势,为了避免错误纠正,在某些情况下,某些“奇偶校验”字节仅用于错误检测,而不用于错误纠正。这在上面链接的pdf文件中的表13中显示。标有“ b”的是某些奇偶校验字节仅用于错误检测的情况。例如,表13的第一行显示(26,19,2)b,这意味着总共26个字节,19个数据字节和2个字节的校正,这意味着26-19 = 7个奇偶校验字节,使用了4个用于校正(每个校正的字节需要2个奇偶校验字节,除非硬件可以标记“擦除”),并且3个仅用于检测。

如果错误纠正计算出的无效位置(在有效位置范围“之外”的位置),则将其标记为检测到的错误。如果唯一的计算位置数小于用于计算那些位置(重复或不存在的根)的假定错误数,这些错误将被标记为检测到的错误。对于更高级别的纠错,所有计算出的位置对错误数据均有效的几率很小,以至于没有奇偶校验字节仅用于错误检测。这些案例的表13条目中没有“ b”。

为各种级别的错误校正所做的选择导致产生不良结果的可能性很小,但始终是可能的。

  

还有其他级别的完整性检查(校验和等)可以防止这种情况发生吗?

QR码阅读器可以将任何位不明显为0或1(例如黑/白代码上的灰色阴影)的字节标记为潜在的“擦除”,这将降低不良结果的几率。我不知道这是否完成。

在生成QR码时,选择一个遮罩以使代码中的明暗区域的比例均匀,并且在校正后,如果有证据表明选择了错误的遮罩,则可以将其标记为已检测到错误,但是我不确定在打印代码时是否总是选择“最佳”遮罩,因此我不知道是否使用了“最佳”遮罩的检查。