Цель работы заключалась в разработке алгоритма, эффективно распознавающего штрих-коды EAN-13 с возможностью дефокусировки и яркостно-геометрических искажений. Анализ ряда существующих алгоритмов показал, что все они не в полной мере отвечают представленным требованиям. Алгоритм, описанный в http://users.soe.ucsc.edu/~orazio/barcodes.html, дает впечатляющие результаты как в плане эффективности, так и в плане производительности, но он не способен распознавать сильно дефокусированные штрих-коды.
В процессе работы была разработан алгоритм распознавания искаженного штрих-кода, который получает на входе изображение, содержащее уже локализованный ненаклоненный штрих-код.
Суть алгоритма заключается в минимизации функционала вида J = sum(h_i - g_i(P))^2, где h_i - измерения сигнала, P - вектор оцениваемых неизвестных параметров, g_i(P) - модель дискретного сигнала. Для минимизации J используется итеративная процедура оценивания. В первой итерации модель сигнала использует положения границ штрихов, полученных с помощью алгоритма http://users.soe.ucsc.edu/~orazio/barcodes.html. После минимизации в случае успешного декодирования выдается результат, в противном случае выводится сообщение о невозможности распознавания.
Испытания показали, что реализованный алгоритм способен быстро и эффективно распознавать штрих-коды на сильно дефокусированных изображениях с высоким уровнем шума и различными яркостно-геометрическими искажениями при количестве пикселей области штрих-кода от 200 и более. Среднее время распознавания на смартфоне HTC Legend составило приблизительно 1 секунду, что позволяет в случае неуспеха быстро повторить попытку распознавания.
2. Многие мобильные устройства снабжены
встроенными фотокамерами.
Считывание штрих-кодов может
позволить:
• сравнивать цены товаров,
• получать полную характеристику продукта,
• смотреть обзоры и отзывы других
покупателей,
• проверять продукт на ингредиенты-
аллергены.
Проблема – камера вносит искажения при
съемке штрих-кода
2
3. Цель работы – разработать алгоритм распознавания штрих-
кода EAN-13, устойчивый к искажениям, возникающим
при съемке.
Решенные задачи:
1. Анализ специфики задачи распознавания и
формулировка требований к алгоритмам.
2. Анализ существующих алгоритмов распознавания
искаженных штрих-кодов.
3. Разработка алгоритма распознавания искаженного
штрих-кода.
4. Реализация и оптимизация алгоритма.
5. Исследование эффективности алгоритма на реальных
изображениях и сравнение с существующими.
3
4. Искажения:
4
• дефокусировка,
• низкая частота
дискретизации,
• наклон камеры,
• изгиб поверхности,
• неравномерная
освещенность,
• шумы.
Алгоритм распознавания должен быть
достаточно стойким к вышеописанным
искажениям. Процесс распознавания должен
занимать не более 2 секунд в среднем.
5. 1. S.Wachenfeld, S.Terlunen, X.Jiang. Robust Recognition of 1-D Barcodes Using Camera
Phones. International Conference of Pattern Recognition, 2008.
2. R.Adelmann, M.Langheinrich, C.Florkemeier. Toolkit for Bar Code Recognition and
Resolving on Camera Phones - Jump Starting the Internet of Things. Workshop on Mobile
and Embedded Interactive Systems (MEIS'06) at Informatik, GI LNI, 2006.
3. E.Joseph, T.Pavlidis. Bar Code Waveform Recognition Using Peak Locations. IEEE
Transactions On Pattern Analysis And Machine Intelligence, Vol. 16, No. 6, June 1994.
4. N.Liu, H.Sun. Deconvolution of The Two-Dimensional Bar Code Based on Binary
Constraint. International Conference on Computer Science and Software
Engineering, 2008.
5. E.Tekin, J.Coughlan. A Bayesian algorithm for reading 1D barcodes. Sixth Canadian
Conference on Computer and Robot Vision, 2009.
6. O.Gallo, R.Manduchi. Reading 1-D Barcodes with Mobile Phones Using Deformable
Templates, 2010.
7. K.Wang, Y.Zou, H.Wang. 1-D Bar Code Reading On Camera Phones.
8. D.Chai, F.Hock. Locating and Decoding EAN-13 Barcodes From Images Captured by
Digital Cameras, 2005.
9. S.Kresic-Juric, D.Madej, F.Santosa. Applications of hidden Markov models in bar code
decoding, 2006.
10. R.Muniz, L.Junco, A.Otero. A Robust Software Barcode Reader Using The Hough
Transform. Information Intelligence and Systems, 1999.
5
6. [1] [2] [3] [4] [5] [6]
Шумы
Слабая дефокусировка (ρ < s)
Сильная дефокусировка (s < ρ < 2s)
Надежность оценки ρ – – – –
Искаженная геометрия
Яркостные искажения
Малая частота дискретизации
Высокая скорость работы
Нет ограничений на тип штрих-кода EAN EAN EAN UPC*
* – можно обобщить для EAN-13
6
7. 1) Предварительная обработка.
2) Первая попытка распознавания с
использованием алгоритма [6],
устойчивого к геометрическим
искажениям.
3) Вторая попытка распознавания с
использованием нового алгоритма
восстановления дефокусированного
штрих-кода (в случае неудачного
завершения второго этапа).
7
8. 1. Выделение окна
2. Усреднение по оси OY
(снижение уровня шума)
3. Начальная оценка
границ штрих-кода
xL и xR
4. Начальная оценка
ширины единичного
штриха s
5. Масштабирование
(уменьшение количества
отсчетов)
8
10. • ρ – параметр ФРТ
• a, b – контраст и яркость
• pk – неизвестные позиции границ полос
• xL – левая граница штрих-кода
• s – ширина единичного штриха
Зная pk, можно произвести декодирование
10
12. Минимизация функционала
Для минимизации на каждом шаге итераций
используется разложение J в ряд Тейлора в
окрестности текущих оценок.
12
Пример восстановленного штрих-кода
Результат: 0 054881 008594
13. • Алгоритм реализован на языке Java
• Основные оптимизации:
– Ускорение вычисления функции erf(x) с
помощью предварительного подсчета
значений функции в узловых точках и
последующей интерполяции
– Использование float вместо double
– Считывание лишь части изображения высотой
15 пикселей вместо считывания всего
изображения
– Модифицированная библиотека JAMA для
работы с матрицами
13
14. Набор снимков реальных штрих-кодов:
• Всего снимков – 164
• Распознано правильно – 98 (≈ 60%)
• Не распознано – 63
• Распознано неправильно – 3 (≈ 2%)
Разрешение 226 px Разрешение 1130 px
Моделирование:
14
64
Алгоритм
[6]
34
Наш
алгоритм
18. • Среди рассмотренных алгоритмов не нашлось
такого, который бы полностью удовлетворил
требованиям.
• Предложен новый алгоритм, способный работать в
условиях достаточно сильных искажений
(дефокусировка, малая частота
дискретизации, яркостно-геометрические
искажения, шумы)
• Алгоритм реализован и оптимизирован для
возможности работы на мобильных устройствах.
• Экспериментально показано, что новый алгоритм
дает наилучшие результаты по сравнению с
исследованными аналогами.
• Реализовано мобильное приложение для
сканирования штрих-кода EAN-13.
18
23. 1. Локализация штрих-кода на изображении
2. Одна сканирующая линия
3. Поиск границ штрих-кода
4. Сегментирование
5. Сопоставление сегментов с моделью:
23
В последнее время появился интерес в использовании мобильных устройств со встроенными камерами в качестве сканеров штрих-кодов. Уже сейчас существуют мобильные приложения, благодаря которымпокупатели, не выходя из магазина, могут получать полезную информацию о продукте, такую как сравнение цен с другими магазинами или отзывы других покупателей.Однако искажения, вносимые камерами мобильных устройств, могут серьезно усложнить задачу распознавания штрих-кода.
Тем не менее, был выделен алгоритм [6], который обеспечивает хорошее распознавание штрих-кодов с яркостно-геометрическими искажениями, и использован в качестве одного из этапов работы нового алгоритма.
Разработанный алгоритм состоит из 3 этапов: сначала идет предварительная обработка изображения, затем происходит первая попытка распознавания с использованием вышеупомянутого алгоритма [6], и если попытка распознавания оказывается неудачной, что проверяется с помощью контрольной цифры штрих-кода, то происходит вторая попытка распознавания с использованием нового алгоритма восстановления дефокусированного штрих-кода.
Предварительная обработка сигнала состоит из следующих этапов. Сначала выделяется окно высотой 15 пикселей на середине высоты, которое затем усредняется по оси OY для снижения уровня шума. После этого выполняется поиск границ штрих-кода, и оценивается ширина единичного штриха s с использованием того факта, что в любом штрих-кодеEAN-13 имеется 95 штрихов. На последнем этапе предобработкипроизводится масштабирование, в результате которого уменьшается количество отсчетов штрих-кода, что приводит к значительному ускорению дальнейшего распознавания
Работа алгоритма заключается в оценке набора параметров, перечисленныхданном слайде. После завершения оценки значения вектора pk используются для декодирования цифр штрих-кода.
Разработанный алгоритм был реализован на языке Java. Для того, чтобы алгоритм был способен быстро работать на мобильных устройствах, был выполнен ряд оптимизаций, нацеленных как на повышение скорости работы алгоритма, так и на экономию памяти.
На данном слайде изображены примеры штрих-кодов, которые корректно распознались алгоритмом.
Также было произведено тестирование производительности разработанного алгоритма. На данном слайде изображены гистограммы времени распознавания штрих-кодов на примере смартфона HTC Legend и персонального компьютера с процессором Athlon 3500+. Видно, что ограничение на скорость работы алгоритма выполнено: среднее время распознавания на смартфоне составляет приблизительно 1 секунду.
Таким образом:Среди рассмотренных алгоритмов не нашлось такого, который бы полностью удовлетворил требованиям.Предложен новый алгоритм, способный работать в условиях достаточно сильных искажений (дефокусировка, малая частота, яркостно-геометрические искажения, шумы)Алгоритм реализован и оптимизирован для возможности работы на мобильных устройствах.Экспериментально показано, что новый алгоритм дает наилучшие результаты по сравнению с исследованными аналогами.Реализовано мобильное приложение для сканирования штрих-кода EAN-13.Спасибо за внимание. Готов ответить на ваши вопросы.(конец)