Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Выделение частей изображения |
Автор: Ground 1.2.2011, 06:00 |
Добрый день! Появилась необходимость распознавания картинок. Имеется: большое изображение с фотоаппарата - 12Мпкс, 4200х2800; малое - 40х40 (пример во вложении, малое изображение для поиска - мишень). Необходимо определить все вхождения малого изображения в большое. Сложности - шум, неоднородный фон, плюс небольшие искажения малого изображения, плюс необходима высокая точность. В этой области мои знания стремятся к 0, хотелось бы услышать какой-нибудь совет, куда копать? Может фильтр какой применить, увеличить контрастность (белые области выделить), а после уже в них искать? |
Автор: Earnest 1.2.2011, 08:28 |
Если все вхождения искомого изображения имеют примерно одинаковый размер и ориентацию, можно попробовать корреляцию: т.е. фильтрацию (свертку) полного изображения с маской (искомое изображение). Где отклик превышает некоторый порог, там цель... Есть масса тонкостей, но в целом как-то так. |
Автор: _Y_ 1.2.2011, 11:16 |
http://forum.vingrad.ru/index.php?showtopic=314777&view=findpost&p=2246148 В книге глава 4.3. |
Автор: Ground 2.2.2011, 06:17 |
_Y_, благодарю за книгу! Earnest, можно поподробнее? Исходное изображение и маска в grayscale, просчитываю каждый пиксель (область) с этой маской, получается изображение, на котором можно выделить максимумы, но они будут локальными (прикрепленный файл). Нашел человека с похожей http://electronix.ru/forum/index.php?showtopic=59466 (советуют корректировать маску для поиска). Пытался корректировать яркость каждого пикселя маски на среднее значение, на медиану. И если для одного образца работает такой способ, максимумы более-менее выделяются на черном фоне, то для другого получается просто сплошной черный фон. Где-то закралась ошибка, или тут есть нюансы? |
Автор: dereyly 2.2.2011, 11:58 |
Обычно поисковые маски для свертки должны иметь нулевую энергию, т.е. вы можете элементы на маске представить значениями -1 и 1, затем посчитать сумму для -1 и 1 раздельно и скорректировать, к примеру до -0.76 и 1. Маску лучше сделать в пейнте, чем бинаризацией исходного куска изображения. PS: Могу написать матлаб-код, если интересно. |
Автор: Earnest 2.2.2011, 13:39 |
То, что вы описываете как раз и получиться, если из маски вычесть среднюю яркость. Зачем же при этом раздельно +1 и -1 складывать? Заранее маски можно сделать, когда они фиксированы. Хоть в пэйнте, хоть в нотепаде ![]() Но может стоять задача создавать поисковые маски в диалоге с пользователем. |
Автор: dereyly 2.2.2011, 17:57 | ||
Да вы правы. |