| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > удаление цилиндрического искажения |
| Автор: blackbanny 10.7.2013, 05:44 |
| Доброго времени суток! в наличии есть фотографии винных бутылок, а точнее их этикеток. мне нудно с этих фотографий выцеплять текст(будет делаться с помощью специального sdk), но перед тем, как выцеплять текст следует предобработку. предобработка заключается в удалении цилиндрического искажения. подскажите, пожалуйста, где можно про это почитать, какие алгоритмы и может быть знаете библиотеки, которые решают данную проблему(без разницы на каком ЯП)? |
| Автор: Pavia 10.7.2013, 07:16 |
| OpenCV Но одними геометрическими искажениями вы не отделаетесь. Нужно ещё фокус восстанавливать. И бинаризацию. Идея простая картинка разбиваеться на участке (4x4 или 16x16) где искажения можно принять за линейные и тем самым далее работаем уже с прямоугольниками. Геометрическое искажение устроняем через билинейное преобразование. |
| Автор: blackbanny 10.7.2013, 07:24 | ||
спасибо) мысль использовать 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 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 18.7.2013, 08:37 | ||
ну если вы находите контур, то потом вам надо чтобы 2 вертикальные линии стали прямыми и вертикальными, а горизонтальные дуги прямыми и горизонтальными. если известна аналитическая формула для искажения, то наверно по расстоянию от центра фигуры и нескольких точек на дуге можно установить параметры искажения, имея параметры искажения вы можете сделать обратное преобразование. если же аналитическая формула неизвестна, то я так и не понял как считать, можно предположить, что у нас есть прямоугольник(4 отрезка) и есть искаженный прямоугольник(4 дуги), допустим фиксируем краевые точки у 2-х соответствующих отрезков, а как поставить в соответствие точки между краевыми точками не очень понятно. мне кажется что искажение восстановимо с точностью до масштаба. можете посмотреть похожую задачу. http://dxdy.ru/topic61037.html |