Было бы бесполезно иметь штрих-коды, если бы у нас не было технологии для их считывания. Сканеры штрих-кодов должны быть способны очень быстро считывать черно-белые линии "зебры" на продуктах и передавать эту информацию на компьютер или кассовый терминал, который может немедленно идентифицировать их с помощью базы данных продуктов. Вот как они это делают.

Ради этого простого примера давайте предположим, что штрих-коды представляют собой простые двоичные шаблоны включения-выключения, где каждая черная линия соответствует единице, а каждая белая линия - нулю. (Мы уже видели, что настоящие штрих-коды более сложны, но давайте не будем усложнять.)

Простая пронумерованная диаграмма, показывающая части системы сканирования штрих-кодов UPC и как они работают.

Сканирующая головка направляет светодиодный или лазерный свет на штрих-код.
Свет отражается от штрих-кода обратно в электронный компонент, определяющий свет, называемый фотоэлементом. Белые области штрих-кода отражают больше всего света; черные области отражают меньше всего.
Когда сканер проходит мимо штрих-кода, ячейка генерирует последовательность импульсов включения-выключения, которые соответствуют черным и белым полосам. Итак, для кода, показанного здесь ("черный черный черный белый черный белый черный черный"), ячейка будет "выкл. выкл. выкл. вкл. выкл. вкл. выкл. вкл. выкл. выкл.".
Электронная схема, подключенная к сканеру, преобразует эти импульсы включения-выключения в цифры.
Цифровые данные со сканера отправляются в компьютерную программу, которая вычисляет окончательный штрих-код.
В некоторых сканерах есть одна фотоэлементная ячейка, и когда вы перемещаете головку сканера мимо продукта (или продукт мимо головки сканера), ячейка распознает каждую часть черно-белого штрих-кода по очереди. В более сложных сканерах есть целая линейка фотоэлементов, и весь код распознается за один раз.

Как сканеры справляются с движущимися объектами?
Одна из основных сложностей здесь заключается в том, что штрих-код (или сканер) часто перемещается в процессе сканирования (вспомните, как вы проводите пальцем по товарам на кассе самообслуживания), или он может находиться так далеко от сканера, что код не в фокусе. Это означает, что рисунок, который выдает сканер, представляет собой не четкий набор легко распознаваемых черных и белых полос, а размытое пятно, состоящее из более неоднозначных оттенков серого. Для преобразования этих размытых рисунков в точные штрих-коды можно использовать различные компьютерные алгоритмы, в том числе распознавание границ, которое ищет внезапныеизменения яркости, когда ноль сменяется единицей или наоборот. Если вы хотите точно знать, как работают эти алгоритмы, ознакомьтесь с техническими ссылками в конце этой статьи.

Обычный штрих-код, размытый штрих-код и размытый штрих-код, обработанный алгоритмом обнаружения границ.

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