ТЕХНОЛОГИИ: Косые штришки

ТЕХНОЛОГИИ: Косые штришки

Над исследовательским центром PARC компании Xerox, похоже, висит злой рок. Рождающиеся здесь изобретения нередко становятся общепринятыми стандартами, двигают вперед науку и кое в чем даже меняют наш мир, но сама Xerox зачастую не может получить от них ожидаемой прибыли. Так было с Ethernet’ом, архитектурой клиент-сервер, лазерными светодиодами для принтеров, оконным графическим интерфейсом и манипулятором мышь. Не слишком удачно складывается судьба и у еще одной разработки.

Читатели «КТ» наверняка сталкивались с ситуацией, когда цифровые приборы взаимодействуют со своими собратьями без всякого участия пользователя. Автоматический роуминг в мобильниках, самостоятельное взаимообнаружение устройств с радиоинтерфейсами, в конце концов банальный Plug&Play — все это примеры автономного взаимодействия. Меж тем такая автоматизация имеет свои пределы.

Умный принтер узнает «в лицо» картридж с чернилами по специальному чипу, содержащемуся в последнем. Очень умный принтер может даже оценить белизну, глянец и рыхлость бумаги с помощью оптического датчика. Но, как вы понимаете, данные о бумаге будут уже приблизительными, а не точными. Цифровые приборы способны хорошо «видеть» лишь друг друга, а «нецифровые предметы» для них как будто покрыты туманом. В таких случаях частенько прибегают к помощи особых ярлычков, узнаваемых техникой безошибочно. Способы навешивания ярлычков называются Embedded Data Technologies.

Самым ярким представителем такой технологии являются радиометки (RFID), быстро завоевывающие популярность, однако и старомодный штрих-код отнюдь не исчерпал своего потенциала. Например, компании Anoto и Digimarc считают, что ярлыки должны быть незаметны, и первая предлагает маркировать товары невидимыми чернилами, а вторая — едва различимой рябью. Сотрудникам PARC, однако, приходится учитывать специфику материнской компании и делать нечто, с чем могли бы работать копиры, принтеры, факсы и прочая техника Xerox. Такие ограничения сразу приземляют любую Embedded Data Technologies на лист бумаги, посыпанный тонером. Придумать же что-то новое для бумаги крайне трудно, и еще труднее вытеснить с нее старомодный штрих-код. Между тем у этого старика есть серьезные недостатки — в частности, низкая информационная емкость в пересчете на единицу площади и никудышная устойчивость к повреждениям[Линейный штрих-код обычно содержит контрольные цифры, позволяющие только обнаруживать ошибку, но не исправлять ее].

Попытки заменить линейный штрих-код делались многократно, и сегодня Wikipedia перечисляет больше тридцати таких разработок. В PARC наверняка изучали их и обсуждали, как можно втиснуть на квадратный дюйм побольше байтов. Очевидный ответ — взять не «зебру» из длинных линий, а некую таблицу или решетку (такие разработки тоже известны, обычно они представляют собой матрицу из черных и белых точек). И вот в какой-то умной голове родилась мысль: а почему нули-единицы обязательно передавать на бумаге белыми и черными участками? Почему бы не рисовать один-единственный символ, а два бита — 1 или 0 — кодировать вариантами его ориентации? Какой выбрать символ? Самый простой — короткую прямую. Эта изящная идея позже была названа DataGlyphs — датаглифы.

Цепочка косых штрихов, наклоненных влево или право, соответствует цепочке из нулей и единиц.

Штрихи взаимно перпендикулярны, и потому распознающее устройство вычисляет их ориентацию, как бы криво ни лежала бумага. Кстати, кодирование данных с помощью ориентации символа вообще устойчивее к помехам, чем привычный способ «есть символ/нет символа».

Здесь уместен вопрос: насколько больше площади требует косой штрих в сравнении с черно-белой точкой других стандартов? Все зависит, конечно, от длины линий. Разработчики советуют делать их не короче пяти пикселов, а лучше — семи. Может показаться, что тогда один штрих займет квадрат, куда влезло бы 25 или 49 точек, но не все так просто. Точечный штрих-код не стоит печатать на пределе разрешения — одно его поле (черное или белое) должно быть размером в несколько пикселов. Сколько именно — зависит от зоркости сканера[Двухмерные штрих-коды, включая датаглифы, не распознаются обычным лазерным сканером из супермаркета, им нужна упрощенная фотокамера или 2D-сканер]. Если сравнивать датаглифы и, например, самый популярный точечный штрих-стандарт PDF-417, то оказывается, что при одинаковой распознаваемости черно-белые точки на той же площади вмещают по крайней мере в полтора раза меньше данных.

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

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

***

