Исправление ошибок Рида Соломона для QR-кода - PullRequest
0 голосов
/ 02 марта 2019

Поскольку QR-код использует Рид-Соломона для исправления ошибок, я прав, что при определенных уровнях повреждения считыватель QR-кода теоретически может выдавать неправильные результаты?

Если да, существуют ли другие уровни проверки целостности (контрольные суммы и т. Д.), Которые могли бы предотвратить это?

1 Ответ

0 голосов
/ 02 марта 2019

Вы можете выполнить поиск в Интернете по запросу «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-кода выбирается маска, чтобы выровнять соотношение светлых и темных областей в коде и после исправления, если есть доказательства того, чтобыла выбрана неправильная маска, которая может быть помечена как обнаруженная ошибка, но я не уверен, всегда ли выбирается «лучшая» маска при печати кода, поэтому я не знаю, стоит ли проверять «лучшую» маскуиспользуется.

...