#qr-code #reed-solomon
#qr-код #рид-Соломон
Вопрос:
Поскольку QR-код использует Reed-Solomon для исправления ошибок, прав ли я, что при определенных уровнях искажения считыватель QR-кода теоретически может возвращать неправильные результаты?
Если да, существуют ли другие уровни проверки целостности (контрольные суммы и т.д.), Которые могли бы предотвратить это?
Ответ №1:
Вы можете выполнить поиск в Интернете по «QR Code ISO», чтобы найти PDF-версию документа. Я нашел его здесь:
https://www.swisseduc.ch/informatik/theoretische_informatik/qr_codes/docs/qr_standard.pdf
В стандарте имеется множество возможностей исправления ошибок, и, чтобы избежать неправильного исправления, в некоторых случаях некоторые байты «четности» используются только для обнаружения ошибок, а не для исправления ошибок. Это показано в таблице 13 в файле pdf, на который дана ссылка выше. Отмеченные буквой «b» — это случаи, когда некоторые байты четности используются только для обнаружения ошибок. Например, самая первая запись в таблице 13 показывает (26,19,2)b, что означает 26 полных байт, 19 байт данных и 2 байта коррекции, что означает, что из 26-19 = 7 байтов четности 4 используются для исправления (для каждого исправленного байта требуется 2 байта четности, если аппаратное обеспечение не может пометить «стирания»), а 3 используются только для обнаружения.
Если исправление ошибок вычисляет недопустимое местоположение (то, которое находится «вне» диапазона допустимых местоположений), это будет помечено как обнаруженная ошибка. Если количество уникальных вычисленных местоположений меньше, чем количество предполагаемых ошибок, использованных для вычисления этих местоположений (дублирующийся или несуществующий корневой каталог), это будет помечено как обнаруженная ошибка. Для более высоких уровней исправления ошибок вероятность того, что все вычисленные местоположения верны для неверных данных, настолько мала, что ни один из байтов четности не используется только для обнаружения ошибок. В этих случаях в записях таблицы 13 нет буквы «b».
Выбор различных уровней исправления ошибок приводит к очень небольшой вероятности плохого результата, но это всегда возможно.
существуют ли другие уровни проверки целостности (контрольные суммы и т.д.), Которые могли бы предотвратить это?
Считыватель QR-кода может помечать байты, где какой-либо из битов явно не равен 0 или 1 (например, оттенок серого в черно -белом коде), как потенциальные «стирания», что снизит вероятность плохого результата. Я не знаю, сделано ли это.
При генерации QR-кода выбирается маска для выравнивания соотношения светлых и темных областей в коде, и после исправления, если есть доказательства того, что была выбрана неправильная маска, это может быть помечено как обнаруженная ошибка, но я не уверен, всегда ли выбирается «лучшая» маска при печати кода, поэтому я не знаю, используется ли проверка на «лучшую» маску.