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

 
 
 
Reply to this topicStart new topic
> Поиск фрагмента изображения, вопросы по свертке
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
SSerge
сообщение Feb 18 2009, 15:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 718
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Это от того что у Вас ноль смещён, попробуйте для начала только шаблон поиска сместить так, чтобы сумма всех его элементов была равна нулю.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
gladov
сообщение Feb 19 2009, 08:29
Сообщение #3


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

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



Цитата(SSerge @ Feb 18 2009, 18:56) *
Это от того что у Вас ноль смещён, попробуйте для начала только шаблон поиска сместить так, чтобы сумма всех его элементов была равна нулю.


Спасибо огромное!!! После смещения на медиану все заработало как часы! Единственный пик на картинке, независимо от расцветки. Остальное почти черное.
beer.gif
Прикрепленные файлы
Прикрепленный файл  conv.bmp ( 180.24 килобайт ) Кол-во скачиваний: 308
 
Go to the top of the page
 
+Quote Post
Transsformator
сообщение Nov 29 2010, 16:31
Сообщение #4





Группа: Новичок
Сообщений: 1
Регистрация: 29-11-10
Пользователь №: 61 258



Случайно нашёл в Яндексе этот пост, когда искал информацию по той же проблеме. Только мне необходимо искать одинаковые участки сигнала в сонограмме, по сути очень похожая задача.
Нельзя ли пожалуйста посмотреть код?)
Go to the top of the page
 
+Quote Post
gladov
сообщение May 13 2011, 04:24
Сообщение #5


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

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



Цитата(Transsformator @ Nov 29 2010, 20:31) *
Случайно нашёл в Яндексе этот пост, когда искал информацию по той же проблеме. Только мне необходимо искать одинаковые участки сигнала в сонограмме, по сути очень похожая задача.
Нельзя ли пожалуйста посмотреть код?)


Можно. Смотрите...
Прикрепленные файлы
Прикрепленный файл  FindRegion.zip ( 7.57 килобайт ) Кол-во скачиваний: 296
 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 17th August 2018 - 14:17
Рейтинг@Mail.ru


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