Log-Polar DFT Berbasis Skala-Invarian Gambar Pendaftaran

10

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:

Terjemahan saja berfungsi

Untuk log-polar transform, saya pertama kali berubah menjadi ruang

I^(ρ,θ)=I(r+ρcos(2πθNθ),rρsin(2πθNθ))
IrNθθ
I^log(ρ,θ)=I^(logb(ρ),θ)
b=(2r)Nρ1 sehingga itu mencakup seluruh ruang kutub.

ρ=θ=256

Log Polar

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):

Log Kutub DFT

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.

Drew Cummins
sumber
1
Apakah Anda tahu apa yang salah?
Mr.WorshipMe
1
@ Mr.WorshipMe Sayangnya tidak.
Drew Cummins
@Drew Cummins, saya kira itu karena gambar uji yang Anda gunakan, karena ada transisi tajam dari latar belakang. Bagaimana dengan gambar uji lainnya? Juga, dari gambar terakhir, ada perbedaan yang jelas antara dua magnitudo, sehingga lebih baik untuk melakukan preforming windowing yang tepat sebelum DFT.
lxg
Beberapa hari sebelumnya saya menemukan makalah itu dan saya sudah berusaha mengimplementasikan algoritma tersebut tanpa hasil. Saya ingin tahu apakah Anda dapat membagikan implementasi Anda kepada seorang pemula :)
Alexis España

Jawaban:

1

Jika Anda menginginkan sesuatu yang benar-benar kuat, tetapi itu mungkin lebih mahal secara komputasi, Anda mungkin ingin memeriksa algoritma yang saya terapkan di sini . Ini mengimplementasikan makalah, "Pendaftaran Gambar Robust Menggunakan Log-Polar Transform" ( pdf ). Ini juga memiliki keuntungan menjadi rotasi-invarian, selain terjemahan dan skala invarian. Dalam aplikasi saya (seni), itu mampu mendaftarkan bahkan gambar yang tampak serupa, tidak hanya mengubah versi gambar yang sama.

pengguna2348114
sumber
0

Saya kira itu karena masalah implementasi yang spesifik. Sebagai contoh, (1) lebih baik untuk melakukan pra-pemrosesan windowing sebelum DFT; (2) Anda dapat memeriksa fungsi Highpass (), dan Anda dapat merujuk pada yang ada di kertas Reddy Chatterji Persamaan (23) - (24). Juga, ada batas untuk nilai skala, dan Anda dapat mencoba nilai skala lainnya.

lxg
sumber