Название: Определение границ прямоугольной област Отправлено: SunbeamRider от Декабрь 17, 2014, 10:44 Привет. В общем задача у меня такая стоит: Есть куча отсканированных изображений (.JPG) некоего куска бумаги, предположим это какая нибудь этикетка или билетик, причем прямоугольная. отсканирована неровно ( то бишь стороны не параллельны сторонам монитора ), и задача моей проги состоит в том чтобы выравнивать эти изображения и затем обрезать строго по границе картинки. В рукопашную это сделать не составило труда, я использовал фреймворк QGraphics, кинул на сцену изображение, сделал инструменты автоматического поворота, ( но при этом пользователь должен сам определить границу этикетки и провести линию вдоль нее ) и после поворота обрезать не сложно. И вот подошел момент когда нужно все это автоматизировать, то есть программно определять границы этого клятого билетика(этикетки), поворачивать его и выделять область обрезания. Проблема состоит в том, что границы (и сама картинка)отнюдь не однородные, и даже не четкие. У меня вертелись какие то мысли насчсет таблицы цветов, получения количественного показателя каждого цвета, усреднения этого значения и тп. Но до конкретного чего то дойти не выходит, плюс к тому не очень хорошо знаком с инструментами библиотеки. Вот собственно и вопрос: возможно у кого то был опыт с задачами такого рода или есть мысли по реализации алгоритма, буду безмерно благодарен.
Название: Re: Определение границ прямоугольной област Отправлено: __Heaven__ от Декабрь 17, 2014, 11:10 Если сканы однотипны и есть штрихкод, может, его как-то использовать для выравнивания относительно краев экрана?
Название: Re: Определение границ прямоугольной облас Отправлено: Пантер от Декабрь 17, 2014, 11:19 По графике не помогу, но советую тебе приложить штуки 3 изображения к теме - людям будет проще тебе помочь.
Название: Re: Определение границ прямоугольной област Отправлено: SunbeamRider от Декабрь 17, 2014, 11:20 К сожалению нет, сканы не однотипны, за исключением того, что все картинки прямоугольные и штрих кодов тоже нет.=(
Название: Re: Определение границ прямоугольной област Отправлено: Igors от Декабрь 17, 2014, 11:21 Аттаченный пример картинки повысил бы шансы на ответ. Тут 2 задачи
1) Выделение "фона" одним цветом и фильтрация помех. 2) Сам поворот Первая должна быть в либе, это вещи известные. Вторая - я бы нашел 4 "угловые" точки и привел 4-х угольник к прямоугольнику Название: Re: Определение границ прямоугольной област Отправлено: SunbeamRider от Декабрь 17, 2014, 11:29 Спасибо за совет, что то сразу не подумал, вот картинка до и после. (http://www.imageup.ru/img229/thumb/panorama1982265.jpg)
Название: Re: Определение границ прямоугольной област Отправлено: SunbeamRider от Декабрь 17, 2014, 11:39 Цитировать 1) Выделение "фона" одним цветом и фильтрация помех. Я немного дубовый в графике, что делает фильтрация помех? И где рыть в либе чтобы найти этот функционал? Матрицы?Название: Re: Определение границ прямоугольной област Отправлено: Igors от Декабрь 17, 2014, 11:52 Цитировать 1) Выделение "фона" одним цветом и фильтрация помех. Я немного дубовый в графике, что делает фильтрация помех? И где рыть в либе чтобы найти этот функционал? Матрицы?Название: Re: Определение границ прямоугольной област Отправлено: SunbeamRider от Декабрь 17, 2014, 11:58 Цитировать Дайте ссылку на доку Вашей либы, подберем. Вот ссылка на класс который я юзаю. http://qt-project.org/doc/qt-4.8/qimage.html (http://qt-project.org/doc/qt-4.8/qimage.html)Название: Re: Определение границ прямоугольной област Отправлено: _OLEGator_ от Декабрь 17, 2014, 14:35 Можно использовать мощность OpenCV для таких целей:
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=houghlines#houghlines http://docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/py_contours/py_contours_begin/py_contours_begin.html Название: Re: Определение границ прямоугольной облас Отправлено: SunbeamRider от Декабрь 17, 2014, 16:15 Цитировать Можно использовать мощность OpenCV для таких целей:]Можно использовать мощность OpenCV для таких целей Спасибо, но мне необходимо по возможности обойтись функционалом qtНазвание: Re: Определение границ прямоугольной област Отправлено: Igors от Декабрь 17, 2014, 16:32 Вот ссылка на класс который я юзаю. http://qt-project.org/doc/qt-4.8/qimage.html (http://qt-project.org/doc/qt-4.8/qimage.html) Ну Вы написали "QGraphics", я думал то какая-то либа :) В QImage этого нет, можно поискать нужный инструментарий (что в данном случае совершенно разумно), можно и самому сделать (дело вкуса). В последнем случае я бы делал так- осреднил бы сначала весь имедж, т.е. каждый пиксель заменил на среднее от 8 соседей (незатейливый фильтр). - прошелся бы по всем граничным пикселям, вычислил их средний цвет и макс отклонение от него (потом бы его немного увеличил) ну и все, теперь можно находить углы Название: Re: Определение границ прямоугольной област Отправлено: SunbeamRider от Декабрь 17, 2014, 16:44 Igors, спасибо, буду пробовать)
|