![]() |
|
![]() ![]() ![]() |
|
Ground |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 321 Регистрация: 27.2.2006 Где: Комсомольск Репутация: нет Всего: 1 |
Добрый день!
Появилась необходимость распознавания картинок. Имеется: большое изображение с фотоаппарата - 12Мпкс, 4200х2800; малое - 40х40 (пример во вложении, малое изображение для поиска - мишень). Необходимо определить все вхождения малого изображения в большое. Сложности - шум, неоднородный фон, плюс небольшие искажения малого изображения, плюс необходима высокая точность. В этой области мои знания стремятся к 0, хотелось бы услышать какой-нибудь совет, куда копать? Может фильтр какой применить, увеличить контрастность (белые области выделить), а после уже в них искать? Присоединённый файл ( Кол-во скачиваний: 20 ) ![]() |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Если все вхождения искомого изображения имеют примерно одинаковый размер и ориентацию, можно попробовать корреляцию: т.е. фильтрацию (свертку) полного изображения с маской (искомое изображение). Где отклик превышает некоторый порог, там цель... Есть масса тонкостей, но в целом как-то так.
-------------------- ... |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Вот здесь я давал ссылку на книгу В книге глава 4.3.
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Ground |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 321 Регистрация: 27.2.2006 Где: Комсомольск Репутация: нет Всего: 1 |
_Y_, благодарю за книгу!
Earnest, можно поподробнее? Исходное изображение и маска в grayscale, просчитываю каждый пиксель (область) с этой маской, получается изображение, на котором можно выделить максимумы, но они будут локальными (прикрепленный файл). Нашел человека с похожей проблемой (советуют корректировать маску для поиска). Пытался корректировать яркость каждого пикселя маски на среднее значение, на медиану. И если для одного образца работает такой способ, максимумы более-менее выделяются на черном фоне, то для другого получается просто сплошной черный фон. Где-то закралась ошибка, или тут есть нюансы? Присоединённый файл ( Кол-во скачиваний: 12 ) ![]() |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Ну, разумеется, нужно обязательно вычитать среднее значение и из маски и из растра под маской (при каждом наложении), иначе залитые области будут давать большой отклик. Только почему медиану-то, это совсем не то, что среднее - не даст нормализации. Маску можно скорректировать сразу, а для вычитания средней яркости растра под маской можно формулу прописать (там получается, что нужно из свертки доп. член вычесть - свертка-то линейна). Еще маску можно бинаризовать, если суть позволяет - т.е. черные пикселы на белом фоне или наоборот. Или 3 цвета максимально удаленных - в общем, контраст максимальный. Максимумы, конечно, получатся локальные и размазанные, а не дельты. Это понятно - стоит представить, что изображение чуть шире маски и уже отклик размазывается. Наверное, можно придумать много способов. Мне пришло в голову только усреднение, можно с весом (размер отклика). Вроде неплохо получается. Но результат зависит, конечно, от маски и от исходного изображения.
Наверняка, что-то не так со средним. Представьте, вы не вычитаете среднее из растра под маской и накладываете маску-крест на сплошной залитый квадрат. Отклик будет такой-же, как при совпадении... Поэтому и надо вычитать среднюю яркость. Потом, еще могут быть нюансы, если считаете все в целых положительных байтах. Короче, берите калькулятор и проверяйте... -------------------- ... |
|||
|
||||
dereyly |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
Обычно поисковые маски для свертки должны иметь нулевую энергию, т.е. вы можете элементы на маске представить значениями -1 и 1, затем посчитать сумму для -1 и 1 раздельно и скорректировать, к примеру до -0.76 и 1. Маску лучше сделать в пейнте, чем бинаризацией исходного куска изображения.
PS: Могу написать матлаб-код, если интересно. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
То, что вы описываете как раз и получиться, если из маски вычесть среднюю яркость. Зачем же при этом раздельно +1 и -1 складывать?
Заранее маски можно сделать, когда они фиксированы. Хоть в пэйнте, хоть в нотепаде ![]() Но может стоять задача создавать поисковые маски в диалоге с пользователем. -------------------- ... |
|||
|
||||
dereyly |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
Да вы правы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |