Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > удаление цилиндрического искажения


Автор: blackbanny 10.7.2013, 05:44
Доброго времени суток!
в наличии есть фотографии винных бутылок, а точнее их этикеток. мне нудно с этих фотографий выцеплять текст(будет делаться с помощью специального sdk), но перед тем, как выцеплять текст следует предобработку. предобработка заключается в удалении цилиндрического искажения. подскажите, пожалуйста, где можно про это почитать, какие алгоритмы и может быть знаете библиотеки, которые решают данную проблему(без разницы на каком ЯП)?

Автор: Pavia 10.7.2013, 07:16
OpenCV
Но одними геометрическими искажениями вы не отделаетесь. Нужно ещё фокус восстанавливать. И бинаризацию.
Идея простая картинка разбиваеться на участке (4x4 или 16x16) где искажения можно принять за линейные и тем самым далее работаем уже с прямоугольниками. Геометрическое искажение устроняем через билинейное преобразование. 

Автор: blackbanny 10.7.2013, 07:24
Цитата(Pavia @ 10.7.2013,  07:16)
OpenCV
Но одними геометрическими искажениями вы не отделаетесь. Нужно ещё фокус восстанавливать. И бинаризацию.
Идея простая картинка разбиваеться на участке (4x4 или 16x16) где искажения можно принять за линейные и тем самым далее работаем уже с прямоугольниками. Геометрическое искажение устроняем через билинейное преобразование.

спасибо) 
мысль использовать OpenCV промелькнула в голове, но подумал, что можно обойтись без сторонних библиотек...
ну раз так не выйдет, то можете подсказать ссылки на статьи где нечто подобное делается с помощью OpenCV?

Автор: Pavia 10.7.2013, 07:50
www.aishack.in/2010/08/sudoku-grabber-with-opencv/
Искать надо по тегам
remap, билинейное преобразование.
Статьи мне не попадались. OpenCV вам не сильно поможет. Решётку надо будет ручками создавать. И восстанавления фокуса для каждого квадрата делать тоже ручками, так как у каждого свой параметр.

Автор: blackbanny 10.7.2013, 10:53
т.е. автоматически мне не удастся сделать, то что я хочу?

Автор: blackbanny 11.7.2013, 05:56
Цитата(Pavia @  10.7.2013,  07:50 Найти цитируемый пост)
Решётку надо будет ручками создавать. И восстанавления фокуса для каждого квадрата делать тоже ручками, так как у каждого свой параметр. 

в принципе, можно подобрать какой-нибудь усредненный параметр для всех изображений...

Автор: blackbanny 16.7.2013, 18:27
вот кстати ссылки на сами фото этикеток:
http://s1.ipicture.ru/uploads/20130716/54xh4S6R.jpg
http://s1.ipicture.ru/uploads/20130716/EX5U6KUb.jpg
http://s1.ipicture.ru/uploads/20130716/yCDbyNUq.jpg

подскажите, что по шагам мне нужно сделать, чтобы убрать все искажения, т.е. предоставить более пригодные изображения для распознавания для FineReader Engine?
думаю реализовывать с помощью OpenCV

Автор: blackbanny 17.7.2013, 06:23
up

Автор: mrgloom 17.7.2013, 14:59
для начала надо хотя бы найти контур ограничивающий этикетку. (я так думаю нижний край должен обязательно попадать)

Автор: blackbanny 18.7.2013, 04:44
Цитата(mrgloom @  17.7.2013,  14:59 Найти цитируемый пост)
для начала надо хотя бы найти контур ограничивающий этикетку. (я так думаю нижний край должен обязательно попадать) 

с какой целью? что дальше?

Автор: mrgloom 18.7.2013, 08:37
Цитата

с какой целью? что дальше?

ну если вы находите контур, то потом вам надо чтобы 2 вертикальные линии стали прямыми и вертикальными, а горизонтальные дуги прямыми и горизонтальными.

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

мне кажется что искажение восстановимо с точностью до масштаба.

можете посмотреть похожую задачу.
http://dxdy.ru/topic61037.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)