реклама на сайте
подробности

 
 
> Поиск фрагмента изображения, вопросы по свертке
gladov
сообщение Feb 18 2009, 10:15
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 169
Регистрация: 10-11-05
Из: Воронеж
Пользователь №: 10 687



Здравствуйте!

Сразу оговорюсь, что ранее обработкой изображений никогда не занимался, поэтому опишу вопрос максимально подробно. Заранее прошу прощения за излишнюю многословность smile.gif

Основная задача: найти фрагмент изображения на картинке. Фрагмент заранее известен, не меняется, и всегда присутствует на основной картинке. Он не вращается и не масштабируется. Время выполнения не сильно критично.
Для решения поставленной задачи пошел "в лоб": делаю свертку основного изображения и искомого ядра (а если точнее, то не свертку, я корреляцию, т.к. ядро перед вычислением не переворачиваю), причем не через БПФ, а "по определению" через сумму произведений. Ядро размером 50х50. Знаю, что быстрее было бы делать БПФ, но решил попробовать написать наиболее простой вариант.
Как делал. Ядро и картинку привожу в greyscale по байту на пиксел. 255 - максимальное значение. Делаю свертку искомого шаблона с ядром 3х3 (центр 8, остальные -1) для выделения контуров. Свертка делается обычными вложенными циклами с последющей проверкой на вылет в отрицательный диапазон. Все отрицательные цисла заменяю на 0. Далее ищу максимум по ВСЕМ пикселям результата и делаю нормировку каждого пикселя: val = val / max * 255;
Полученное ядро аналогичным образом "сворачиваю" с основной картинкой и опять нормирую до 255.
Результат.
В тех местах, где искомые шаблоны действительно присутствуют, я вижу "пики" с ярко выраженным центральным пикселем амплитуды порядка 200ед. Ближайшие к пику точки около 160ед. Все как учили.
Внимание, вопрос! Очень смущает, что если на исходной картинке присутствуют большие (больше ядра) области, залитые белым (ну или почти белым), то и после свертки с ядром эти области так и остаются белыми (ну ессно размытыми). Причем уровень белого максимальный!!!
Как же мне теперь искать ту самую точку "пика", которая "однозначно" должна говорить о вхождении шаблона в картинку в данной точке, если у меня есть целые области, залитые белым и при том не содержащие искомого шаблона???
Что я не так делаю??? Я думал, что после свертки вся картинка будет достаточно темная и светлые места будут ТОЛЬКО там, где картинка содержит шаблон
Может у меня где-то идеологическая ошибка? Или все правильно и свертка действительно "не ищет" в светлых областях темные шаблоны? Или все правильно и я должен искать именно "пики" а на области не обращать внимания??? И как быть с тем, что "высота" правильного "пика" получается меньше чем высота обманного "плато"?
Прикрепленные файлы
Прикрепленный файл  test.bmp ( 263.72 килобайт ) Кол-во скачиваний: 354
Прикрепленный файл  kernel.bmp ( 7.97 килобайт ) Кол-во скачиваний: 308
Прикрепленный файл  kernel_edge.bmp ( 7.97 килобайт ) Кол-во скачиваний: 264
Прикрепленный файл  conv.bmp ( 263.72 килобайт ) Кол-во скачиваний: 276
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01346 секунд с 7
ELECTRONIX ©2004-2016