Теперь вспомним, что текстовые данные хорошо сжимаются. Древний Zip-алгоритм и его родственники способны уменьшать обычный текст примерно вдвое. Современный WinRar — вчетверо-впятеро, а экспериментальные программы, настроенные на конкретные языки, уже достигли соотношения один к шести. Поскольку дешевая офисная техника, оперирующая разрешением 300 dpi, может работать с датаглифами плотностью двести байт на квадратный дюйм, то применив даже несложное сжатие, можно получить штриховую полосу шириной с палец (напечатанную внизу листа), содержащую около 10 Кбайт информации. Для сравнения: стандартная емкость того же листа, заполненного обычными буквами, — 1800 символов (лист журнала — около 4500 символов. — Прим. ред.). Ну а весь лист А4, заполненный датаглифами до краев (с тем же разрешением и умеренной избыточностью), будет содержать на одной стороне около 50 Кбайт несжатых данных.

Возможно, кто-то спросит: «А зачем вообще нужен штрих-код?» Ведь машины уже хорошо различают нормальные буквы, и если нужна высокая плотность, то можно же печатать их очень мелким шрифтом. Но распознавание штрих-кодов (любых) принципиально отличается от распознавания обычного текста. Человеку кажется, что в обоих случаях компьютер из снимка бумажной страницы получает некие данные. В действительности же узнавание слов требует наличия словарей, очень большой памяти и сложной программы вроде FineReader’а. Наши буквы удобны для нас, но не для компьютеров. Тогда как штрих-коды — это машинопись, изначально задуманная для легкого распознавания «железками». Разница здесь такая же, как между человеческой речью и писком модема. Соответственно и устройства для обработки штрих-кодов могут быть весьма простыми. Фактически их могут понимать сегодня даже мобильные телефоны, тем более что они вовсю оснащаются фотокамерами.

Кстати, о фото. Попробовав менять не цвет датаглифов, а толщину, в PARC придумали разновидность штрих-кода, который переводит само это понятие на новый уровень. Поскольку соседние штрихи разной толщины все равно четко различимы (важна лишь ориентация), таблицу датаглифов можно печатать жирно или блекло в произвольных местах, придавая ей вид любого графического изображения. Иными словами, датаглифы можно «растворить» в любом изображении. Эта технология получила название GliphTones (глифтоны), и на фото хорошо видна ее суть.

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

Теперь отвлечемся от деталей и спросим себя: «Для чего нужен такой штрих-код?» Конечно, хорошо, что утрамбованную WinRar’ом книжицу можно поместить на одну страницу (хотя бы потому, что это здорово сэкономит древесину). Но очевидно, что такие книги не понравятся ни читателям, ни издателям — уж слишком много с ними возни.

Размышляя о приложениях своего изобретения, сотрудники PARC придумали множество вариантов — и вполне заурядных, и весьма неожиданных.

Очевидная идея — дублировать штрих-кодом данные, дополняя их криптографической защитой. Например, любой чек, в котором цена указана цифрами (а не прописью), легко подделать, исправив тройку на восьмерку или, скажем, семерку на двойку. Однако если у чека будет еще и штриховая полоса, содержащая весь текст плюс цифровую подпись, то подделать его будет не легче, чем взломать грамотную шифровку. Платежный документ со сплошным фоном из датаглифов и обычными символами печатается принтером в один проход.

Или еще вариант. Представьте, что вы читаете инструкцию к сложному механизму — моющему пылесосу, кухонному комбайну или кондиционеру. В ней есть картинки, но все они неподвижны. Вдруг вы замечаете, что страницы имеют легкий штриховой фон, да и сами иллюстрации в мельчайших штрихах. Тогда вы достаете из кармана мобильник с фотокамерой (он же всегда с вами), нажимаете пару клавиш и запускаете Java-апплет распознавания датаглифов. С близкого расстояния снимаете одну страницу инструкции — несколько кадров, пока мобильник не запищит, давая знак, что все понял. Еще пара секунд, и вот уже на экране появляется анимация, наглядно показывающая, какой путь в кухонном комбайне проходят овощи, когда установлена какая-нибудь хитрая насадка. Удобно, не правда ли?

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

Пока связка «мобильник + датаглифы», увы, только фантазия, однако для ее воплощения нужен лишь Java-апплет. Боле того, три года назад эта задача уже была решена для другого штрих-стандарта. В 2002 году «КТ» сообщала о сайте Semacode.org, на котором выложены программы, превращающие любую веб-ссылку в двухмерный штрих-код. Там же выложены Java-апплеты для камерафонов, позволявшие снимать этот код, нарисованный хоть на заборе. Технически метод довольно прост, он использует уже существующие технологии — обычные камерафоны, публичный штрих-код (бесплатный ISO-стандарт Datamatrix) и несложный Java-апплет, который хоть и пришлось написать с нуля, но трудно назвать революционным. Тем не менее сочетание этих заурядных компонентов позволяет цифровым приборам вычленять информацию из «аналоговых предметов» окружающего мира. Semacode стал отличным примером Embedded Data Technology, и его авторы прямо говорят на своем сайте: «Наша система позволяет связать реальный мир с виртуальным». Судя по всему — связать наиболее доступным (простому человеку) способом.

Сегодня проект Semacode развивается… пусть не семимильными шагами, но уверенными — уже поддерживаются семьдесят моделей камера-/смартфонов от четырнадцати производителей. Для некоммерческого использования все программы доступны бесплатно, и любой желающий может напечатать квадрат двухмерного кода, например, на обороте визитки, а затем демонстрировать знакомым свою продвинутость. Группы энтузиастов постепенно начинают метить странной рябью стены и тумбы различных городов, однако знакомясь с содержанием меток, понимаешь их ограниченность. И это снова возвращает нас к датаглифам.

