Ayrık Fourier Dönüşümü için merkezleme sıfır frekansı


11

Bulanıklaştırma / keskinleştirme uygulamak için ayrık bir fourier dönüşümü kullanan bir görüntü işleme uygulaması üzerinde çalışıyorum. Uygulama az çok çalışıyor, ancak mekanikle ilgili bir şey hala kafa karıştırıcı.

Özellikle, sıfır frekansları merkezleme işlemi bu şekilde yapılır.

Ben boyutta bir matris ile çarpılarak (gri tonlama yoğunluklarının) ön işlemler giriş görüntüsünü gördük örnek, değerler giriş görüntü için eşit , , satır olduğunu olan sütun, yani ve değişen bir desen x y 1 - 1(1)x+yxy11

Notlara göre, bu, ve ekseni boyunca çevirerek matrisin kadranlarını değiştirmeye eşdeğerdir .yxy

Bunun neden yapıldığını anlıyorum ve vurgulamak istiyorum Kodumu / Fourier şeylerini çalıştırabildiğimi anlıyorum, neden giriş matrisini 1 / -1 ile çarpmanın sıfır frekans bileşenini 0 civarında ortaladığını anlamıyorum.

Teşekkürler


Ayrıca Gonzalez tarafından Dijital Görüntü İşleme Bölüm 4, 4.6-Uygulama bazı referans bulabilirsiniz (İkinci baskısı var). Umarım yardımcı olur.
hakunami

Yanıtlar:


18

Ah! Ne güzel bir numara! Evrişim teoremi nedeniyle çalışır (yani, uzamsal / zaman alanındaki çarpma frekans alanındaki evrişime eşdeğerdir).

Bu, ve ekseni boyunca çevrilmiyor , Fourier dönüşümünün görüntüsünü döndürüyor (bir silindirin etrafında kaydırmayı düşünün). Buradaki hile, uzamsal alanda -1,1 değerinin değiştirilmesinin en yüksek frekansa sahip bir sinyal olmasıdır. Bu görüntünün Fourier dönüşümü, frekans alanında tek bir noktadır. Tek bir nokta ile bükülme, görüntüyü noktanın sıfır frekansından ofsetiyle kaydırmaya (döndürmeye) eşdeğerdir.yxy

İşte bir test resimdir: test resmi. Fourier dönüşümü şöyle görünüyor:test görüntüsünün fourier dönüşümü

Eğer Fourier alternatif görüntü (dönüşümü alırsak dama görüntü), doğru Fourier dönüşüm merkezinde tek bir noktadan sonuçlanır: resim açıklamasını buraya girin. (Rotasyonumuzu henüz yapmadığımızı hatırlayın, bu yüzden fourier dönüşümünün merkezi yüksek frekanslar ve düşük frekanslar hala köşelerde.) Ama bu "rotasyon çekirdeği!" Bu döndürme çekirdeğiyle kıvrım, her şeyi aşağı ve sağa hareket ettirir (ancak sağ alttan düşen şeyler sol üste döner.)

(Görüntü etki alanında) rotasyon çekirdek ile orijinal görüntü evriştirerek verir: kıvrık görüntüfourier (frekans alanında) rotasyon kernel ile görüntü dönüşümü evriştirerek ederken verir: döndürülmüş fourier dönüşümü.

Ve biz görüntü alanında dama tahtası tarafından testimage çarparak verdiğini kontrol edebilirsiniz çarpma görüntüsüdönüşümü Fourier bir olan,: tekrar döndürülmüş fourier dönüşümü.


Kafam karıştı. Bu, fftshiftbenzeri bir işlevi uygulamak için evrişim kullanıyor mu? 4 kadranı doğrudan yeniden düzenlemek hesaplamalı olarak daha ucuz değil mi?
endolit

2
Burada doğrudan evrişim yok. Bu, fourier alanındaki bir kıvrımın eşdeğerini elde etmek için görüntü alanında piksel olarak çarpmayı kullanır. Evet, fftshiftçok pahalı değil, ancak bu hile daha iyi önbellek davranışına sahip olabilir. Piksel çarpımı aslında diğer tüm piksellerin işaretini çeviriyor. Vektörleştirmesi çok kolay, okuma-değiştirme-yazma işleminin yazılması garantili bir önbellek isabetidir ve işlemcinin okumaları önceden getirmesi kolaydır.
Gezici Mantık

Oh doğru, bu bir işaret çevirme, gerçek bir çarpma değil.
endolit

Test görüntüsünün (ikinci görüntü) Fourier dönüşümü neden böyle görünüyor? Aslında iki görüntü görüyorum, diğeri siyah.
hakunami

10

Gezici Logic'in cevabı doğru ve ayrıntılı. Sadece resimler yerine matematik görmek isteyeceğini düşündüm:

1D durumda bakarsak, sen ile girdi çarpımı vardır frekans burada olması umulur . Yani, çarpma sinyalin spektrumunu örnekleme frekansının yarısına kaydırır. ω 2 π ( k / 2 )(1)k=ejωω2π(k/2)

Bunun etkisi, daha önce 0 dizininde bulunan sıfır frekansın şimdi görüntü genişliğinin yarısında (veya sütunları veya satırları çarpmanıza bağlı olarak yükseklik) olmasıdır.

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.