Я пишу программу на C ++ с OpenCv, которая должна найти фазовая корреляция Матрица между двумя изображениями и найти все пики, присутствующие выше порога отклика. Я нашел функцию с именем phaseCorrRes (), но она возвращает только самый высокий пик, используя minMaxLoc (). Как мне изменить эту функцию, чтобы восстановить все пики?
Я думаю, что вы должны использовать другой способ решения вашей проблемы, если эта функция вам не подходит. Я рекомендую вам следующие шаги:
Для этого вам нужно:
dft()
phase()
matchTemplate()
с method = CV_TM_CCORR_NORMED
threshold()
с type = THRESH_TOZERO
Надеюсь, это поможет вам.
Лучше всего следовать последовательности, как указано в phaseCorrRes (). мы можем просто добавить еще два шага после выполнения FFTShift (), которые являются нормализацией и порогом. Теперь, если мы просто изменим пиксели вблизи и на каждом пике, извлеченном с помощью minMaxLoc (), на 0 (т.е. черный), мы можем итеративно найти все пики с помощью minMaxLoc (). Однако просто измените функцию, создав копию функции в программе, а не в исходном коде.