Russian Qt Forum
Ноябрь 22, 2024, 18:35
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Определение границ прямоугольной област
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Определение границ прямоугольной област (Прочитано 6848 раз)
SunbeamRider
Гость
Определение границ прямоугольной област
«
:
Декабрь 17, 2014, 10:44 »
Привет.
В общем задача у меня такая стоит: Есть куча отсканированных изображений
(.JPG)
некоего куска бумаги, предположим это какая нибудь этикетка или билетик, причем прямоугольная. отсканирована неровно ( то бишь стороны не параллельны сторонам монитора ), и задача моей проги состоит в том чтобы выравнивать эти изображения и затем обрезать строго по границе картинки. В рукопашную это сделать не составило труда, я использовал фреймворк QGraphics, кинул на сцену изображение, сделал инструменты автоматического поворота, ( но при этом пользователь должен сам определить границу этикетки и провести линию вдоль нее ) и после поворота обрезать не сложно. И вот подошел момент когда нужно все это
автоматизировать
, то есть программно определять границы этого клятого билетика(этикетки), поворачивать его и выделять область обрезания. Проблема состоит в том, что границы (и сама картинка)отнюдь не однородные, и даже не четкие. У меня вертелись какие то мысли насчсет таблицы цветов, получения количественного показателя каждого цвета, усреднения этого значения и тп. Но до конкретного чего то дойти не выходит, плюс к тому не очень хорошо знаком с инструментами библиотеки. Вот собственно и вопрос: возможно у кого то был опыт с задачами такого рода или есть мысли по реализации алгоритма, буду безмерно благодарен.
«
Последнее редактирование: Декабрь 17, 2014, 12:46 от SunbeamRider
»
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Определение границ прямоугольной област
«
Ответ #1 :
Декабрь 17, 2014, 11:10 »
Если сканы однотипны и есть штрихкод, может, его как-то использовать для выравнивания относительно краев экрана?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Определение границ прямоугольной облас
«
Ответ #2 :
Декабрь 17, 2014, 11:19 »
По графике не помогу, но советую тебе приложить штуки 3 изображения к теме - людям будет проще тебе помочь.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
SunbeamRider
Гость
Re: Определение границ прямоугольной област
«
Ответ #3 :
Декабрь 17, 2014, 11:20 »
К сожалению нет, сканы не однотипны, за исключением того, что все картинки прямоугольные и штрих кодов тоже нет.=(
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Определение границ прямоугольной област
«
Ответ #4 :
Декабрь 17, 2014, 11:21 »
Аттаченный пример картинки повысил бы шансы на ответ. Тут 2 задачи
1) Выделение "фона" одним цветом и фильтрация помех.
2) Сам поворот
Первая должна быть в либе, это вещи известные. Вторая - я бы нашел 4 "угловые" точки и привел 4-х угольник к прямоугольнику
Записан
SunbeamRider
Гость
Re: Определение границ прямоугольной област
«
Ответ #5 :
Декабрь 17, 2014, 11:29 »
Спасибо за совет, что то сразу не подумал, вот картинка до и после.
Записан
SunbeamRider
Гость
Re: Определение границ прямоугольной област
«
Ответ #6 :
Декабрь 17, 2014, 11:39 »
Цитировать
1) Выделение "фона" одним цветом и фильтрация помех.
Я немного дубовый в графике, что делает фильтрация помех? И где рыть в либе чтобы найти этот функционал? Матрицы?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Определение границ прямоугольной област
«
Ответ #7 :
Декабрь 17, 2014, 11:52 »
Цитата: SunbeamRider от Декабрь 17, 2014, 11:39
Цитировать
1) Выделение "фона" одним цветом и фильтрация помех.
Я немного дубовый в графике, что делает фильтрация помех? И где рыть в либе чтобы найти этот функционал? Матрицы?
Нет. Напр где-то на краю нашлась точка с цветом сильно отличающимся от фонового. Без фильтра она будет схвачена как "начало изображения", а фильтр ее уберет. Дайте ссылку на доку Вашей либы, подберем.
Записан
SunbeamRider
Гость
Re: Определение границ прямоугольной област
«
Ответ #8 :
Декабрь 17, 2014, 11:58 »
Цитировать
Дайте ссылку на доку Вашей либы, подберем.
Вот ссылка на класс который я юзаю.
http://qt-project.org/doc/qt-4.8/qimage.html
Записан
_OLEGator_
Гость
Re: Определение границ прямоугольной област
«
Ответ #9 :
Декабрь 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
«
Последнее редактирование: Декабрь 17, 2014, 14:40 от _OLEGator_
»
Записан
SunbeamRider
Гость
Re: Определение границ прямоугольной облас
«
Ответ #10 :
Декабрь 17, 2014, 16:15 »
Цитировать
Можно использовать мощность OpenCV для таких целей:]Можно использовать мощность OpenCV для таких целей
Спасибо, но мне необходимо по возможности обойтись функционалом qt
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Определение границ прямоугольной област
«
Ответ #11 :
Декабрь 17, 2014, 16:32 »
Цитата: SunbeamRider от Декабрь 17, 2014, 11:58
Вот ссылка на класс который я юзаю.
http://qt-project.org/doc/qt-4.8/qimage.html
Ну Вы написали "QGraphics", я думал то какая-то либа
В QImage этого нет, можно поискать нужный инструментарий (что в данном случае совершенно разумно), можно и самому сделать (дело вкуса). В последнем случае я бы делал так
- осреднил бы сначала весь имедж, т.е. каждый пиксель заменил на среднее от 8 соседей (незатейливый фильтр).
- прошелся бы по всем граничным пикселям, вычислил их средний цвет и макс отклонение от него (потом бы его немного увеличил)
ну и все, теперь можно находить углы
Записан
SunbeamRider
Гость
Re: Определение границ прямоугольной област
«
Ответ #12 :
Декабрь 17, 2014, 16:44 »
Igors, спасибо, буду пробовать)
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...