Способ обнаружения штрих-кодов
Настоящее изобретение относится к области техники для обнаружения штрих-кодов на цифровом изображении, представленном в виде двумерного массива цифрового изображения. Технический результат заключается в обеспечении улучшенных средств обнаружения и локализации штрих-кодов, присутствующих на цифровом изображении. Технический результат достигается за счет способа, содержащего: применение фильтра к массиву изображения; вычисление дискретного преобразования Радона отфильтрованного массива изображения, при этом дискретное преобразование Радона вычисляют для множества дискретных линий в указанном отфильтрованном массиве изображения, причем для каждой заданной дискретной линии с заданным наклоном дискретное преобразование Радона вычисляют для набора разных смещений заданной дискретной линии, причем указанный набор смещений в два раза меньше размера массива изображения; обнаружение вершинных точек шаблона в выходных данных дискретного преобразования Радона, вычисленного в отношении отфильтрованного массива изображения; и преобразование обнаруженных вершинных точек обратно в дискретные линии в массиве изображения для установления местоположения штрих-кода, присутствующего на цифровом изображении. 2 н. и 13 з.п. ф-лы, 12 ил.
УРОВЕНЬ ТЕХНИКИ
Настоящее изобретение относится к способу такого типа, который указан в ограничительной части пункта 1 формулы изобретения, а также к компьютерной системе, которая указана в пункте 14 формулы изобретения.
Оптические машиночитаемые штрих-коды стали широко распространенными средствами в промышленности и торговле для описания и идентификации объектов или товаров, на которых содержатся указанные штрих-коды.
В частности, оптические машиночитаемые штрих-коды облегчают автоматическую идентификацию и сбор данных (automatic identification and data capture, AIDC) об объектах с целью автоматической идентификации объектов, сбора данных о них и ввода этих данных непосредственно в компьютерные системы без участия человека.
Хотя многие оптические машиночитаемые штрих-коды считываются специальными оптическими сканерами, например, путем считывания штрих-кодов приобретаемых товаров в кассах супермаркетов с помощью лазерных сканеров, было разработано прикладное программное обеспечение, которое позволяет считывать штрих-коды также с изображений, захваченных цифровыми камерами, например камерами интеллектуальных мобильных устройств, тем самым расширяя возможности использования и применения штрих-кодов.
Однако современные способы считывания оптических штрих-кодов с цифровых изображений обладают некоторыми серьезными недостатками и ограничениями.
В частности, было выяснено, что обнаружение или локализация и идентификация штрих-кодов, содержащихся на цифровом изображении, особенно одномерных штрих-кодов, содержащихся на цифровом изображении, представляет собой сложную вычислительную и ресурсоемкую задачу даже для современных процессоров интеллектуальных устройств, например смартфонов или планшетов.
Фактически современные способы или системы по существу функционируют исключительно как декодеры в том смысле, что, например, ожидается, что одномерный штрих-код при захвате интеллектуальным устройством будет расположен непосредственно перед камерой и центрирован относительно нее на требуемом расстоянии.
Другими словами, современные способы или системы основаны на предположении или допущении конкретного местоположения и/или размера, и/или разрешения, и/или ориентации штрих-кода на изображении.
Поэтому, известные в настоящее время способы или системы зачастую не дают удовлетворительных результатов, поскольку во многих или в большинстве практических случаев штрих-код на захваченном изображении имеет произвольное и неожиданное местоположение, размер или ориентацию на изображении.
Проблема
Поэтому, задачей настоящего изобретения является обеспечение улучшенных средств обнаружения и локализации штрих-кодов, присутствующих на цифровом изображении.
В частности, например, задачей настоящего изобретения является упрощение и ускорение локализации одномерных штрих-кодов, содержащихся на цифровом изображении.
Решение
Согласно настоящему изобретению, эта задача решается с помощью способа по пункту 1 формулы изобретения и компьютерной системы по пункту 14 формулы изобретения.
Предпочтительные варианты осуществления и дополнительные улучшения изложены в зависимых пунктах формулы изобретения.
Примерный способ обнаружения штрих-кодов, например, одномерных штрих-кодов, на цифровом изображении, представленном в виде двумерного массива цифрового изображения, может содержать один, несколько или все из нижеследующих этапов:
применение фильтра к массиву изображения,
вычисление дискретного преобразования Радона в отношении отфильтрованного массива изображения, при этом дискретное преобразование Радона вычисляется для множества дискретных линий в отфильтрованном массиве изображения,
при этом для каждой заданной дискретной линии с заданным наклоном дискретное преобразование Радона вычисляется для набора разных смещений заданной дискретной линии, причем указанный набор смещений меньше в два раза, чем размер массива изображения,
обнаружение вершинных точек шаблона в выходных данных дискретного преобразования Радона, вычисленного в отношении отфильтрованного массива изображения,
преобразование обнаруженных вершинных точек обратно в дискретные линии в массиве изображения для установления местоположения штрих-кода, присутствующего на цифровом изображении.
В данном документе двумерный массив цифрового изображения или цифровое изображение может, среди прочего, пониматься как представленное в виде двумерного массива значений интенсивности, например, двумерного массива пикселей изображения.
Говоря вкратце, описанный выше примерный способ позволяет одновременно и эффективно вычислять сумм пикселей почти вдоль каждой прямой линии цифрового изображения.
Кроме того, вместо того чтобы пытаться обнаружить и локализовать штрих-код непосредственно в области координат изображения, настоящее изобретение преобразует подлежащее обработке цифровое изображение в область, которая может быть выражена через наклоны или углы и смещения, охватывающие почти всевозможные проекции изображения. В этой новой области, т.е. в выходных данных, сгенерированных путем вычисления дискретного преобразования Радона в отношении отфильтрованного массива изображения, изображения штрих-кода генерируют специальные шаблоны, обнаружение которых может быть легче, чем обнаружение штрих-кода в исходной области, т.е. на исходном изображении или в исходных координатах изображения.
Термин штрих-код в данном документе, в частности, следует понимать как относящийся к одномерному штрих-коду или линейному штрих-коду, например, шаблону из параллельных линий разной ширины и с разным промежутком между линиями.
Кроме того, указанные дискретные линии, имеющие конечное число точек линий или элементов линий, могут быть заданы таким образом, чтобы заданная дискретная линия проходила не более чем через одну точку массива в каждом столбце массива изображения.
Заданная дискретная линия может, среди прочего, быть параметризована наклоном, например наклоном s, и точкой пересечения, например точкой d пересечения. Указанный наклон также может быть выражен через угол, который может быть определен как arctg(s/(N-1)), т.е. как арктангенс наклона s, где N - целое число, например число столбцов массива изображения для подлежащего обработке изображения.
Кроме того, смещение заданной дискретной линии с заданным наклоном относительно другой дискретной линии с тем же наклоном также может быть охарактеризовано с помощью точки пересечения, например, точки пересечения по вертикали.
Примерный способ, описанный выше, позволяет значительно ускорить и сократить вычислительные этапы, необходимые для получения точной и надежной идентификации и локализации одномерного штрих-кода на цифровом изображении/штрих-кода, содержащегося на нем, например, на цифровом изображении, захваченном камерой интеллектуального устройства, такого как смартфон.
Это позволяет обнаруживать, локализовать и декодировать штрих-коды на цифровых изображениях независимо от местоположения, размера или ориентации штрих-кода на цифровом изображении, поскольку описанный выше способ или преобразование инвариантно к изменениям угла/поворота или ориентации штрих-кода на изображении/штрих-кода, содержащегося на нем.
В частности, настоящее изобретение позволяет выполнять все эти этапы, т.е. обнаружение или локализацию и декодирование штрих-кода, в блоке обработки, например, центральном процессоре (ЦП) и/или графическом процессоре (ГП) обычного интеллектуального устройства, такого как смартфон.
Например, согласно уровню техники, для изображения размером N× N пикселей, где N - положительное целое число, минимальный размер выходных данных или минимальное число требуемых вычислений составляет 3N×4N, согласно настоящему изобретению, выходной размер выходных данных, полученных в результате вычисления преобразования Радона цифрового изображения, т.е. отфильтрованного массива изображения, составляет только N×4N, при этом максимальное значение количества вычислений, например, вычисления сумм целых чисел, равно log2(N)×4N2.
Описанный в данном документе способ может привести к значительной экономии вычислительных ресурсов по сравнению с текущими подходами на основе перебора возможных вариантов, которые требуют по меньшей мере 2×4×N3 количества вычислений. Например, для изображения с N=512, т.е. изображения размером 512×512 пикселей, требуется менее 1% вычислений по сравнению с современным подходом, т.е. всего 9,4 миллиона вычислений вместо одного миллиарда вычислений.
Настоящее изобретение, среди прочего, преодолевает техническое предубеждение, заключающееся в том, что только полное преобразование Радона, которое слишком затратно в вычислительном отношении для его реализации процессорами современных мобильных интеллектуальных устройств, может обеспечивать необходимую достаточную вычислительную базу для определения местоположения штрих-кода, содержащегося на цифровом изображении.
Другими словами, настоящее изобретение позволяет выполнять обнаружение и декодирование штрих-кода в данных изображения на мобильных интеллектуальных устройствах, таких как смартфоны, без наложения ограничений на расположение, размер и ориентацию штрих-кода на изображении; задача, ранее считавшаяся невозможной, может быть выполнена с ограниченной вычислительной мощностью, обеспечиваемой современными смартфонами.
Указанные дискретные линии могут отличаться от классических непрерывных прямых линий тем, что они не идут точно по прямой, как будет понятно в дальнейшем.
Указанные примерные дискретные линии заданы с помощью целочисленных позиций в массиве дискретного изображения для подлежащих обработке изображений, при этом, например, начиная с некоторой целочисленной позиции, может выполняться подъем или спуск на целое число шагов, при этом на каждом из шагов подъема или спуска встречается целочисленная позиция дискретного массива изображения.
Дискретная линия может быть, например, задана в виде набора дискретных точек с парами (целочисленных) координат {xi,yi}, которые
пересекают двумерную область размера (N, N), где N=2n, и n - целое число >1, и где i и N - целые числа, начиная с позиции {х0=0, у0=d} и заканчивая {xN-1=N-1, yN-1=d+s}, т.е. в конце оси X эта линия закончится на s позиций выше своей начальной точки по оси Y, и где d - точка пересечения или смещение, a s- наклон или угол линии.
Этот набор можно быть оценен как . Например, для N=8, n=3, и учитывая, что х и s разложены в двоичном формате, член l становится равным:
а при оценивании, например, для s=3, т.е. s=(s0, s1, s2)=(1,1,0), эта формула примет следующий вид:
Теперь можно использовать эту формулу для каждого х (выраженного в двоичном формате) между 0 и N-1, и после добавления d к каждой координате у можно получить желаемую линию.
В качестве альтернативы или дополнения дискретная линия может быть, среди прочего, задана рекурсивно следующим образом. Например, можно разложить или разделить подлежащее обработке изображение или подлежащий обработке массив изображения, или область изображения на две половины, которые содержат разные части или сегменты дискретной линии.
Например, массив изображения или область изображения может быть разделена на две половины по горизонтальной оси, и, учитывая начальное целое число и четное количество шагов подъема, может быть предписано подниматься на половину шагов подъема в каждой из половин массива изображения или половин области изображения, а в случае нечетного числа шагов подъема может быть предписано выполнять первую половину подъема в первой половине массива изображения или первой половине области изображения, при этом число шагов в первой половине равно floor((число шагов подъема)/2), где floor является функцией округления до ближайшего целого в меньшую сторону, при этом оставшееся число шагов подъема выполняется во второй половине массива изображения или второй половине области изображения.
Этот примерный способ действия может генерировать дискретные линии, которые соединяют две точки, т.е. две целочисленные позиции, подлежащего обработке изображения или массива изображения.
Для полноты картины следует отметить, что начальные (или конечные) точки дискретных линий, пересекающих подлежащий обработке массив изображения, могут находиться вне массива изображения, т.е. за пределами точек массива изображения или индексов массива изображения. Другими словами, область, например, пространство параметров, охватываемое наклоном или углом и точкой пересечения или смещением, в котором могут быть описаны дискретные линии, может выходить за пределы области, например, индексов массива изображения, описывающей подлежащее обработке изображение.
Строго говоря, рекурсивное определение дискретной строки пересекающей N=2n значений, где n - целое число, может быть задано путем представления термина в виде
где обозначает функцию округления до ближайшего целого в меньшую сторону.
Кроме того, частичное дискретное преобразование Радона на стадии m может быть определено как
В данном случае термин «стадия т» можно понимать как этап преобразования, на котором выполняются всевозможные суммы в группах ν ε 0..2n-m - 1 из 2 m последовательных столбцов. Следует отметить, что на первой стадии, когда m=0, частичное преобразование будет непосредственно исходными данными f, поскольку нет смысла в суммировании по горизонтальной оси, когда в каждой группе есть только один столбец, и, поэтому, можно записать Однако, когда m=1, будет групп полос, содержащих два столбца. Когда m=2, будет полос, каждая из которых содержит четыре столбца, и так далее. На последней стадии, когда m=n, будет только одна группа, содержащая все столбцы, и, поэтому, ее можно, среди прочего, назвать окончательным преобразованием Радона:
Для полноты картины следует отметить, что лямбда-функция такова, что преобразует двоичные многомерные индексы в десятичные одномерные индексы. Также следует отметить, что символ вертикальной черты «I» использовался выше для разделения параметров в массивах: как в f(x I у); и запятые «,» использовались для разделения двоичных величин, на которые эти параметры могут быть разложены.
Кроме того, отображение между двумя последовательными стадиями может быть выражено как
При этом число битов на отдельных стадиях может варьироваться и может зависеть от т, т.е. текущей стадии. Как говорилось ранее, когда m=0, массив является действительно двумерным, так как переменная s по-прежнему пуста, поэтому отображается непосредственно в f (х | у), а когда m=n, что соответствует последней стадии, значение переменной ν может быть очищено, в связи с чем является желаемым результатом
Вышеупомянутый фильтр, который можно применять к цифровому изображению или массиву изображения перед выполнением дискретного преобразования Радона, может быть, например, фильтром обнаружения границ или градиентным фильтром. Например, фильтр может вычислять градиент значений интенсивности пикселей изображения.
Применение такого фильтра может выделить, в частности, элементы в подлежащем обработке изображении, в которых яркость или интенсивность резко изменяется или имеет неоднородности, что, в частности, и наблюдается на штрих-кодах.
Следовательно, это может облегчить, среди прочего, этап обнаружения в выходных данных дискретного преобразования Радона, вычисленного в отношении отфильтрованного массива изображения, вершинных точек шаблона, поскольку упомянутый примерный градиентный фильтр также выделяет границы или контуры указанного шаблона.
Например, шаблон в выходных данных дискретного преобразования Радона, вычисленного в отношении отфильтрованного изображения, может иметь четырехугольную форму, например, ромбовидную форму, при этом указанный возможный градиентный фильтр может выделять границы или контуры четырехугольного или ромбовидного шаблона, так что вершинные точки четырехугольного или ромбовидного шаблона могут быть легче обнаружены и локализованы. Как более подробно описано в качестве примера ниже, это может снизить ограничения на расположение подлежащего обнаружению штрих-кода на подлежащем обработке изображении.
Вышеупомянутое вычисление дискретного преобразования Радона для множества дискретных линий и для заданного наклона в отфильтрованном массиве изображения может, среди прочего, быть вычислено для числа N смещений дискретных линий, которые являются ближайшими к центру массива изображения, где N - целое число и размер массива изображения.
Это можно быть выполнено для каждого угла или наклона дискретных линий в отфильтрованном массиве изображения.
Неожиданно было обнаружено, что вычисления дискретного преобразования Радона в отношении только указанных N центральных смещений достаточно для надежного и точного обнаружения и определения местоположения штрих-кода на подлежащем обработке изображении. Например, до сих пор предполагалось, что необходимо вычислять по меньшей мере 2N-1 смещений дискретных линий при каждом наклоне или угле, чтобы получить оценку местоположения штрих-кода.
Представленный в данном документе способ не только более эффективен, чем вычисление всевозможных смещений и наклонов дискретных линий на подлежащем обработке изображении, но и также облегчает вычисление или идентификацию смещений, поскольку указанные смещения могут быть определены относительно фиксированной центральной точки подлежащего обработке изображения.
Для дальнейшего упрощения и ускорения вышеупомянутой и описанной в данном документе обработки изображения с целью обнаружения присутствующего на нем штрих-кода, если подлежащее обработке цифровое изображение еще не имеет квадратной формы, это цифровое изображение может быть изменено в размере для получения квадратного изображения, т.е. массива изображения размером N×N, где N - целое число.
В частности, подлежащее обработке изображение может быть изменено в размере, например, путем вырезания, заполнения нулями или интерполяции, для получения массива изображения размером N×N, где N=2n, и n - целое число больше 1.
Это, среди прочего, может повысить эффективность обработки изображения, поскольку изображение может быть разделено пополам или даже на другие части, число которых кратно двум, чтобы обработка изображения, например, вычисление преобразования Радона, могла выполняться параллельно для разных половин или частей изображения.
Кроме того, дискретное преобразование Радона в отношении отфильтрованного массива изображения может выполняться для четырех квадрантов, причем квадрант может задавать конкретный диапазон наклонов или углов дискретных линий в отфильтрованном массиве изображения, для которых должно быть вычислено дискретное преобразование Радона.
Например, первый квадрант может охватывать наклоны дискретных линий от 0° до 45°, второй квадрант может охватывать наклоны дискретных линий от 45° до 90°, третий квадрант может охватывать наклоны дискретных линий от -90° до -45°, и четвертый квадрант может охватывать наклоны дискретных линий от -45° до 0°.
Кроме того, повернутая и транспонированная копия вычисленного преобразования Радона первого квадранта может задавать пятый квадрант, который может быть присоединен к четвертому квадранту и первому квадранту.
Введение пятого квадранта, который может соединять четвертый квадрант и первый квадрант в полосе Мебиуса или аналогично полосе Мебиуса, может помочь избежать пограничных эффектов, которые могут препятствовать обнаружению и локализации штрих-кода, расположенного близко или на границе подлежащего обработке изображения.
Как упоминалось ранее, описанный в данном документе способ более эффективен, чем существующие способы вычисления дискретного преобразования Радона для обнаружения и локализации штрих-кода на изображении.
Например, дискретное преобразование Радона в отношении отфильтрованного массива изображения может выполняться для каждого столбца или столбца данных отфильтрованного массива изображения. Это может, среди прочего, обеспечить более эффективное управление памятью процессора компьютера, и при этом, например, отдельные буферы памяти могут быть назначены для вычисления нечетных и четных столбцов преобразования Радона в отношении отфильтрованного массива изображения.
Например, если для подлежащего вычислению квадранта вычисляются только N центральных смещений каждого из N углов дискретных линий на подлежащем обработке изображении, то на каждой промежуточной стадии дискретного преобразования Радона требуется только вычислить N×N значений, которые распределены в виде N полос или столбцов данных с N значениями.
Например, в первом квадранте, охватывающем наклоны s или углы дискретных линий от 0° до 45°, можно рассматривать только центральную часть смещений d, которые изменяются в пределах от до - N, если принять верхнее или максимальное значение d равным 2N.
В частности, вычислительная взаимосвязь между полосами данных или столбцами данных может быть, например, выражена и использована следующим образом.
Рассмотрим данные на конкретной стадии m+1, которые будут вычисляться на основе данных с предыдущей стадии m, где m - целое число в диапазоне от 0 до n-1, причем n - целое число, такое, что n=log2 N).
Далее рассмотрим два последовательных столбца данных или две последовательные полосы данных в двумерной (d, s)-области с четными индексами S и нечетными индексами S+1, принадлежащей стадии m+1.
Для вычисления желаемых N значений каждого из этих столбцов можно сложить вместе две полосы длиной N входящих столбцов с индексами S0 и S1. Здесь начальная точка по оси d добавляемых столбцов может зависеть от значений
Индекс S стадии m+1 может быть затем, например, подразделен согласно двоичному выражению следующим образом:
Тогда индексы стадии m можно выразить как
S0=σ+ν<<(m+1) и S1=S0+1<<m.
Чтобы вычислить начальную точку полос или столбцов на другой оси d, можно задать
Используя это значение, можно вычислить:
В этих формулах и являются, соответственно, операторами округления до следующего большего и меньшего целого значения, символ << относится к двоичному сдвигу, а символ < сравнение «меньше чем», оцениваемое относительно 0 или 1.
Другими словами, в предложенном в данном документе способе два столбца данных на заданной стадии могут быть суммированы вместе, и результат указанного суммирования может быть депонирован или сохранен в том месте или позиции в памяти, в которую может потребоваться или потребуется обращаться при вычислении столбца на другой более поздней стадии.
Более того, на каждом этапе вычисления два буфера памяти могут хранить данные из стадии т и данные из стадии m+1.
Нижеследующий псевдокод представляет собой примерную реализацию алгоритма, содержащего предыдущие этапы, и данный пример показывает, как заданные значения S, S0, S1, и ΔS1 соотносят данные в столбцах на двух последовательных стадиях S и S1, при этом:
N данных в столбце S по убыванию от значения индекса строки являются результатом суммирования N данных в столбце S0 по убыванию от значения индекса строки и N данных в столбце S1 по убыванию от значения индекса строки.
N данных в столбце S+1 по убыванию от значения индекса строки являются результатом суммирования N данных в столбце S0 по убыванию от значения индекса строки и N данных в столбце S1 по убыванию от значения индекса строки.
Алгоритм 1. Вычисление N центральных смещений дискретного преобразовани Радона для квадранта
Входные данные: Изображение f(x, у), состоящее из N х N данных Выходные данные: Центральное преобразование Радона в отношении f, состоящее из N×N данных
Однако, в зависимости от структуры памяти компьютера, который выполняет описанный в данном документе способ, может использоваться версия алгоритма с центрированием по строкам.
Как указано выше, в выходных данных, генерируемых путем вычисления дискретного преобразования Радона в отношении отфильтрованного массива изображения, изображения штрих-кода генерируют/преобразуются в специальные шаблоны в пространстве или области параметров (d, s), т.е. в область смещений/точек пересечения и наклонов/углов, обнаружение которой может быть выполнено значительно проще, чем обнаружение штрих-кода в исходной области, т.е. на исходном изображении или в исходных координатах изображения.
В частности, например, указанные шаблоны могут содержать границы или вершинные точки, которые могут быть обнаружены в выходных данных, сгенерированных путем вычисления дискретного преобразования Радона в отношении отфильтрованного массива изображения. Указанные границы или вершинные точки содержат информацию, которая может устанавливать местоположение штрих-кода, присутствующего на подлежащем обработке цифровом изображении.
В частности, например, указанный шаблон может иметь четырехугольную форму, например, ромбовидную форму.
Точнее говоря, обнаруженные границы или вершинные точки шаблона в выходных данных преобразования Радона могут быть преобразованы обратно в дискретные линии в массиве изображения для установления местоположения штрих-кода, присутствующего на цифровом изображении.
Таким образом, например, обнаружение вершинных точек шаблона может быть основано на их значениях интенсивности и дисперсии выходных данных дискретного преобразования Радона.
В качестве дополнения или альтернативы обнаружение вершинных точек шаблона, например, шаблона с четырехугольной или ромбовидной формой, может быть выполнено с помощью нейронной сети, которая была обучена обнаружению указанных вершинных точек.
Таким образом, установление местоположения штрих-кода, присутствующего на цифровом изображении, может, среди прочего, содержать усреднение вертикального индекса обнаруженной верхней вершинной точки и обнаруженной нижней вершинной точки в обнаруженном шаблоне. Это позволяет определять наклон или угол штрих-кода на подлежащем обработке изображении.
Установление местоположения штрих-кода, присутствующего на цифровом изображении, может дополнительно содержать вычисление разности горизонтального индекса двух обнаруженных боковых вершинных точек, например левой и правой вершинных точек, обнаруженного шаблона.
Кроме того, преобразование обнаруженных вершинных точек обратно в дискретные линии в массиве изображения может содержать преобразование двух обнаруженных боковых вершинных точек, например левой и правой вершинных точек и/или верхней и нижней вершинных точек, или любой другой комбинации вершинных точек, в параметры двух дискретных линий в массиве изображения, а также вычисление точки пересечения указанных двух дискретных линий.
Указанная точка пересечения, например, может определять положение центра штрих-кода на подлежащем обработке изображении.
Например, преобразование обнаруженных вершинных точек из пространства Радона с параметрами d и s в выходных данных дискретного преобразования Радона, вычисленного в отношении отфильтрованного массива изображения, в пространство с параметрами х и у линий на изображении может содержать, например, для квадранта от 0° до 45°, вычисление соотношения у=d+s/(N-1)⋅х.
Для квадранта от 4° до 90° это соотношение может быть выражено как: х=-d+(N-1-s)/(N-1)⋅у.
Для квадранта от -45° до 0° это соотношение может быть выражено как: х=d-s/(N-1)⋅у.
Для квадранта от -90° до -45° это соотношение может быть выражено как: у=d+(s-N+1)/(N-1)⋅х.
Примерный способ обнаружения штрих-кодов на цифровом изображении, представленном в виде двумерного массива цифрового изображения, может содержать один, несколько или все из нижеследующих примерных этапов.
Захват изображения с помощью камеры интеллектуального мобильного устройства, при необходимости квадратной области в центре или изображения с любым соотношением сторон;
При необходимости изменение размера изображения таким образом, чтобы оно стало квадратным изображением с размером N×N, например, с размером N=512 или N=1024 (в зависимости от вычислительной мощности устройства);
Вычисление модуля градиентов канала яркости (квадратного) изображения;
Вычисление дискретного преобразования Радона в отношении вычисленного (вычесленных) градиента (градиентов) для четырех квадрантов, при этом вычисляются только N центральных смещений для каждого угла или наклона дискретной линии на изображении;
Присоединение вертикально и горизонтально отраженной версии первого квадранта справа от 4-го квадранта для получения 5-ти квадрантной версии дискретного преобразования Радона для N центральных смещений (DRTN);
Локализация наиболее значимого ромба в 5-ти квадрантной версии (DRTN), например, на основе его более высокого среднего значения и меньшей относительной дисперсии, например, посредством:
Локального анализа среднего значения и дисперсии неперекрывающихся участков 5-ти квадрантной версии DRTN;
Упорядочивания участков согласно этой мере и выбора только самых больших из них, группирования их, если они смежные, и извлечения вершин получившегося ромба;
и/или посредством
Передачи пяти квадрантной версии DRTN в нейронную сеть, которая была заранее обучена распознавать вершины ромбов в тысячах примерных пар изображений, содержащих штрих-коды в качестве входных данных, и положение ромбов в DRTN их градиентов в качестве выходных данных;
Усреднение индекса s верхней и нижней вершин ромба, т.е. наклона штрих-кода в пространстве квадратного изображения;
Нахождение разности на оси d между верхней и нижней вершинами, т.е. показателя высоты штрих-кода в пространстве квадратного изображения;
Преобразование координат левой и правой вершин ромба в параметры линий в пространстве квадратного изображения и вычисление точки пересечения между этими двумя линиями, т.е. приблизительного центра штрих-кода в пространстве квадратного изображения;
Если изображение с камеры было изменено в размере и/или растянуто на вышеописанных необязательных этапах, преобразование всех ранее вычисленных показателей и условий местоположения штрих-кода, которое в данном случае относится к координатам квадратного изображения, в координаты исходного изображения;
Использование полученных координат высоты, наклона и центра штрих-кода в координатах исходного изображения с помощью программного обеспечения декодера штрих-кода, которое анализирует одну линию, проходящую через центр обнаруженного и локализованного штрих-кода, или которое анализирует набор из нескольких линий, которые пересекают штрих-код в продольном направлении вокруг его центра.
Описанные в данном документе способ и этапы способа могут быть выполнены с помощью компьютерной системы, т.е. примерная компьютерная система может быть выполнена с возможностью осуществления способа согласно любому из предыдущих этапов способа.
Указанная примерная компьютерная система может содержать, например, интеллектуальное устройство, например, интеллектуальное мобильное устройство с камерой.
Кроме того, на одном или более машиночитаемых носителях данных могут храниться инструкции, которые при исполнении одним или более процессорами вычислительной системы могут предписывать одному или более процессорам осуществлять описанный в данном документе способ или этапы способа обнаружения штрих-кодов на цифровом изображении.
На указанных ниже фигурах показаны примерные аспекты для лучшего понимания настоящего изобретения.
На ФИГ. 1a показана примерная дискретная линия с четным подъемом.
на ФИГ. 1b показана примерная дискретная линия с нечетным подъемом.
На ФИГ. 1с показаны примерные дискретные линии для примерного массива изображения с размером 8×8.
На ФИГ. 2а показано примерное дискретное преобразование Радона для первого квадранта.
На ФИГ. 2b показаны примерные четыре квадранта дискретного преобразования Радона.
На ФИГ. 3а показаны примерные дискретные линии/проекции и их суммарные вклады для наклона или подъема=0.
На ФИГ. 3b показаны примерные дискретные линии/проекции и их суммарные вклады для наклона или подъема = N-1.
На ФИГ. 3с показаны примерные вклады набора пикселей, участвующих в вычислении классического традиционного преобразования Радона для первых двух квадрантов.
На ФИГ. 3d показаны примерные вклады набора пикселей, участвующих в вычислении дискретного преобразования Радона для N центральных смещений (DRTN) для первых двух квадрантов.
На ФИГ. 4 показаны примерные шаблоны памяти или позиции в памяти для разных стадий вычисления дискретного преобразования Радона.
На ФИГ. 5 показана примерная схема вычисления для столбцов данных или полос данных.
На ФИГ. 6 показан пример установления местоположения штрих-кода, содержащегося на изображении.
На ФИГ. 1а, ФИГ. 1b и ФИГ. 1с в качестве примера показаны некоторые аспекты дискретных линий 103, 104 в подлежащем обработке массиве изображения или на подлежащем обработке изображении 100, 105, в отношении которого может быть вычислено описанное в данном документе дискретное преобразование Радона.
Например, изображение или массив 100 изображения на ФИГ. 1а и ФИГ. 1b может иметь размер N , причем N=2n и n - целое число больше 1, при этом каждая точка массива изображения может быть идентифицирована с помощью примерной пары индексов (i, j) с 0 ≤i, j<N, причем i, j - целые числа.
Указанное индексирование является лишь примером, и, среди прочего, возможно использование других схем индексирования, например, в которых индексы начинаются с 1 вместо 0.
Указанное примерное изображение или массив изображения или область 100 изображения может быть разделена по одной оси, например, горизонтальной оси, на две половины 101, 102 с шириной N/2, причем, например, первая половина 101 имеет ширину от 0 до N/2-1, а вторая половина - ширину от N/2 до N-1.
Примерная показанная дискретная линия 103 может быть задана в зависимости отточки d пересечения и наклона или роста s, где d и s могут быть целыми числами со знаком.
Указанная примерная дискретная линия 103 на ФИГ. 1а в качестве примера содержит четное число шагов подъема и в качестве примера соединяет точки (0, d) и (N-1, d+s) массива, причем первая половина подъема или роста дискретной линии 103 происходит в первой половине 101 массива 100 изображения, а вторая половина подъема или роста дискретной линии 103 происходит во второй половине 102 массива 100 изображения.
Ссылочные позиции 108, 109 в качестве примера обозначают начальную и конечную точки дискретной линии 103.
Примерная дискретная линия 104 на ФИГ. 1b в качестве примера содержит нечетное число шагов подъема и в качестве пример соединяет точки (0, d) и (N-1, d+2(floor(s/2))+1) массива, при этом четное число шагов подъема или роста дискретной линии 104 происходит в первой половине 101 массива 100 изображения, причем указанное четное число составляет ((число шагов подъема)/2), где floor является функцией округления до ближайшего целого в меньшую сторону, при этом оставшееся число шагов подъема или роста дискретной линии 104 происходит во второй половине 102 массива 100 изображения.
Ссылочные позиции 110, 111 в качестве примера обозначают начальную и конечную точки дискретной линии 104.
На ФИГ. 1с в качестве примера показан конкретный пример для двух дискретных линий 106, 107 в массиве 105 изображения с N=8.
В данном случае примерная дискретная линия 106 соединяет точки (0, 4) и (7, 6) массива изображения, т.е. линия 106 возрастает на два шага подъема, причем первый шаг подъема выполняется в первой половине изображения или первой области изображения, а второй шаг подъема выполняется во второй половине изображения или второй области изображения.
Примерная дискретная линия 107 соединяет точки (0, -1) и (7, 4) области изображения, т.е. линия 176 возрастает на 5 шагов подъема, причем первые два шага подъема выполняются в первой области изображения, два других шага подъема выполняются во второй половине изображения или во второй области изображения, и оставшийся шаг подъема выполняется между двумя половинами.
Для полноты картины следует отметить, что начальные (или конечные) точки дискретных линий, пересекающих подлежащий обработке массив изображения, могут находиться за пределами массива изображения, т.е. вне точек массива изображения или индексов массива изображения.
На ФИГ. 2а показано примерное дискретное преобразование Радона для первого квадранта 204 для подлежащего обработке изображения или подлежащего обработке массива 200 изображения с размером N2=N×N, причем N=2n, n - целое число больше 1, и N - натуральное число.
Примерный массив 200 изображения может, например, быть описан в (х, у)-плоскости 201 и может содержать N×N точек массива изображения, которые могут быть идентифицированы с помощью примерной пары (i, j) индексов с 0≤i, j<N, причем i, j - целые числа.
Например, левый нижний угол изображения или массива 200 изображения совпадает с началом координат (х, у)-плоскости 201, т.е. с точкой (0, 0) массива изображения.
Область, в которой описаны дискретные линии, в которых может выполняться дискретное преобразование Радона в отношении изображения 200, может быть параметризована, например, в области параметров пересечения или смещения d и угла или наклона s.
В качестве примера показана дискретная линия 202, для которой может быть вычислено дискретное преобразование Радона.
Указанная примерная дискретная линия 202 пересекает или контактирует только с одной точкой подлежащего обработке изображения или подлежащего обработке массива 200 изображения, и указанная примерная дискретная линия 202 может быть, например, описана как начинающаяся с точки пересечения или смещения d=-N+1 и возрастающая с наклоном s=N, т.е. возрастающая на N шагов.
Фактически для смещения d=-N+1 единственной ненулевой суммой дискретного преобразования Радона в первом квадранте будет та, которая возрастает на N шагов или позиций, т.е. дискретная линия 202. С увеличением смещения до смещения d=-1 число ненулевых подъемов неуклонно растет, а затем от смещения d=0 до d=N-1 и для всевозможных подъемов суммы не равны нулю.
В качестве дополнительного примера показана дискретная линия 210, которая для примера совпадает с нижней границей или нижней строкой изображения 200 и может быть описана как начинающаяся от точки пересечения или смещения d=0 и растущая или возрастающая на N шагов с наклоном s=0, т.е. по горизонтали.
Применение примерного дискретного преобразования Радона, обозначенного цифрой 203, для множества дискретных линий на изображении 200 генерирует выходные данные 204 в области или пространстве области, описанной в (d, s)-плоскости 208, т.е. в области, параметризованной точкой пересечения или смещением d и углом или наклоном s.
В частности, показанные примерные вычисленные выходные данные 204 могут быть сгенерированы путем выполнения дискретного преобразования Радона для набора дискретных линий, содержащих 2N смещений с наклонами от 0° до 45°, т.е. в диапазоне наклонов дискретных линий в первом квадранте.
Указанные выходные данные 204 имеют размер N2+N(N-1)/2 и форму, показанную в качестве примера.
Указанные выходные данные 204 также могут называться вычисленным преобразованием Радона для квадранта, а точнее вычисленным преобразованием Радона для первого квадранта.
На ФИГ. 2b в качестве примера показана форма всех четырех квадрантов 204, 205, 206, 207, которые должны быть вычислены в области Радона или в пространстве 209 области Радона, чтобы получить полное глобальное дискретное преобразование Радона в отношении подлежащего обработке изображения 200.
Для полноты картины следует отметить, что горизонтальная ось на ФИГ. 2b параметризована углом atan(s/(N-1)). Однако, ее можно также параметризовать просто с помощью наклона s.
Как упоминалось выше, квадрант может задавать конкретный диапазон наклонов или углов дискретных линий в отфильтрованном массиве изображения, для которого должно быть вычислено дискретное преобразование Радона.
Например, первый квадрант 204 может охватывать наклоны или углы дискретных линий от 0° до 45° (от 0 до π/4), второй квадрант 205 может охватывать наклоны дискретных линий от 45° до 90° (от π/4 до π/2), третий квадрант 206 может охватывать наклоны дискретных линий от -90° до -45° (от - π/2 до π/4), а четвертый квадрант 207 может охватывать наклоны дискретных линий от -45° до 0° (от π/4 до -0).
На ФИГ. 3а в качестве примера показано подлежащее обработке изображение или подлежащий обработке массив 300 изображения, имеющий размер N2=N×N, причем N=8, т.е. изображение содержит 8×8 пикселей.
На этой фигуре также показан примерный набор проекций или набор дискретных линий 301 с углом или наклоном s=0, но с 2N разными точками пересечения или смещениями d, в отношении которых может быть выполнено преобразование Радона.
В данном случае ссылочная позиция 302 обозначает набор примерных бинов, которые подсчитывают для каждой данной дискретной линии 301 или для каждой данной проекции число пикселей 305 изображения, которые будут вносить вклад в член суммирования в преобразовании Радона для указанной заданной дискретной линии или проекции.
В показанном примерном случае для любой проекции или дискретной линии 301, которая пересекает или проходит через изображение 300, число пикселей 305 изображения, вносящих вклад в член суммирования в преобразовании Радона для такой проекции или дискретной линии, будет равно 8.
На ФИГ. 3b в качестве примера снова показано изображение или массив 300 изображения по ФИГ. 3а, но в качестве примера также показан примерный набор проекций или набор дискретных линий 303 с углом или наклоном, отличным от показанного на ФИГ. 3а, а именно с углом 45° (или atan(s/(N-1))=π/4) или наклоном s=N-1.
Снова показаны 2N разных точек пересечения или смещений d для указанного угла или наклона, в отношении которых может выполняться преобразование Радона.
По аналогии с ФИГ. 3а ссылочная позиция 304 обозначает набор примерных бинов, которые подсчитывают для каждой заданной дискретной строки 303 или для каждой заданной проекции число пикселей 305 изображения, которые будут вносить вклад в член суммирования в преобразовании Радона для указанной заданной дискретной линии или заданной проекции.
Однако, в отличие от случая, показанного на ФИГ. 3а, изменено число пикселей 305 изображения, вносящих вклад в член суммирования в преобразовании Радона вдоль проекций или дискретных линий 303, которые пересекают или проходят через изображение 300.
Например, в то время как для проекции или дискретной линии 306, т.е. при s=N-1 и d=0, число пикселей 305 изображения, которые будут вносить вклад в член суммирования в преобразовании Радона, будет равно 8, число вносящих такой вклад пикселей 305 изображения для любого другого смещения, т.е. для любой другой проекции или дискретной линии 302, будет меньше 8.
На ФИГ. 3с в качестве примера схематично показано, среди прочего, в (d, s)-области 313 число пикселей, участвующих в вычислении для каждого значения двух центральных квадрантов 307, 308 обычного или классического преобразования Радона, выполняемого для примерного изображения или массива 300 изображения с размером 8×8 по ФИГ. 3а или ФИГ. 3b, при этом контуры 311, 312 в качестве примера обозначают вычисления или значения преобразования Радона, которые не равны нулю, или обозначают число пикселей, вносящих вклад в члены суммирования в преобразовании Радона, которые не равны нулю.
В отличие от уровня техники, настоящее изобретение позволяет более эффективно вычислять (дискретное) преобразование Радона для каждого квадранта, так что для каждой заданной дискретной линии с заданным наклоном дискретное преобразование Радона вычисляется только для набора смещений, в два раза меньшего, чем размер массива изображения.
В частности, настоящее изобретение позволяет вычислять дискретное преобразование Радона для N центральных смещений (DRTN) заданной дискретной линии с заданным наклоном.
Например, число вносящих вклад пикселей для N центральных смещений (DRTN) заданной дискретной линии с заданным наклоном для двух показанных примерных квадрантов 307, 308 отмечено контурами 309 и 310.
На ФИГ. 3d в качестве примера показано только число вносящих вклад пикселей 309, 310 для N центральных смещений (DRTN) заданной дискретной линии с заданным наклоном для двух показанных примерных квадрантов 307, 308 в переупорядоченном виде, тем самым в качестве примера иллюстрируя примерный преимущественный эффект настоящего изобретения, заключающийся в том, что количество или масштаб вычислений, или требуемых ячеек памяти в (d, s)-области для квадранта уменьшено с 2N×N до N×N.
Другими словами, настоящее изобретение может обеспечивать значительную экономию памяти и снижение требований к вычислениям.
На ФИГ. 4 в качестве примера схематично показаны шаблоны или позиции 400, 401, 402, 403, 404 памяти данных в области 405 углов или наклонов s и точек пересечений или смещений d для различных стадий m (где m - целое число в диапазоне от 0 до n, например, n является целым числом n=4) вычисления дискретного преобразования Радона в отношении подлежащего обработке изображения или массива изображения, например, массива изображения N×N, причем N=16=2n=24.
В данном случае термин «стадия m» в целом может, среди прочего, пониматься как этап вычисления(ий) дискретного преобразования Радона в отношении подлежащего обработке изображения или массива изображения, причем стадия m=0, например, 400, является начальным этапом, когда еще не вычислен член суммирования для дискретного преобразования Радона, а последняя стадия, например, стадия 404 с m=n, где n - целое число, такое, что n=log2(N), является этапом, на котором были выполнены все этапы вычисления дискретного преобразования Радона. Любые промежуточные стадии, например, 401, 402, 403, могут затем относиться к стадиям, на которых была выполнена только часть требуемых этапов вычисления дискретного преобразования Радона, т.е. к стадиям, на которых дискретное преобразование Радона было вычислено только частично.
В данном случае шаблон 400 памяти, в качестве примера характеризующий начальную стадию или стадию ввода с m=0, среди прочего, следует понимать как пространство памяти или позиция в памяти в компьютерной системе, зарезервированная для запоминания или хранения значений вычислений, которые должны выполняться во время вычисления дискретного преобразования Радона для подлежащего обработке входного изображения или массива изображения.
Для обычного дискретного преобразования Радона с массивом изображения N×N в качестве входных данных размер шаблона памяти или позиций в памяти данных будет по меньшей мере иметь размер N в угловых или наклонных позициях s (на горизонтальной оси) и размер 2N в точках пересечения или смещениях d (на вертикальной оси), при этом, например, на первой стадии нижняя половина 406 (отмеченная заштрихованным серым цветом заливки) шаблона памяти может быть заполнена нулями, а другая половина 407 (без заливки/с белым цветом), например, верхняя половина, может быть, например, заполнена значениями интенсивностей пикселя подлежащего обработке изображения или подлежащего обработке массива изображения, например, с размером N×N.
Однако, вместо того чтобы требовать полного пространства памяти размером N×2N, настоящее изобретение позволяет использовать уменьшенное пространство памяти или позволяет более эффективно использовать пространство памяти.
В показанном примере белые пиксели или белые области могут, среди прочего, пониматься как обозначающие позицию или позиции в пространстве 405 (d, s)-области, которые необходимо вычислить, например, согласно описанному в данном документе способу.
Серые/заштрихованные пиксели или серые/заштрихованные области могут, среди прочего, пониматься как обозначающие те позиции в пространстве 405 (d, s)-области, которые должны быть вычислены с помощью обычных методов дискретного преобразования Радона, но которых можно избежать с помощью предложенного в данном документе способа.
Как видно из ФИГ. 4, столбцы или полосы данных, подлежащие вычислению, могут, таким образом, постепенно перемещаться вниз.
Как обсуждалось выше, вычислительная взаимосвязь между полосами данных или столбцами данных может быть обеспечена за счет того, что данные на конкретной стадии m+1 могут быть вычислены из данных с предыдущей стадии m, где m - целое число в диапазоне от 0 до n-1, и n -целое число, такое, что n=log2(N).
В частности, например, в дискретном преобразовании Радона с N центральными смещениями (DRTN) две полосы данных или два столбца данных с длиной N на одной стадии, например, полосы данных или столбцы данных с четными и нечетными номерами, могут быть сложены вместе для получения полосы данных или столбца данных следующей стадии.
Другими словами, на каждой стадии требуется только вычислить N значений для каждого столбца данных или полосы данных.
Примерная полоса данных или столбец данных с длиной (по вертикали) N на промежуточной стадии 403, например с m=3, в качестве примера обозначена ссылочной позицией 408.
При реализации для n стадий эта примерная схема вычисления на основе столбца данных или полосы данных дискретного преобразования Радона с N центральными смещениями (DRTN) может затем сходиться на последней стадии 404 к шаблону памяти или области памяти, или объему памяти, обозначенному ссылочной позицией 409, который имеет размер входного изображения или массива изображения, например, с размером N×N. Этот примерный объем 409 памяти соответствует части данных или вычислений данных, которые считаются достаточными, и он аналогичен частям 309 или 310 данных, которые показаны в уточненном виде на ФИГ. 3d, хотя и для случая N=8.
Для сравнения обычная схема вычисления дискретного преобразования Радона привела бы к большему шаблону памяти или области памяти, или объему памяти, обозначенному ссылочной позицией 410.
Вопреки ожиданиям, с удивлением было обнаружено, что, хотя все эти серые/заштрихованные пиксели в указанном объеме 410 памяти могут содержать информацию, отличную от нуля, эту информацию можно без потерь игнорировать, поскольку было обнаружено, что вес или значимость этой информации незначительна по сравнению с информацией (суммами, отличными от нуля), содержащейся в белом пикселе, т.е. в области или объеме 409 памяти, полученном в результате дискретного преобразования Радона с N центральными смещениями (DRTN).
На ФИГ. 5 в качестве примера показана схема вычисления, функционирующая при примерной точке пересечения или примерном смещении d и при угле или наклоне s в пространстве 502 (d, s)-области для примерных столбцов данных или полос данных S0, S1, S и S+1, обозначенных ссылочными позициями 503, 504, 505 и 506 на двух примерных последовательных стадиях m и m+1, обозначенных ссылочными позициями 500 и 501.
Как указывалось ранее, в предложенном в данном документе способе вычисление столбцов данных или полос данных на заданной стадии вычисления дискретного преобразования Радона может использовать вычисление столбцов данных или полос данных из предыдущей стадии.
Например, при этом способе данные на примерной стадии m+1 могут быть вычислены из данных с предыдущей стадии m, где m - целое число в диапазоне от 0 до n-1, причем n - целое число, такое, что n=log2(N), и N -целочисленный размер подлежащего обработке изображения или массива изображения, например, массива изображения N×N.
Примерные два последовательных столбца данных или полосы данных в двумерной (d, s)-области 502 с четными индексами S и нечетными индексами S+1, как упоминалось, принадлежат стадии m+1.
Чтобы вычислить желаемые N значений каждого из этих столбцов, можно сложить вместе две полосы длиной N, получающиеся из столбцов с индексами S0 и S1. Здесь начальная точка по оси d добавляемых столбцов может зависеть от значений и ΔS1, обозначенных ссылочными позициями 507, 508 и 509.
Как отмечалось ранее, в данном документе, например, N данных в столбце S по убыванию от значения индекса строки являются результатом суммирования N данных в столбце S0 по убыванию от значения индекса строки и N данных в столбце S1 по убыванию от значения индекса строки. На ФИГ. 5 эти области или полосы 510, 511, 512 в качестве примера обозначены прямоугольниками с прямыми углами и со сплошными линиями.
С другой стороны, для столбцов в нечетных позициях достигаемая взаимосвязь состоит в том, что N данных в столбце S+1 по убыванию от значения индекса строки являются результатом суммирования N данных в столбце S0 по убыванию от значения индекса строки и N данных в столбце S1 по убыванию от значения индекса строки. На ФИГ. 5 эти области или полосы 513, 514, 515 обозначены прямоугольниками с закругленными углами и с пунктирными линиями.
В данном случае префикс «top» в качестве примера обозначает максимальный вертикальный индекс или размер временных буферов, используемых для хранения промежуточных результатов. Этот индекс можно, например, снизить до 3N/2, что является улучшением по сравнению с современными способами, требующими больших индексов.
Другими словами, в предложенном в данном документе способе два столбца данных на заданной стадии могут быть суммированы вместе, и результат указанного суммирования может быть депонирован или сохранен в том месте или позиции в памяти, в которое может потребоваться или потребуется обращаться при вычислении столбца на другой более поздней стадии.
На ФИГ. 6 показан пример установления местоположения штрих-кода 612, содержащегося на изображении 601, например, изображении, захваченном цифровой камерой, встроенной в мобильное устройство, например, смартфон.
В показанном примерном изображении 601 или массиве изображения (х, у)-плоскость области 615 массива изображения содержит, среди прочего, этикетку или ярлык 614 изделия, например, ценник, с линейным одномерным штрих-кодом 612.
Перед применением дискретного преобразования Радона с N центральными смещениями (DRTN) к указанному изображению можно применить фильтр к массиву изображения, который, как указывалось ранее, может, среди прочего, облегчить анализ выходных данных дискретного преобразования Радона с N центральными смещениями (DRTN), которое применяется к изображению 601, а точнее к отфильтрованной версии (не показана) изображения 601.
Слева показаны возможные примерные выходные данные 600 примерного дискретного преобразования Радона с N центральными смещениями (DRTN), примененного к изображению 601 или примененного к отфильтрованной версии (не показана) изображения. Эти выходные данные описываются в (d, s)-области или пространстве 607 (d, s)-области, где d является (вертикальным) смещением или точкой пересечения, a s является углом или наклоном.
Как упомянуто выше, описанное в данном документе дискретное преобразование Радона может генерировать определенные или специальные шаблоны в (d, s)-области или пространстве 607 (d, s)-области, из которых может быть получено или определено местоположение штрих-кода 612, содержащегося на изображении 601.
Здесь показан примерный шаблон 606 в форме четырехугольника, например, ромба, который содержит четыре вершинные точки 602, 603, 604, 605, которые можно легко обнаружить, как описано ранее, и из которых могут быть получено местоположение границ штрих-кода 612 в (х, у)-плоскости области 615 массива изображения.
Говоря точнее, обнаруженные границы или вершинные точки шаблона в выходных данных преобразования Радона могут быть преобразованы обратно в дискретные линии в массиве изображения для установления местоположения штрих-кода, присутствующего на цифровом изображении.
Таким образом, установление местоположения штрих-кода 612, присутствующего на цифровом изображении 601, может, среди прочего, содержать усреднение вертикального индекса или точки пересечения, или наклона d обнаруженной верхней вершинной точки 604 и обнаруженной нижней вершинной точки 605 в обнаруженном шаблоне 606. Это позволяет определить наклон или угол штрих-кода на подлежащем обработке изображении 601.
Установление местоположения штрих-кода, присутствующего на цифровом изображении, может дополнительно содержать вычисление разности горизонтального индекса или наклона, или угла s двух обнаруженных боковых вершинных точек 602, 603, например левой 602 и правой 603 вершинных точек, в обнаруженном шаблоне 606.
Кроме того, преобразование обнаруженных вершинных точек обратно в дискретные линии в массиве изображения может содержать преобразование двух обнаруженных боковых вершинных точек 602, 603, например левой 602 и правой вершинных точек и/или верхней 604 и нижней 605 вершинных точек, или любой другой комбинации вершинных точек, в параметры дискретных линий в (х, у)-плоскости области 615 массива изображения для изображения 601.
Например, может быть вычислена точка 613 пересечения двух дискретных линий 608, 609, при этом указанные две дискретные линии 608, 609 получаются путем преобразования двух обнаруженных боковых вершинных точек 602, 603, например левой 602 и правой вершинных точек, в (х, у)-плоскости области 615 массива изображения для изображения 601.
Указанная точка 613 пересечения, например, может задавать положение центра штрих-кода на подлежащем обработке изображении 601.
Преобразование, например, обнаруженной верхней 604 и нижней 605 вершинных точек в (х, у)-плоскость области 615 массива изображения для изображения 601 может дать в результате линии 610 и 611, которые могут задавать ориентацию и высоту штрих-кода на изображении 601.
В частности, например, преобразование обнаруженных вершинных точек из пространства Радона с параметрами d и s в выходных данных дискретного преобразования Радона, вычисленного в отношении отфильтрованного массива изображения, в пространство с параметрами х и у линий на изображении может содержать, например, для первого квадранта, вычисление соотношения у=d+s/(N-1)х.
Другими словами, присутствие штрих-кода на изображении может создавать в DRTN-преобразовании его градиентов четырехугольную или ромбовидную зону или шаблон, который предстает как имеющий большее значение и при этом имеющий относительную дисперсию меньше, чем остальные любые другие зоны или шаблоны, возникающие из элементов изображения, не связанных со штрих-кодом.
Обычно достаточно простого локального детектора, основанного на этих двух характеристиках - среднем значении и относительной дисперсии, особенно в случае изолированных штрих-кодов 612, таких как показанные в данном документе.
Однако, когда области или не связанные со штрих-кодом элементы изображения с высокими частотами присутствуют рядом со штрих-кодом, удобно, чтобы четырехугольная или ромбовидная зона или шаблон 606 обнаруживался и локализовался нейронной сетью, обученной для этой цели.
В качестве примера показаны дополнительные шаблоны 616 артефактов, которые возникают из элементов изображения 600, таких как текст или символы 617, 618, которые не связаны с подлежащим обнаружению штрих-кодом 612. Их можно рассматривать как шум. Однако, как показано, четырехугольный, например ромбовидный, шаблон 606 имеет достаточно большой коэффициент отношения сигнал/шум, так что эти не связанные со штрих-кодом элементы не будут препятствовать обнаружению и локализации штрих-кода.
Далее следуют семь листов, на которых показаны ФИГ. 1а, ФИГ. 1b, ФИГ. 1с, ФИГ. 2а, ФИГ. 2b, ФИГ. 3а, ФИГ. 3b, ФИГ. 3с, ФИГ. 3d, ФИГ. 4, ФИГ. 5 и ФИГ. 6, при этом ссылочные позиции присвоены следующим образом:
100 - Примерное изображение/массив изображения
101 - Примерная (первая) половина изображения/массива изображения, разделенная по горизонтальной оси
102 - Примерная (вторая) половина изображения/массива изображения, разделенная по горизонтальной оси
103 - Примерная дискретная линия
104 - Примерная дискретная линия
105 - Примерное изображение/ массив изображения
106 - Примерная дискретная линия с четным подъемом/четным числом шагов подъема
107 - Примерная дискретная линия с нечетным подъемом/нечетным числом шагов подъема
108 - Примерная начальная точка
109 - Примерная конечная точка
110 - Примерная начальная точка
111 - Примерная конечная точка
200 - Примерное подлежащее обработке изображение или массив изображения
201 - Примерное начало координат (х, у)-плоскости области массива изображения
202 - Примерная дискретная линия
203 - Примерное преобразование Радона
204 - Примерные выходные данные преобразования Радона, примерный первый квадрант
205 - Примерный второй квадрант
206 - Примерный третий квадрант
207 - Примерный четвертый квадрант
208 - Примерное начало координат (d, s)-плоскости области Радона
209 - Примерное начало координат области Радона, в которой горизонтальная ось параметризована с помощью atan(s/(N-l))
300 - Примерное изображение или массив изображения
301 - Примерный набор проекций или набор дискретных линий
302 - Примерный набор примерных бинов, которые подсчитывают для каждой дискретной линии или для каждой проекции число пикселей изображения, которые будут вносить вклад в член суммирования в преобразовании Радона для указанной заданной проекции или линии
303 - Примерный набор проекций или набор дискретных линий
304 - Примерный набор примерных бинов, которые подсчитывают для каждой дискретной линии или для каждой проекции число пикселей изображения, которые будут вносить вклад в член суммирования в преобразовании Радона для указанной заданной проекции или линии
305 - Примерный пиксель изображения
306 - Примерная проекция/примерные дискретные линии
307 - Примерный (первый) квадрант
308 - Примерный (второй) квадрант
309 - Примерный контур
310 - Примерный контур
311 - Примерный контур
312 - Примерный контур
313 - Примерная (d, s)-область или примерное пространство (d, s)-области, где d представляет собой (вертикальное) смещение или точку пересечения, a s является углом или наклоном
400 - Примерный шаблон памяти данных или позиции памяти данных на начальной стадии или стадии ввода
401 - Примерный шаблон памяти данных или позиции памяти данных для промежуточной стадии, например первой стадии
402 - Примерный шаблон памяти данных или позиции памяти данных для промежуточной стадии, например второй стадии
403 - Примерный шаблон памяти данных или позиции памяти данных для промежуточной стадии, например третьей стадии
404 - Примерный шаблон памяти данных или позиции памяти данных для примерной заключительной стадии, например стадии вывода
405 - Примерная (d, s)-область или пространство (d, s)-области, где d представляет собой (вертикальное) смещение или точку пересечения, a s является углом или наклоном
406 - Примерная нижняя половина шаблона памяти на стадии ввода
407 - Примерная верхняя половина шаблона памяти на стадии ввода
408 - Примерная полоса данных или столбец данных с длиной (по вертикали) N
409 - Примерная область памяти на последней стадии в качестве выходных данных дискретного преобразования Радона с N центральными смещениями (DRTN)
410 - Примерная область памяти на последней стадии в качестве выходных данных обычного дискретного преобразования Радона
500 - Примерная стадия, например стадия m, вычисления дискретного преобразования Радона с N центральными смещениями (DRTN) в (d, s)-области или пространстве (d, s)-области, где d представляет собой (вертикальное) смещение или точку пересечения, a s является углом или наклоном
501 - Примерная стадия, например стадия m+1, вычисления дискретного преобразования Радона с N центральными смещениями (DRTN) в (d, s)-области или пространстве (d, s)-области, где d представляет собой (вертикальное) смещение или точку пересечения, a s является углом или наклоном.
502 - Примерная (d, s)-область или примерное пространство (d, s)-области, где d представляет собой (вертикальное) смещение или точку пересечения, a s является углом или наклоном
503 - Примерный столбец данных или индекс S0
504 - Примерный столбец данных или индекс S1
505 - Примерный столбец данных или индекс S
506 - Примерный столбец данных или индекс S+1
507 - Примерное значение (вертикальных) смещений по оси d
508 - Примерное значение (вертикальных) смещений по оси d
509 - Примерное значение (вертикальных) смещений по оси d
510 - Примерная полоса данных
511 - Примерная полоса данных
512 - Примерная полоса данных
513 - Примерная полоса данных
514 - Примерная полоса данных
515 - Примерная полоса данных
516 - Примерная полоса данных
600 - Примерные выходные данные примерного дискретного преобразования Радона с N центральными смещениями (DRTN)
601 - Примерное изображение, например изображение, захваченное цифровой камерой, встроенной в мобильное устройство
602 - Примерная вершинная точка
603 - Примерная вершинная точка
604 - Примерная вершинная точка
605 - Примерная вершинная точка
606 - Примерный шаблон, например примерный четырехугольный, например ромбовидный шаблон
607 - Примерная (d, s)-область или примерное пространство (d, s)-области, где d представляет собой (вертикальное) смещение или точку пересечения, a s является углом или наклоном
608 - Примерная линия в (х, у)-плоскости области массива изображения, полученная из обнаруженной вершинной точки
609 - Примерная линия в (х, у)-плоскости области массива изображения, полученная из обнаруженной вершинной точки
610 - Примерная линия в (х, у)-плоскости области массива изображения, полученная из обнаруженной вершинной точки
611 - Примерная линия в (х, у)-плоскости области массива изображения, полученная из обнаруженной вершинной точки
612 - Примерный штрих-код
613 - Примерное центральное положение штрих-кода в (х, у)-плоскости области массива изображения
614 - Примерная этикетка
615 - Примерная (х, у)-плоскость изображения или области массива изображения
616 - Примерный шаблон артефакта, т.е. шаблон, возникающий из-за элементов изображения, не связанных со штрих-кодом
617 - Примерные элементы изображения, не связанные со штрих-кодом
618 - Примерные элементы изображения, не связанные со штрих-кодом
1. Реализуемый на компьютере способ обнаружения штрих-кодов на цифровом изображении, захваченном камерой и представленном в виде двумерного массива цифрового изображения, включающий:
применение фильтра к массиву изображения;
вычисление по меньшей мере одним процессором дискретного преобразования Радона отфильтрованного массива изображения, при этом дискретное преобразование Радона вычисляют для множества дискретных линий в указанном отфильтрованном массиве изображения;
причем для каждой заданной дискретной линии с заданным наклоном дискретное преобразование Радона вычисляют по меньшей мере одним процессором для набора разных смещений заданной дискретной линии, причем указанный набор смещений меньше, чем удвоенный размер массива изображения;
обнаружение по меньшей мере одним процессором вершинных точек шаблона в выходных данных дискретного преобразования Радона, вычисленного в отношении отфильтрованного массива изображения;
преобразование по меньшей мере одним процессором обнаруженных вершинных точек обратно в дискретные линии в массиве изображения для установления местоположения штрих-кода, присутствующего на цифровом изображении.
2. Способ по п. 1, в котором смещение для заданной дискретной линии с заданным наклоном характеризуется точкой пересечения, например точкой пересечения по вертикали.
3. Способ по одному из предыдущих пунктов, в котором фильтр представляет собой градиентный фильтр.
4. Способ по одному из предыдущих пунктов, в котором шаблон имеет четырехугольную форму, например ромбовидную форму.
5. Способ по одному из предыдущих пунктов, в котором дискретное преобразование Радона для заданного наклона вычисляют для набора из N смещений дискретных линий,
которые являются ближайшими к центру массива изображения, при этом N - целое число, которое является размером массива.
6. Способ по одному из предыдущих пунктов, в котором, если цифровое изображение не имеет квадратную форму, размер цифрового изображения изменяют для получения квадратного изображения, т.е. массива изображения с размером N×N, где N- целое число.
7. Способ по одному из предыдущих пунктов, в котором вычисление дискретного преобразования Радона в отношении отфильтрованного массива изображения выполняют для четырех квадрантов, при этом, например, первый квадрант охватывает наклоны дискретных линий от 0° до 45°, второй квадрант охватывает наклоны дискретных линий от 45° до 90°, третий квадрант охватывает наклоны дискретных линий от -90° до -45°, и четвертый квадрант охватывает наклоны дискретных линий от -45° до 0°, и при этом повернутая и транспонированная копия вычисленного преобразования Радона для первого квадранта, которая задает пятый квадрант, присоединяют к четвертому квадранту.
8. Способ по одному из предыдущих пунктов, в котором вычисление дискретного преобразования Радона в отношении отфильтрованного массива изображения выполняют для каждого столбца отфильтрованного массива изображения.
9. Способ по предыдущему пункту, в котором для вычисления нечетных и четных столбцов назначают отдельные буферы памяти.
10. Способ по одному из предыдущих пунктов, в котором обнаружение вершинных точек шаблона основано на их значениях интенсивности и дисперсии в выходных данных дискретного преобразования Радона, и/или в котором обнаружение вершинных точек обнаруженного шаблона, например четырехугольного, выполняют посредством нейронной сети.
11. Способ по одному из предыдущих пунктов, в котором установление местоположения штрих-кода, присутствующего на цифровом изображении, включает усреднение вертикального индекса обнаруженной верхней вершинной точки и обнаруженной нижней вершинной точки в обнаруженном шаблоне.
12. Способ по одному из предыдущих пунктов, в котором установление местоположения штрих-кода, присутствующего на цифровом изображении, включает вычисление разности горизонтальных индексов двух обнаруженных боковых вершинных точек, например левой и правой вершинных точек, в обнаруженном шаблоне.
13. Способ по одному из предыдущих пунктов, в котором преобразование обнаруженных вершинных точек обратно в дискретные линии в массиве изображения включает преобразование двух обнаруженных боковых вершинных точек, например левой и правой вершинных точек, в параметры двух дискретных линий в массиве изображения и вычисление точки пересечения указанных двух дискретных линий.
14. Компьютерная система, выполненная с возможностью осуществления способа по любому из предыдущих пунктов.
15. Компьютерная система по предыдущему пункту, при этом компьютерная система содержит мобильное устройство с камерой.