Comments 13
Вам бы сканер бар-кодов написать. А то мой Андроид ничего кроме идеально-ровно-установленных изображений перед камерой не понимает.
+2
А у вас камера с автофокусом? Проверено что 5Мп камера без автофокуса распознает на порядок хуже нежели 3.2Мп с автофокусом.
+1
Очень странно что Андройд не понимает)) На HD2 (Android 2.2.1) такие программы как QR Droid и «Сканер штрих-кодов» понимают под любым углом и другими искажениями…
А автору спасибо за статью, почерпнул новое.
А автору спасибо за статью, почерпнул новое.
+2
Bar-коды или QR-коды? Мой андроидофон замечательно распознаёт qr-коды даже когда камера ещё не успела сфокусироваться причём снимать не обязательно из ровной позиции.
+1
HTC Legend, Android 2.3, распознаёт любые коды на лету за доли секунды.
+1
Спасибо, очень интересно.
Такой вопрос, я так понимаю, что после получения конечной модели баркода из фотографии, он ищется в некой базе данных баркодов. А если, например, одна из клеток (либо пара) баркода получилась битая (на фотографии в этом месте лежала черная пылинка), это как-то учитывается? Или такой баркод считается не валидным? Насколько вообще ваши алгоритмы толерантны к такого рода ошибкам?
Такой вопрос, я так понимаю, что после получения конечной модели баркода из фотографии, он ищется в некой базе данных баркодов. А если, например, одна из клеток (либо пара) баркода получилась битая (на фотографии в этом месте лежала черная пылинка), это как-то учитывается? Или такой баркод считается не валидным? Насколько вообще ваши алгоритмы толерантны к такого рода ошибкам?
+1
В QR-кодах как правило есть избыточная информация для таких случаев.
Вообще рекомендую заглянуть в английскую википедию, там на редкость любознательная статья на тему qr-кодов.
Вообще рекомендую заглянуть в английскую википедию, там на редкость любознательная статья на тему qr-кодов.
+2
У нас Рид-Соломон, то он исправляет ошибки.
0
Восстановим квадратную форму оставшихся объектов. Для этого строим матрицу отображения исходного (искаженного) изображения на квадратную картинку
не подскажите где про это подробно почитать — скоро понадобиться сильно, а у вас наверняка пару хороших ссылочек по теме уже есть =)
+1
Ну вообщем-то, только курс линейной алгебры — аффинные преобразования (как из 4-угольника попытаться получить квадрат). Если недостаток информации (исходник меньше требуемого результата), то есть матричное преобразование, которое увеличивает/сжимает исходный объект, если избыток — аналогично. Можно еще и усреднять — дополнять интерполяцией.
0
А как делается векторизация изображения? Как получаются отрезки сторон бар-кодов?
+1
Мы итерационно наращиваем скелет, считая его отрезком, пока отклонение следующего шага от предыдущего не превысит критическую отметку. Но это долго и могут возникать коллизии при кривом изображении (и кривых руках). Поэтому от этого мы уже почти отошли и упрощенно определяем «квадратность» по 4 точкам (2 максимально удаленные друг от друга и еще 2 — максимально удаленные от линии между теми двумя), а спорные моменты разрешаются уже при непосредственном распознании: бОльшая часть отсечется на проверке черной границы, оставшиеся коллизии — на совпадении с паттерном рамки баркода (граница + метки). Первое проверяется достаточно быстро, второе — вообще подвешено на битовые маски у нас.
0
Если интересно — почитайте работы Павлидиса и компании. Но у нас проще — мы итерационно наращиваем скелет, считая его отрезком, пока отклонение следующего шага от предыдущего не превысит критическую отметку.
0
Sign up to leave a comment.
Оригами и расширенная реальность (продолжение)