![]() |
|
|
![]()
|
|
| ruslan777 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.7.2012 Репутация: нет Всего: нет |
Добрый день. Столкнулся с проблемой определения пространственного поворота изображения с текстом. Если текст повернут в плоскости изображения (плоскость xy, а поворот относительно оси z, 1.jpg), то задачу я решил при помощи преобразований Хафа (работает в 99% случаев), но если изображение повернуто оносительно оси х или у (примеры на рисунках 2.jpg и 3.jpg), то у меня пока не получилось придумать толкового алгоритма для детектирования такого поворота. Перекопал кучу информации по даной тематике в интернете, но стабильного алгоритма пока разработать не получилось. Поэтому обращаюсь за помощью к форумчанам. Возможно кому-то приходилось работать с текстовыми изображениями и есть опыт разработки подобных алгоритмов. За любую информацию по даному вопросу буду очень благодарен. Не прошу предоставить мне готовое решение, просто елси есть идеи в каком направлении нужно копать, то поделитесь ими, пожалуйста. Чтобы более понятна была задача поставлю ее так: есть массив байтов изображения (rgb или в оттенках серого) и мне нужно детектировать завалено ли изображение, например, относительно оси х (по у будет аналогично) и на выходе получить ответ типа: завалено сверху, завалено снизу или стоит ровно. Пробовал разбивать изображение на две половинки и сравнивать среднюю интенивно каждой, но результат это не дало. Также пробовал использовать различные фильтры для размытия изображения и определения границ листа, но результата тоже нет. В идеале было б найти координаты 4-ех вершин листа, но пока не знаю как это сделать (задача существенно усложняеться, если фотографировать на белом фоне).
Присоединённый файл ( Кол-во скачиваний: 4 )
1.jpg 35,09 Kb |
|||
|
||||
| ruslan777 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.7.2012 Репутация: нет Всего: нет |
||||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
можно попробовать найти строки текста
а по ним - параметры преобразования тут есть некоторая информация о преобразовании с перспективой: http://en.wikipedia.org/wiki/Texture_mappi...ive_correctness -------------------- qqq |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Может, сначала белый лист- четырехугольник расправить до прямоугольника, как он должен быть? Это должно выпрямить и текст. Кстати, то же самое можно сделать и с повернутым в плоскости xy без всякого Хафа. Преобразование выполняется по 4 точкам - билинейное или проективное или просто 2 аффинных ( по 2 треугольникам).
Добавлено через 1 минуту и 51 секунду Гм, не дочитала, оказывается, эта мысль у автора была. Но не понимаю, почему не получилось найти границы белого листа - там же контраст хороший... -------------------- ... |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
||||
|
||||
| ruslan777 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.7.2012 Репутация: нет Всего: нет |
Из строками игрался долго, алгоритм взял вот тут: http://mechanoid.kiev.ua/programming-text-...egmentator.html, но из-за излишних шумов этот алгоритм достаточно часто определяет строку там, где ее нет (зачустую сверху и снизу изображения выскакивает по несколько "неправильных" строк). А за ссылку спасибо, реально полезная информация, которую в будущем может использую, хотя пока стоит задача только детектирования поворотов, а не их исправлений. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
||||
|
||||
| ruslan777 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.7.2012 Репутация: нет Всего: нет |
у меня стоит задача найти границы не конкретно этого листа, а в общем случае и причем без помощи пользователя. Тоесть при каких-то одних настройках всех параметров программа должна выдавать правильный результат, например в 95% случаев. Могу привести пример изображения где границы листа определить очень сложно: ![]() вот один с примеров использования фильтра віделение краев: ![]() а вот использование алгоритма выделения текста (границы листа, если фон контрастен, он тоже определяет у меня как текст): |
|||
|
||||
| ruslan777 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.7.2012 Репутация: нет Всего: нет |
А это как? И еще хотел спросить какой алгоритм определения строк, если они не горизонтальны? Мой алгоритм работает только с горизонтальными строками, и видит только линию строки, а не координаты ее концов. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
||||
|
||||
| ruslan777 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.7.2012 Репутация: нет Всего: нет |
Преобразования Хафа хорошо работают, когда проверяемая область (окно) находиться в центре картинки, и в даном случае угол направления строк текста получаеться достаточно правдоподобныюм. Если же окно сместить вверх или вниз, то результат получаеться положительным через раз (особенно велика вероятность ошибки, если текст имеет таблицы или рисунки). С таких результатов тужело что-то вытянуть.
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |