Журнал «Компьютерра» №35 от 28 сентября 2005 года - Компьютерра (читаем книги TXT) 📗
Подобно другим двухмерным штрих-кодам в датаглифы можно добавлять избыточную информацию. При декодировании эти добавки позволяют восстановить оригинал, если часть штрихов повреждена. Кроме того, биты располагаются не подряд, по вертикали или горизонтали, а перемешаны и уложены по размашистой зигзагообразной траектории. Таким образом, избыточность и глубокое перемешивание обеспечивают прочтение всех данных с листа, даже если от него оторвали угол и заляпали кляксами (до известной степени, конечно). Для надежного чтения весь блок датаглифов пронизывают синхронизирующие штрихи, позволяющие работать с криво отснятыми и даже изогнутыми поверхностями.
Интересно, что когда люди видят датаглифы, они не воспринимают их как специальные знаки. Из-за малых размеров и регулярного расположения бумага кажется просто заштрихованной, и датаглифная полоса, размещенная выше или ниже текста, выглядит декоративным элементом. Более того, установив высокую избыточность, буквы можно печатать вообще поверх датаглифов. Конечно, правильнее печатать текст и датаглифы вместе, размещая штрихи между буквами и строками. Тогда высокая избыточность не понадобится. Еще лучше делать документ не черно-белым, а цветным. Человек по-разному различает цвета, и тонкие желтые линии на белом фоне мы почти не замечаем. В то же время фотокамеры и сканеры хорошо видят желтый на белом. Можно печатать черные буквы поверх желтой датаглифной штриховки и получать почти обычный документ, но содержащий десятки килобайт данных и лишь слегка желтоватый, как на старой бумаге.
Теперь вспомним, что текстовые данные хорошо сжимаются. Древний 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 развивается… пусть не семимильными шагами, но уверенными – уже поддерживаются семьдесят моделей камера-/смартфонов от четырнадцати производителей. Для некоммерческого использования все программы доступны бесплатно, и любой желающий может напечатать квадрат двухмерного кода, например, на обороте визитки, а затем демонстрировать знакомым свою продвинутость. Группы энтузиастов постепенно начинают метить странной рябью стены и тумбы различных городов, однако знакомясь с содержанием меток, понимаешь их ограниченность. И это снова возвращает нас к датаглифам.