ИЗМЕНЕНИЕ N 1
ГОСТ Р ИСО/МЭК 16022-2008 "Автоматическая идентификация. Кодирование штриховое. Спецификация символики Data Matrix"
ОКС 35.040
Дата введения 2014-01-01
УТВЕРЖДЕНО И ВВЕДЕНО В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 26.09.2013 N 1112-ст
Раздел 9 изложить в новой редакции:
"9 Рекомендуемый алгоритм декодирования для символики Data Matrix
Данный рекомендуемый алгоритм декодирования позволяет находить на изображении символы Data Matrix и производить их декодирование следующим образом:
_______________
Разработаны и иные алгоритмы декодирования с аналогичными функциями.
а) определяют значения параметров размеров и формируют цифровое изображение:
1) задают расстояние , равное 7,5 диаметра апертуры, заданной в системе применения, которое считают минимальной длиной стороны L-образного шаблона поиска;
2) задают расстояние , равное 7,5 диаметра апертуры. Это расстояние считают максимальным промежутком в L-образном шаблоне поиска, допускаемым алгоритмом поиска на этапе b);
3) задают расстояние , равное 1,25 диаметра апертуры, которое считают номинальным наименьшим размером модуля, когда размер апертуры составляет 80% размера символа;
4) формируют черно-белое изображение, используя порог, определенный по методике, установленной в ИСО/МЭК 15415;
б)* осуществляют поиск горизонтальной и вертикальной линий сканирования для двух внешних L-образных границ Data Matrix:
_______________
* Текст документа соответствует оригиналу. - Примечание изготовителя базы данных.
1) продлевают горизонтальную линию сканирования по обе стороны от центральной точки изображения и, следуя вдоль этой линии, находят все точки перехода черное/белое и белое/черное. Для каждой точки перехода, найденной на линии сканирования и приведенной к границе пикселя (называемой далее точкой старта), производят следующее:
i) следуют от точки старта вверх вдоль границы перехода черный - белый, пиксель за пикселем до точки, расположенной на расстоянии от точки старта, или до той точки, в которой линия границы поворачивает вниз;
ii) следуют от точки старта вниз вдоль границы перехода черный - белый, пиксель за пикселем до точки, расположенной на расстоянии от точки старта, или до той точки, в которой линия границы поворачивает вверх;
iii) если при движении вверх достигли точки, отстоящей на от точки старта:
I) проводят линию А, соединяющую конечные точки вертикальной границы перехода;
II) проверяют, чтобы отклонение промежуточных точек границы от прямой линии А находилось в пределах . Если это условие выполняется, то продолжают выполнение с этапа, указанного в перечислении III). В противном случае переходят к выполнению этапа, указанного в перечислении 1) iv), до достижения края границы перехода в противоположное направление;
III) продолжают следовать вверх вдоль границы перехода до расстояния от линии А. Возвращаются в ближайшую точку границы перехода, находящуюся на расстоянии, большем или равном от последней точки границы перехода вдоль линии границы перехода и сохраняют ее как конечную точку границы перехода. Эту точку следует рассматривать как одно из предполагаемых положений границ внешнего края L-образных границ;
IV) продолжают следовать вниз вдоль границы перехода до расстояния от линии А. Возвращаются в ближайшую точку границы перехода, находящуюся на расстоянии, большем или равным от последней точки границы перехода вдоль линии границы перехода и сохраняют ее как конечную точку границы перехода. Эта точка должна быть расположена на предполагаемой границе перехода, и ее следует рассматривать как одно из предполагаемых положений границы внешнего края L-образных границ;
V) вычисляют новую откорректированную линию А1, которая является "наиболее приближенной" линией для границы перехода, определенной на двух предыдущих этапах. "Наиболее приближенную" линию вычисляют с использованием алгоритма линейной регрессии (используя конечные точки для выбора зависимой оси, то есть если они ближе к горизонтальной оси, зависимая ось - ось х) для каждой точки. На "наиболее приближенной" прямой линии отмечают отрезок, ограниченный точками p1 и р2, которые являются ближайшими к найденным выше конечным точкам границы перехода;
VI) сохраняют две конечные точки отрезка линии А1 - p1 и р2. Также сохраняют значение цвета левой стороны края границы перехода, видимое при движении от p1 к р2;
iv) если этап, указанный в перечислении iii), закончился неудачей или невозможно продолжить движение вниз на на этапе, указанном в перечислении iii) IV), проверяют, достигнута ли снизу граница перехода на расстоянии от точки старта. Если да, повторяют операции этапа, указанные в перечислении iii), но не вверх, а вниз;
v) если этапы, указанные в перечислениях iii) и iv), закончились неудачей, проверяют, находятся ли верхняя и нижняя границы перехода на расстоянии не менее от точки старта. Если достигнуты верхняя и нижняя границы перехода, то включают в формируемую границу перехода сегменты вверх и вниз на расстоянии и повторяют операции этапа, указанные в перечислении iii), но с добавлением границы перехода;
vi) повторяют вышеуказанный процесс для следующей точки перехода на линии сканирования, начиная с этапа, указанного в перечислении i), до достижения края изображения;
2) проводят линию сканирования вертикально в обоих направлениях от центральной точки изображения. Находят отрезки линий с использованием той же логической процедуры, что и на этапе, указанном в пункте 1), одновременно следуя от каждой границы перехода символа влево, а затем вправо;
3) среди сохраненных отрезков линий А1 осуществляют поиск пар отрезков, удовлетворяющих следующим четырем условиям:
i) если два отрезка имеют одно и то же направление от p1 до р2, проверяют, что расстояние от точки p1 одного отрезка до точки р2 другого отрезка менее, чем ; если противоположное, то проверяют, что расстояние между точками p1 и p1 или между точками р2 и р2 разных отрезков менее, чем ;
ii) два вышеуказанных отрезка должны быть параллельными с отклонением не более 5°;
iii) два вышеуказанных отрезка должны быть одного цвета, если отрезки имеют одинаковое направление от p1 к р2, или противоположного цвета, если направления этих отрезков противоположны;
iv) формируют две временные линии, продолжая каждый из двух рассматриваемых отрезков по достижении на их продолжениях точки, ближайшей к конечной точке отрезка другой линии. Проверяют, чтобы обе временные линии были отделены менее чем на от любой иной точки каждой линии;
4) для каждой пары линий, соответствующих требованиям этапа, указанного в перечислении 3), заменяют эту пару отрезков линий на один удлиненный отрезок линии А1 путем выбора "наиболее приближенной" линии по четырем конечным точкам пары рассматриваемых коротких отрезков линий. Также запоминают значение цвета левой стороны границы перехода новой удлиненной линии, рассматриваемой от конечной точки p1 до конечной точки р2;
5) повторяют этапы, указанные в перечислениях 3) и 4), до тех пор, пока возможно комбинировать пары линии А1;
6) выбирают отрезки линии длиннее . Помечают эти линии как предполагаемые L-образные стороны;
7) находят среди полученных пар предполагаемых L-образных сторон две линии, которые должны соответствовать следующим трем критериям:
i) ближайшие точки этих линий должны находиться друг от друга на расстоянии менее ;
ii) эти две линии должны быть взаимно перпендикулярны с погрешностью до 5°;
iii) внутренняя сторона угла, образованного этими линиями, должна иметь один и тот же цвет.
Следует иметь в виду, что если одна или обе линии простираются в обе стороны от точки их пересечения, то два или четыре образованных L-образных шаблона должны быть проверены на соответствие цвету и минимальной длине для укороченной стороны или сторон, прежде чем они могут стать предполагаемыми L-образными границами;
8) для каждой пары отрезков - предполагаемых L-образных границ, найденных на этапе, указанном в перечислении 7), формируют предполагаемую L-образную структуру путем продления отрезков до точки их пересечения;
9) если предполагаемая L-образная структура была сформирована из отрезков линий белого цвета внутри угла L-образной структуры, формируют инвертированное по цвету изображение для декодирования. Предпринимают попытки декодировать символ, начиная с нормального или инвертированного изображения, выбирая в качестве начального этап, указанный в перечислении d), используя каждую предполагаемую L-образную структуру, определенную на этапе, указанном в перечислении 8), как L-образный шаблон поиска. Если декодирование не удалось выполнить, переходят к этапу, указанному в перечислении с);
c) продолжают подбирать отрезки линий А1 и предполагаемые L-образные структуры аналогично предыдущим этапам, также продолжают поиски предполагаемых L-образных структур, используя горизонтальное и вертикальное смещение линий сканирования по отношению к предыдущим линиям сканирования:
1) используя новую горизонтальную линию сканирования, проведенную на расстоянии выше от центральной горизонтальной линии, повторяют в том же порядке действия этапа, указанного в пункте b) 1), исключая действия, при которых процесс начинается из центральной точки изображения, и этапы, указанные в перечислениях от b) 3) до b) 9). Если декодирование не удалось выполнить, переходят к следующему этапу;
2) используя новую вертикальную линию сканирования, проведенную на расстоянии слева от центральной вертикальной линии сканирования, повторяют действия этапа, указанного в перечислении b) 2), исключая действия, при которых процесс начинается из центральной точки изображения, и этапы, указанные в перечислении от b) 3) до b) 9). Если декодирование не удалось выполнить, переходят к следующему этапу;
3) повторяют действия этапа, указанного в перечислении 1) выше, используя новую горизонтальную линию сканирования, расположенную на расстоянии ниже центральной горизонтальной линии сканирования. Если декодирование не удалось выполнить, повторяют действия этапа, указанного в перечислении 2), но со сдвигом новой вертикальной линии сканирования на вправо от центральной вертикальной линии сканирования. Если декодирование не удалось выполнить, переходят к этапу, указанному в перечислении 4);
4) продолжают производить горизонтальные и вертикальные линии сканирования, как это предусмотрено на этапах, указанных в перечислениях 1) - 3), на вверх, затем влево, затем вниз, затем вправо от ранее произведенных линий сканирования до успешного декодирования символа или до достижения края изображения;
d) первоначально считают, что область-кандидат содержит символ квадратной формы. Если декодировать область как символ квадратной формы не удается, пытаются найти и декодировать символ прямоугольной формы, начиная с этапа, указанного в перечислении j). Для символа квадратной формы сначала формируют нормализованную схему переходов для равных сторон области-кандидата, чтобы найти шаблон поиска с чередующимися модулями: