Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 16022-2008 Автоматическая идентификация. Кодирование штриховое. Спецификация символики Data Matrix (с Изменением N 1)


Рисунок 14 - Формирование реальной сетки модулей

i) продолжают заполнение остальных областей данных;

1) в процессе составления области данных формируют новую L-образную структуру части данных левее или выше, используя одну из двух следующих процедур:

i) если новая область данных по-прежнему ограничена с одной стороны исходной L-образной структурой, полученной на этапе, указанном в перечислении b), повторяют этап, указанный в перечислении с), устанавливая новую область данных и используя множество точек, выбранных на этапе, указанном в перечислении е) 2), и множество точек на стороне L-образной структуры из этапа, указанного в перечислении b) 2), которые находятся за пределами линии, полученной на этапе, указанном в перечислении е) 2).

ii) если новая область данных ограничена с двух сторон другими областями данных, повторяют порядок действий с этапа, указанного в перечислении с), для определения новой области данных с помощью множества точек, выбранных на этапе, указанном в перечислении е) 2), для каждой области данных, которая примыкает и ограничивает новую область данных с двух сторон;

2) если область данных не соответствует по числу модулей ранее полученным областям данных, символ корректируют путем его уменьшения до ближайшего большего числа областей, допускаемых стандартом для символа;

3) декодируют символ с одной или несколькими областями данных, начиная с последовательности действий, установленных на этапе, указанном в перечислении k);

4) если в текущей области данных закончили просмотр последнего пика и впадины, возвращаются в предыдущую область данных и продолжают поиск с этапа, указанного в перечислении d) 6) для следующего оставшегося пика и впадины в этой области данных;

j) находят области данных прямоугольного символа:

1) для каждой стороны L-образной структуры передвигают линию поиска, перпендикулярную этой стороне, от вершины угла L-образной структуры, осуществляя сканирование по длине другой стороны L-образной структуры, сохраняя линию поиска параллельной другой стороне L-образной структуры. Каждый раз, когда линия поиска сдвигается на один пиксель изображения, подсчитывают число переходов от черного к белому и от белого к черному, начиная и заканчивая подсчет с перехода от цвета стороны L-образной структуры к противоположному цвету. Подсчет переходов следует делать только тогда, когда линия поиска имеет те же самые цвета, что и две линии непосредственно выше и ниже (левее и правее) текущей, и отличается по цвету от предыдущей линии поиска, для которой такой подсчет делался. Строят график зависимости числа переходов от расстояния , на которое сдвигают линию поиска. Продолжают, пока линия не сдвинется на длину противоположной стороны L-образной структуры +10%;

2) для каждого направления рассматривают графики , начиная с наименьших значений по оси , с постепенным увеличением значений по этой оси. Находят первое место, где значение ( - максимальное значение одной из двух величин - ноль и ) станет меньше, чем 15% предшествующего местного максимума значения , при условии, что значение больше единицы. Увеличивают значение , пока значение не перестанет уменьшаться. Если в следующей точке значение не увеличивается, увеличивают значение еще раз. Отмечают это значение как соответствующее впадине. Увеличивают значение для поиска локального максимума до тех пор, пока не начнет уменьшаться, и отмечают это значение как соответствующее пику. Точку посередине между пика и впадины отмечают как линии убывания. Линия впадины в этой точке может формировать сторону символа или его области данных;

3) ищут чередующийся шаблон поиска для каждой области данных, как описано на этапе, указанном в перечислении е);

4) составляют примерную сетку модулей области данных символа, как описано на этапах, указанных в перечислениях i), g) и h);

5) если область данных не является надлежащим прямоугольным символом, формируют новый регион данных, используя следующие пики и впадины;

6) строят все добавочные области данных, как описано на этапе, указанном в перечислении i);

7) если удалось обнаружить правильную область данных или две области, пытаются декодировать символ, как описано на этапах, указанных в перечислениях k) и l). Если область(и) не удается декодировать, исключают эту(и) область-кандидат;

k) если число модулей данных является четным числом или символ имеет надлежащую прямоугольную форму, выполняют его декодирование, используя алгоритм исправления ошибок Рида-Соломона:

1) определяют модули данных в предполагаемых центрах сетки. Темный модуль соответствует единице, светлый модуль - нулю;

2) преобразуют группы по восемь модулей по определенным шаблонам кодовых слов в 8-битовые значения знаков символа;

3) выполняют процедуру исправления ошибок Рида-Соломона с полученными значениями знаков символа;

4) декодируют знаки символа в знаки данных в соответствии с установленными схемами декодирования;

l) если число модулей данных является нечетным числом, то декодируют символ, используя алгоритм сверточного кода исправления ошибок:

1) определяют модули данных в предполагаемых центрах сетки. Темный модуль соответствует единице, светлый модуль - нулю;

2) применяют черно-белую выравнивающую маску;

3) используя соответствующую таблицу расположения битов, преобразуют данные в двоичный поток;

4) затем применяют алгоритм сверточного кода исправления ошибок;

5) преобразуют битовый поток в знаки данных, используя соответствующую схему кодирования;

6) выполняют проверку правильности контрольной суммы CRC.   

Раздел 9. (Измененная редакция, Изм. N 1).