gladov 0 18 февраля, 2009 Опубликовано 18 февраля, 2009 · Жалоба Здравствуйте! Сразу оговорюсь, что ранее обработкой изображений никогда не занимался, поэтому опишу вопрос максимально подробно. Заранее прошу прощения за излишнюю многословность :) Основная задача: найти фрагмент изображения на картинке. Фрагмент заранее известен, не меняется, и всегда присутствует на основной картинке. Он не вращается и не масштабируется. Время выполнения не сильно критично. Для решения поставленной задачи пошел "в лоб": делаю свертку основного изображения и искомого ядра (а если точнее, то не свертку, я корреляцию, т.к. ядро перед вычислением не переворачиваю), причем не через БПФ, а "по определению" через сумму произведений. Ядро размером 50х50. Знаю, что быстрее было бы делать БПФ, но решил попробовать написать наиболее простой вариант. Как делал. Ядро и картинку привожу в greyscale по байту на пиксел. 255 - максимальное значение. Делаю свертку искомого шаблона с ядром 3х3 (центр 8, остальные -1) для выделения контуров. Свертка делается обычными вложенными циклами с последющей проверкой на вылет в отрицательный диапазон. Все отрицательные цисла заменяю на 0. Далее ищу максимум по ВСЕМ пикселям результата и делаю нормировку каждого пикселя: val = val / max * 255; Полученное ядро аналогичным образом "сворачиваю" с основной картинкой и опять нормирую до 255. Результат. В тех местах, где искомые шаблоны действительно присутствуют, я вижу "пики" с ярко выраженным центральным пикселем амплитуды порядка 200ед. Ближайшие к пику точки около 160ед. Все как учили. Внимание, вопрос! Очень смущает, что если на исходной картинке присутствуют большие (больше ядра) области, залитые белым (ну или почти белым), то и после свертки с ядром эти области так и остаются белыми (ну ессно размытыми). Причем уровень белого максимальный!!! Как же мне теперь искать ту самую точку "пика", которая "однозначно" должна говорить о вхождении шаблона в картинку в данной точке, если у меня есть целые области, залитые белым и при том не содержащие искомого шаблона??? Что я не так делаю??? Я думал, что после свертки вся картинка будет достаточно темная и светлые места будут ТОЛЬКО там, где картинка содержит шаблон Может у меня где-то идеологическая ошибка? Или все правильно и свертка действительно "не ищет" в светлых областях темные шаблоны? Или все правильно и я должен искать именно "пики" а на области не обращать внимания??? И как быть с тем, что "высота" правильного "пика" получается меньше чем высота обманного "плато"? test.bmp kernel.bmp kernel_edge.bmp conv.bmp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 18 февраля, 2009 Опубликовано 18 февраля, 2009 · Жалоба Это от того что у Вас ноль смещён, попробуйте для начала только шаблон поиска сместить так, чтобы сумма всех его элементов была равна нулю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gladov 0 19 февраля, 2009 Опубликовано 19 февраля, 2009 · Жалоба Это от того что у Вас ноль смещён, попробуйте для начала только шаблон поиска сместить так, чтобы сумма всех его элементов была равна нулю. Спасибо огромное!!! После смещения на медиану все заработало как часы! Единственный пик на картинке, независимо от расцветки. Остальное почти черное. :beer: conv.bmp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Transsformator 0 29 ноября, 2010 Опубликовано 29 ноября, 2010 · Жалоба Случайно нашёл в Яндексе этот пост, когда искал информацию по той же проблеме. Только мне необходимо искать одинаковые участки сигнала в сонограмме, по сути очень похожая задача. Нельзя ли пожалуйста посмотреть код?) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gladov 0 13 мая, 2011 Опубликовано 13 мая, 2011 · Жалоба Случайно нашёл в Яндексе этот пост, когда искал информацию по той же проблеме. Только мне необходимо искать одинаковые участки сигнала в сонограмме, по сути очень похожая задача. Нельзя ли пожалуйста посмотреть код?) Можно. Смотрите... FindRegion.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться