Сравнение точки пересечения между двумя изображениями в MATLAB

Я сделал 2 изображения с точкой пересечения, и теперь я пытаюсь сравнить эти 2 изображения и выяснить, на какое расстояние и угол перемещены. Как я могу использовать MATLAB для этого? Большое тебе спасибо!

Pic3Pic2


person Veronica    schedule 29.10.2009    source источник
comment
Не могли бы вы загрузить изображения? Вы пытаетесь найти положение точки пересечения на обоих изображениях?   -  person Jacob    schedule 29.10.2009
comment
flickr.com/photos/32507451@N08/4054392111 flickr.com/photos/32507451@N08/4055134756 Здравствуйте, 2 изображения здесь. Я пытаюсь найти положение, а также насколько точка пересечения сместилась на Рис. 3 по сравнению с Рис. 2. Спасибо!   -  person Veronica    schedule 29.10.2009
comment
У вас всегда есть эта перекрестная цель, или у вас будет что-то еще, что вам нужно сопоставить?   -  person endolith    schedule 10.11.2009


Ответы (3)


Выравнивание двух изображений одной и той же сцены вызывается регистрация изображения. Если у вас есть доступ к Image Processing Toolbox, вы можете найти там ряд функции помочь вам .

Взгляните на эти демонстрации регистрации изображений.

person Amro    schedule 29.10.2009
comment
Здравствуйте, я могу получить изменение угла, но не могу получить перевод x и y. Спасибо. - person Veronica; 29.10.2009
comment
возможно, если вы обновите свой вопрос, чтобы показать нам, что вы сделали до сих пор, мы могли бы помочь... - person Amro; 30.10.2009
comment
Кстати, если вы изменили преобразование вращения, вы можете найти перевод, используя метод взаимной корреляции (посмотрите третий пример) - person Amro; 30.10.2009
comment
Взаимная корреляция будет работать только в том случае, если два изображения повернуты на один и тот же угол. - person endolith; 10.11.2009
comment
правда, я предложил это только потому, что ОП упомянул, что решил проблему вращения - person Amro; 10.11.2009

Если эти черные линии всегда есть на изображениях и они почти идеально прямые (не превращаются в кривые), лучшим методом будет использование Преобразование Хафа или Преобразование Радона (вид различных способов думать о том, чтобы сделать одно и то же), чтобы найти только две черные линии, а затем сравнить их положение.

Сначала вы инвертируете изображения, чтобы линии были ярко-белыми (большие значения), а затем выполняете преобразование Хафа. На выходе для каждого изображения будут две яркие белые точки, по которым можно делать пиковое обнаружение. Координата каждого пика сообщает вам угол и смещение линии.

Я не делал этого в MATLAB, но вижу ряд примеров и документации:

person endolith    schedule 09.11.2009
comment
Интересная идея. Кстати, зачем публиковать два ответа, просто отредактируйте первый и добавьте второй в качестве альтернативного решения... - person Amro; 10.11.2009
comment
Чтобы люди могли голосовать за то, какой из них лучше, оставлять комментарии, относящиеся только к одному, и т. д. Разве не в этом смысл сайта? - person endolith; 10.11.2009

Взаимная корреляция (Википедия называет ее фазовой корреляцией) не будет работать, если изображения повернуты. Однако существует связанный метод, основанный на логарифмически-полярных координатах это будет работать независимо от поворота, масштаба, сдвига и перемещения.

Этот метод будет лучшим, если вам нужно сопоставить любые произвольные изображения. Сопоставление известных форм или темных линий лучше выполнять другими методами.

person endolith    schedule 09.11.2009