Семакодовый стандарт Datamatrix, подобно большинству штрих-кодов, передает нули и единицы черными и белыми точками. Решение, казалось бы, естественное, но как уже было сказано — есть способ лучше. Кроме того, максимальная емкость одного блока Datamatrix не может превышать 3116 ASCII-символов (у датаглифов — около 50 Кбайт). О такой уникальной вещи, как глифтоны, в проекте Semacode нельзя и мечтать. Меж тем фотовозможности мобильников постоянно растут — в них уже есть оптический зум, а в будущем станет обычной и стабилизация изображения. Так что ограничения штрих-стандарта, выбранного Semacod’ом, будут все сильнее напоминать о себе.

Завершая тему приложений, упомянем Glyph-o-Scope, созданный инженерами PARC. Прибор, напоминающий стационарную линзу (только с нулевым увеличением), состоит из плоского основания, на которое кладется лист бумаги, и большого стекла в толстой оправе, нависающего над листом. Если положить на основание картинку, отпечатанную глифтонами, и посмотреть на нее через стекло, то можно увидеть детали, неразличимые невооруженным глазом. Например, студент-ветеринар, рассматривая через стекло изображение звериной лапы, увидит, будто под рентгеном, все кости (сосуды, нервы, связки и т. д.) на соответствующих им местах.

Картинка с глифтонами может содержать десятки килобайт данных, которые распознаются микрокамерой в оправе стекла. Затем они обрабатываются встроенным процессором, а извлеченный файл проецируется микропроектором или на стекло, или обратно на бумагу. Более того — добавочная графика может быть подвижной. Глифоскоп наверняка понравился бы детям: кладешь под стекло книжку со сказками, и любимые герои оживают.

Думаю, читателям уже ясно, сколь полезно изобретение PARC, но вот о том, как скоро оно улучшит нашу жизнь, ничего обнадеживающего сказать, увы, нельзя. Сама идея косого штрих-кода родилась в 1989 году, а первые статьи появились в специализированных журналах в середине 90-х годов. Десять лет назад. Сегодня на сайте dataglyphs.com (не путайте с dataglyph.com — он совсем на другую тему) доступна аж четвертая версия пакета для программистов, желающих встроить этот стандарт в свои продукты (API для платформ Windows, Linux, Solaris, Mac OS X и QNX). И где же эти продукты? Даже хороших фотографий в Интернете удается найти меньше, чем пальцев на руке. И ведь не скажешь, что датаглифами совсем не интересуются — на рынке доступны и программы для их распознавания-нанесения (например, XReader от fsiautomation.com — понимает еще и обычный линейный штрих-код, и Datamatrix ), и сканеры, и даже линейка офисного оборудования самой Xerox, которое (помимо копирования-печати) может свободно работать с датаглифами и выпускается с 1997 года! Если поискать подольше, можно найти и список организаций, решившихся внедрить новый штрих-код в документооборот. Вот только список этот очень короткий. По большому счету, IT-рынок до сих пор не замечает разработку PARC, что в очередной раз подтверждает неприятный факт: судьба изобретения не зависит от его полезных качеств.

Побаловаться с созданием и расшифровкой датаглифов можно на www.parc.com/research/projects/dataglyphs/demo.html. — Прим. ред.

История штрих-кода

Идея маркировки, максимально приспособленной для машинного считывания, приходила в головы многим людям, но первый удачный вариант разработали два американских студента из университета Дрексела. В 1948 г. Норман Вудленд и Бернард Сильвер услышали, как президент одной торговой компании сетует на отсутствие системы автоматического опознания товаров на своих складах. Друзья сразу же подумали о самом простом коде — азбуке Морзе. Чтобы нанесенные на бумагу точки и тире распознавались лучше, студенты решили «растянуть» их вверх и вниз, получив набор вертикальных полос разной толщины. Это и был штрих-код, знакомый теперь каждому человеку.

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

***

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

***

Только изобретение лазера в 1960 г., позволившего создать нужные источники света, сделало штрих-сканеры пригодными для массового рынка. К сожалению, лазеры подешевели лишь к 70-м годам, а двое друзей продали свой патент в 1962 г., так и не получив от него ни цента отдачи.

***

В 1972 г. сеть магазинов Kroger (г. Цинциннати) впервые попыталась внедрить систему кругового штрих-кода. Однако при печати такая маркировка легко смазывалась, и эксперимент прекратили. 26 июня 1974 года в супермаркете города Троя (шт. Огайо) через кассовый аппарат со сканером штрих-кода был продан первый в мире товар — десять пачек жевательной резинки. Каким-то чудом одну из них не сжевали, и теперь она хранится в Смитсоновском музее американской истории. В 1992 г. за заслуги перед народом президент Джордж Буш-старший наградил Нормана Вудленда почетной медалью. К сожалению, его соавтор Бернард Сильвер до этого момента не дожил, скончавшись в 1963 г.