Saya mencoba melakukan registrasi gambar menggunakan korelasi fase seperti yang dijelaskan dalam makalah Reddy Chatterji . Dalam kasus saya, gambar dapat diskalakan dan diterjemahkan relatif satu sama lain.
Algoritma untuk menemukan skala relatif, seperti yang saya pahami, adalah (lihat: diagram alur dari makalah ):
F1 = DFT(I1)
F2 = DFT(I2)
H1 = Highpass(F1)
H2 = Highpass(F2)
L1 = LogPolar(Magnitude(H1))
L2 = LogPolar(Magnitude(H2))
PC = PhaseCorrelate(L1,L2)
PM = norm(PC)
R = IDFT(PhaseCorr/PM)
P = Peak(R)
Scale = LogBase^P[1]
Skala memberi saya nilai yang tampaknya tidak masuk akal (sangat berbeda dari gambar ke gambar dan tidak pernah benar).
Tetapi mengabaikan skala, pendekatan korelasi fase yang sama berfungsi dengan baik untuk terjemahan; jadi saya curiga ada masalah dengan transformasi log-polar saya. Berikut ini adalah contoh, di mana saya telah menyelesaikan terjemahan - gambar kiri adalah asli dan kanan telah dipotong dan diterjemahkan - solusinya ditampilkan di atas orignal:
Untuk log-polar transform, saya pertama kali berubah menjadi ruang
Terakhir, ini menunjukkan transformasi aktual yang dilalui gambar sebelum langkah korelasi fase (atas adalah DFT magnitude post highpass filter, dasarnya adalah dalam ruang log kutub):
Saya menggunakan OpenCV, yang memiliki metode LogPolar dan PhaseCorrelate. Sementara PhaseCorrelate, seperti implementasi manual saya, memberi saya jawaban yang benar untuk terjemahan, itu salah dalam skala. Karena menggunakan OpenCV LogPolar atau milik saya sendiri tidak memengaruhi kebenaran, saya pasti melewatkan sesuatu.
Bantuan apa pun akan dihargai.