Log-Polar DFT Tabanlı Ölçek-Değişmez Görüntü Kaydı


10

Reddy Chatterji gazetesinde anlatıldığı gibi faz korelasyonunu kullanarak görüntü kaydı yapmaya çalışıyorum . Benim durumumda, görüntüler ölçeklenebilir ve birbirine göre çevrilebilir.

Göreceli ölçeği bulma algoritması, anladığım kadarıyla, (bkz: kağıttan akış şeması ):

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]

Ölçek bana görünüşte saçma değerler veriyor (görüntüden görüntüye çılgınca farklı ve asla doğru değil).

Ancak ölçeği göz ardı ederek, aynı faz korelasyon yaklaşımı çeviri için iyi çalışır; bu yüzden log-polar dönüşümümle ilgili bir sorunum olduğundan şüpheleniyorum. Çeviri için çözdüğüm bir örnek - soldaki görüntü orijinal ve sağ kırpılmış ve çevrilmiş - çözüm orignalın üstünde gösterilir:

Yalnız çeviri çalışmaları

Log-polar dönüşümü için önce polar alana dönüştüm: burada orijinal görüntü, olduğu resim yarıçapı (yarım genişlik) ve , yönünde örnek sayısıdır . Daha sonra günlük polar alanına dönüştürmek için örnek alıyorum: burada tarif edildiği gibi 1 bu nedenle bütün polar alan boyunca uzanacak şekilde.

ben^(ρ,θ)=ben(r+ρmarul(2πθN-θ),r-ρgünah(2πθN-θ))
benrN-θθ
ben^lÖg(ρ,θ)=ben^(günlükb(ρ),θ)
b=(2r)-N-ρ

Log-polar alanda ile örnek görüntüler (göze batan yanlış bir şey olması durumunda):ρ=θ=256

Polar Günlüğü

Son olarak, bu, görüntülerin faz korelasyon adımından önce geçtiği gerçek dönüşümü gösterir (üst, DFT büyüklüğünden sonra yüksek geçiş filtresi, alt, günlük polar uzayındadır):

Günlük DFT Polar'ı

LogPolar ve PhaseCorrelate yöntemleri olan OpenCV kullanıyorum. PhaseCorrelate, manuel uygulamam gibi, çeviri için doğru cevabı verirken, bu ölçekte yanlış. OpenCV LogPolar veya kendiminkini kullanmak doğruluğu etkilemediğinden, bir şey eksik olmalıyım.

Herhangi bir yardım mutluluk duyacağız.


1
Neyin yanlış olduğunu anladın mı?
Mr.WorshipMe

1
@ Mr.WorshipMe Maalesef değil.
Drew Cummins

@Çekim Cummins, sanırım kullandığınız test görüntüsünden kaynaklanıyordu, çünkü arka plandan keskin bir geçiş oldu. Diğer test görüntüleri nasıl? Ayrıca, son şekilde, iki büyüklük arasında belirgin farklılıklar vardı, bu nedenle DFT'den önce uygun pencereleme ön işlemeyi önceden yapmak daha iyidir.
lxg

Bu makaleyi bulmadan birkaç gün önce ve algoritmayı başarılı bir şekilde uygulamaya çalışıyordum. Uygulamanızı yeni başlayanlarla paylaşıp paylaşamayacağınızı merak ediyordum :)
Alexis España

Yanıtlar:


1

Gerçekten sağlam bir şey istiyorsanız, ancak bu daha hesaplama açısından pahalı olabilirse, burada uyguladığım algoritmaya göz atmak isteyebilirsiniz . "Log-Polar Dönüşümü Kullanarak Sağlam Görüntü Kaydı" ( pdf ) belgesini uygular . Ayrıca çeviri ve ölçek değişmezine ek olarak dönme-değişmez olma avantajına sahiptir. Uygulamamda (sanat), sadece aynı görüntünün dönüştürülmüş versiyonlarını değil, benzer görünümlü görüntüleri bile kaydedebildi.


0

Sanırım bunun nedeni belirli uygulama sorunları. Örneğin, (1) pencereleme ön işleminin DFT'den önce yapılması daha iyidir; (2) Highpass () işlevini kontrol edebilir ve Reddy Chatterji'nin Denklem (23) - (24) adlı makalesine başvurabilirsiniz. Ayrıca, ölçek değeri için bir sınır vardır ve diğer ölçek değerlerini deneyebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.