Натолкнулся в сети на упоминание об интересном способе кодирования текста в черно-белое графическое изображение, состоящее из квадратиков по типу штрихкода, но двумерного (пример слева). Этот код назван Semacode. В интернете немало статей на эту тему, в знаменитой Wikipedia есть вообще отдельный домен, посвященный ему! Больше всего меня заинтересовало то, что этот способ кодирования разработан специально для того, чтобы эти изображения распознавались мобильными телефонами с фото-камерой. Представляете себе – распознавание образов на мобильном телефоне?! Я не представлял, и углубился в проблему… Semacode предназначен в первую очередь для того, чтобы упростить жизнь тех, кто часто бродит по интернету прямо при помощи мобильного телефона, благо, что http-браузеры сейчас встроены почти во все модели. В чем же видят проблему авторы semacode? Да в процессе ввода URL (т. е. адресов страниц): клавиатура телефона – это вам не клавиатура компьютера! Так вот, по замыслу разработчиков, достаточно на сайте разместить semacode с закодированным адресом (на рисунке как раз semacode с адресом "forum.antichat.ru"), чтобы интернет-путешественник просто сфотографировал его камерой своего телефона, сидя, например, перед дисплеем нормлаьного компьютера, а потом, будучи уже «мобильным» не мучился с вводом адреса, а воспользовался мидлетом, распознающим semacode, т. е. извлекающим из картинки закодированный URL. Вот еще пример, когда semacode окажется кстати: если вы разместили бумажное объявление о какой-либо услуге, оказывать которую вы готовы, то язычки с номером телефона оторвут быстро, и приток «клиентов» к вам снизится. Если же вы разместите на объявлении semacode со своим телефоном, e-mail или http-адресом своего сайта, то все желающие смогут без проблем сфотографировать его и пользоваться при необходимости. Вы скажете, что сфотографировать можно и просто объявление, вовсе незачем какие-то коды городить… Но это не совсем так же удобно: VGA-камера вряд ли позволит разобрать буквы с фотографии, если они меньше спичечного коробка (много объявлений вы встречали, набранных таким шрифтом?). Кроме того, не забывайте, что вводить-то текст с картинки вам все равно придется вручную… А как вы это будете делать, если далеко не все телефоны позволяют одновременно просматривать снимки и работать с телефонной книгой или номеронаберателем…не говоря уж о браузере… Так что повод задуматься о целесообразности такого подхода есть. Сам принцип кодирования можно использовать и для кодирования иных текстов, не только URL (правда, остается проблема – зачем это делать, но не об этом сейчас речь). В общем, надеюсь, основная идея понятна. Разработчики semacode абсолютно бесплатно раздают всем желающим java-библиотеку для того, чтобы встраивать распознавание semacode в собственные мидлеты. Так же доступны версии библиотеки и для java-приложений для «нормальных» платформ. Разумеется, доступны готовые мидлеты под различные модели телефонов, позволяющие распознать URL и открыть его встроенным браузером телефона. Исходники этих мидлетов так же доступны. Я воспользовался ими и сделал свой вариант простого распознавателя semacode, скачать который можно, как всегда, из файлового архива (http://arv.radioliga.com/component/option,com_remository/Itemid,27/func,select/id,27/). Мидлет протестирован на телефоне Siemens C75, должен работать на всех телефонах, поддерживающих Java MIDP 2.0 и имеющих видеокамеру. Мидлет не позволяет открыть URL в браузере, я такой цели не ставил. Это просто демонстрация возможностей. Кстати, он почти вдвое меньше по размеру, чем «фирменный». При работе с распознавателем semacode (как моим, так и фирменным), следует пользоваться следующими простейшими правилами: необходимо стремиться к тому, чтобы semacode занимал как можно большую площадь изображения, но при этом обязательно помещался целиком, не пересекая границы. Кроме того, изображение semacode должно быть в центре снимка. Кстати, вовсе не обязательно стремиться «выровнять» квадратик semacode, он нормально распознается при небольших наклонах. Даже при повороте на 90 или 180 градусов распознается отлично! На рисунках ниже показаны основные правила фотографирования semacode. Правильно: Неправильно: Чтобы протестировать принцип semacode, в можно воспользоваться простейшим генератором. Этот генератор построен на найденных в сети бесплатных php-скриптах, которые вы так же можете скачать из моего файлового архива. Пока, из-за малой распространенности semacode, особого эффекта от размещения его на своем сайте ожидать не приходится… Хотя с моей точки зрения идея интересная и перспективная. Особенно интересна сама идея распознавания образов при помощи java-мидлетов. Технология semacode использует устойчивое к ошибкам кодирование, потому, по теории, позволит восстанавливать без ошибок текст из частично испорченного изображения (однако, я сам пока это не проверял). Источник: http://arv.radioliga.com/
Интересное видео по теме: Татуировщик оживил тату с помощью QR-кода QR-код и semacode это одно и то же или разновидности? Механизм работы по крайней мере такой же... P.S. Скоро могут появится и алармы-лоадеры c подобной технологией.