2014-11-20 3 views
0

Я просто хочу узнать угол поворота между двумя изображениями (одни и те же изображения, но только другое - это вращение), но я застрял в этой проблеме почти 3 недели. Алгоритм, приведенный в http://en.wikipedia.org/wiki/Phase_correlation, использует только метод преобразования радона и фазы, но он не работает. Кто-нибудь может мне помочь?узнать вращение с использованием фазовой корреляции в matlab

+1

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

+0

Вы бы улучшили свои шансы или получили полезную помощь, если бы вы показали код, который у вас есть до сих пор, и объяснили, почему это неудовлетворительно для вас текущая форма. –

+0

Код @CapeCode Я должен поблагодарить вас за помощь –

ответ

0

Как правило, этот вид проблемы решается с помощью алгоритма Фурье-Меллина, реализация Matlab here.

Потенциальный подход - использование логарифмического преобразования перед фазовой корреляцией. Карты логарифмической выборки меняются в равномерном масштабировании и повороте на сдвиги вдоль радиальной и окружной осей. Смотрите полное описание алгоритма в данной статье:

Reddy, BS и Чаттерджи, BN, БПФ-Based Техник для перевода, вращения и масштабно-инвариантной Регистрация изображения, IEEE Операции по обработке изображений, том 5, № 8, август 1996

Если у вас есть обработки изображений панели инструментов r2014a или более поздней версии, есть встроенная функция, которая делает именно то, что он называется imregcorr

Если у вас нет toolbox, вы можете download the function to map an image in polar coordinates (для чистых поворотов). Для масштаба и вращения here представляет собой реализацию лог-полярного преобразования.

Смежные вопросы