Перейти к содержимому
Compvision.ru
Kseniya

Поиск похожих изображений

Recommended Posts

Всем доброго времени суток!

Возникла следующая задача: необходимо произвести сравнение изображения с "образцом" и поиск похожих изображений.

Основным критерием, по которому даётся заключение о "схожести", является РАКУРС объекта, находящегося на изображении. То есть, если на двух изображениях один и тот же объект находится под различными ракурсами, то заключение - "не похож, другой". При этом цветовая гамма не имеет значения: если два объекта сняты под одним и тем же ракурсом, они "похожи" независимо ни от чего.

Изучая тему Image Processing, пришла к выводу, что оптимальным вариантом было бы находить контур объекта, на его основе создавать дескриптор объекта и, таким образом, сопоставлять объекты и находить похожие.

Собственно, вопрос: что бы вы применили для решения данной задачи (мат. аппарат, фильтры). Возможно, есть open-source библиотеки обработки изображений на Java (пока что имела дело с BoofCV и JAI; BoofCV "заточен" под алгоритм SURF (поиск особых точек), что обеспечивает инвариантность к трансформациям, а этого как раз и не нужно. С помощью JAI реализовала поиск цветного контура и получение RGB-гистограммы, но пока не вижу, как применить это к задаче, разве что в качестве дескриптора)

Жду ваших предложений =)

Ксюша))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что Вы подразумеваете под ракурсом?

Если это угол, под которым наблюдается объект, то он зависит от локальной системы координат объекта.

Если объекты разные, то как сопоставлять их локальные системы координат?

Можно, конечно, держать в памяти трехмерные модели всех встречающихся на изображениях объектов и ориентироваться на их локальные СК. Тогда надо гуглить в сторону "3d model alignment".

Вот одна из ссылок: http://graphics.csie.ntu.edu.tw/media/publications/Chen-2002-MAR.pdf

ЗЫ: Нехилая предстоит математика... :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо))

Да, ракурс - это угол, под которым наблюдается объект. Если объекты разные, то ответ алгоритма - "не похожи", т.е., системы координат разных объектов сопоставлять не придётся. Поэтому, думаю, решение должно быть простым.

К мысли о сопоставлении контуров я пришла, т.к. изменение ракурса съёмки ведет к изменению проекции объекта, и, как следствие, к изменению контура. Вот только вопрос, как обучить машину сравнивать контуры?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так, например:

http://www.compvision.ru/forum/index.php?showtopic=6

Поворот проверять вычисляя моменты контура, по ним можно полуоси эллипса найти, он там кстати ищется:

double theta=(atan2(2*M11,(M02-M20))/2)*(180/M_PI);

только квадранты могут скакать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо! Думаю, это - то, что надо! На днях займусь разбором кода)) Я пока не работала с OpenCV, но, насколько мне известно, есть реализация этого API на Java? Надеюсь, она соответствует "оригинальной"...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для Java есть, только я их не тестировал, по качеству сказать ничего не могу.

Вот, например:

http://code.google.com/p/javacv/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×