Как вычислить значения экспоненты для исправления ошибок в QR-коде

Когда я начал читать о Qr-кодах, в каждой просматриваемой статье я мог видеть один показатель QR-кода таблицы αx, который имеет значения для конкретных степеней αx. Я не уверен, как создается эта таблица. Может ли кто-нибудь объяснить мне логику этой таблицы.

Для справки таблицу можно найти по адресу http://www.matchadesign.com/_blog/Matcha_Design_Blog/post/QR_Code_Demystified_-_Part_4/#


person Dungeon Hunter    schedule 28.10.2011    source источник


Ответы (1)


(zxing исходный код для этого может вам помочь.)

Потребовалось бы много времени, чтобы объяснить всю математику здесь. Для исправления ошибок Рида-Соломона вам нужно поле Галуа из 256 элементов (ничего необычного — просто набор из 256 элементов, которые имеют сложение, возведение в степень и тому подобное).

Это определяется не в терминах чисел, а в терминах полиномов, все коэффициенты которых равны 0 или 1. Мы работаем с полиномами с коэффициентом 8 — для удобства они сопоставляются с 8-битными значениями. Хотя заманчиво думать об этих значениях как о числах, на самом деле это нечто иное.

На самом деле, чтобы сложение и тому подобное имели смысл, чтобы все операции возвращали вас обратно к значению в поле Галуа, все результаты вычисляются по модулю неприводимого полинома в поле. (Сейчас пропустите, что это значит.)

Чтобы ускорить выполнение операций, полезно предварительно вычислить, каковы степени полинома «x» в поле. Это альфа. Вы можете думать об этом как о «2», так как полином «x» равен 00000010, хотя это не совсем точно.

Итак, вы просто вычисляете степени x в поле. Поскольку это поле, вы таким образом поразите каждый элемент поля. Последовательность кажется степенью двойки, которую она отображает на короткое время, пока не вступит в силу первый «модуль» примитивного многочлена. Умножение на х действительно похоже на умножение на 2, но на самом деле это немного совпадение в этой области.

person Sean Owen    schedule 29.10.2011
comment
Я следовал этому руководству, чтобы реализовать генерацию кодовых слов для исправления ошибок. Реализация работает хорошо, за исключением случаев, когда итерация деления дает результат с первыми двумя мономами, имеющими нулевой коэффициент, что приводит к исключению, поскольку в таблице логарифмического антилогарифма нет значения для нулевого логарифма. Математически говоря, я не знаю, как справиться с этим исключением... - person SebasSBM; 12.06.2016
comment
Ууууууу!! После недели, застрявшей в этом исключении, я наконец понял, как его решить! Я только что понял: если генераторный многочлен умножить на ноль, все члены будут равны нулю; message_polynomial XOR zeroes = message_polynomial, так что это было так же просто, как установить переменные для следующей итерации и завершить текущую итерацию! Не могу поверить, что из-за этого я застрял почти на неделю, но сейчас я так счастлив! :-) - person SebasSBM; 12.06.2016