Centrowanie zerowej częstotliwości dla dyskretnej transformaty Fouriera


11

Pracuję nad aplikacją do przetwarzania obrazu, która wykorzystuje dyskretną transformatę Fouriera do implementacji rozmycia / wyostrzania. Aplikacja działa mniej więcej tak, ale coś w mechanice nadal jest dla mnie mylące.

W szczególności odbywa się proces centrowania częstotliwości zerowych.

Przykład, który widziałem wstępnie przetwarza obraz wejściowy (o intensywności w skali szarości), mnożąc go przez macierz wielkości równą obrazowi wejściowemu, którego wartości to , gdzie jest rzędem, jest kolumna, a więc wzór na przemian i(1)x+yxy11

Zgodnie z instrukcją, jest to równoznaczne z zamiana ćwiartki matrycy przez odwracanie przez i osi.xy

Rozumiem, dlaczego tak się dzieje i chciałbym podkreślić, że rozumiem, że mój kod / Fourier działa, po prostu nie rozumiem, dlaczego pomnożenie macierzy wejściowej przez 1 / -1 powoduje wyśrodkowanie komponentu zerowej częstotliwości wokół 0.

Dzięki


Można również znaleźć odniesienie w rozdziale 4, 4.6-Implementacja z cyfrowego przetwarzania obrazu autorstwa Gonzaleza (mam drugie wydanie). Mam nadzieję, że to pomoże.
hakunami,

Odpowiedzi:


18

O! Co za fajna sztuczka! Działa z powodu twierdzenia o splotie (tj. Mnożenie w dziedzinie przestrzennej / czasowej jest równoważne splotowi w dziedzinie częstotliwości).

To nie jest przerzucanie całej i osi, to obraca obraz transformaty Fouriera (myślę o przeniesienie do połowy wokół cylindra). Sztuczka polega na tym, że naprzemienne -1, 1 w domenie przestrzennej jest sygnałem o najwyższej częstotliwości. Zatem transformata Fouriera tego obrazu jest pojedynczym punktem w dziedzinie częstotliwości. Splot o jeden punkt jest równoważny przesunięciu (obróceniu) obrazu o przesunięcie punktu względem częstotliwości zerowej.xy

Oto obraz testowy: obraz testowy. To transformata Fouriera wygląda następująco:transformata Fouriera obrazu testowego

Zażycie transformaty Fouriera obrazu zmiennego ( obraz szachownicy), to wyniki w jednym punkcie tuż przy centrum transformaty Fouriera: wprowadź opis zdjęcia tutaj. (Przypomnijmy, że jeszcze nie wykonaliśmy rotacji, więc centrum transformacji Fouriera stanowią wysokie częstotliwości, a niskie częstotliwości są nadal na rogach.) Ale to jest „jądro rotacji!” Konwekcja z tym obrotem jądra przesuwa wszystko w dół i w prawo (ale rzeczy, które spadają z prawego dolnego rogu, obracają się w lewy górny róg).

Splatanie obrazu oryginalnego z jądrem rotacji (w domenie obrazu) daje: zwinięty obraz, podczas gdy splatanie transformaty Fouriera obrazu z jądrem rotacji (w dziedzinie częstotliwości) daje: obrócona transformata Fouriera.

I możemy sprawdzić, mnożąc testimage przez szachownicy w domenie obrazu daje obraz mnożenia, która ma transformacji Fouriera: ponownie obrócona transformata Fouriera.


Jestem zmieszany. Czy używasz konwolucji do implementacji fftshiftfunkcji podobnej do? Czy to nie jest obliczeniowo tańsze, aby bezpośrednio przestawić 4 ćwiartki?
endolith

2
Nie ma tutaj bezpośredniego splotu. Wykorzystuje to mnożenie pikseli w domenie obrazu, aby uzyskać odpowiednik splotu w dziedzinie Fouriera. Tak, fftshiftnie jest bardzo drogi, ale ta sztuczka może mieć lepsze zachowanie pamięci podręcznej. Mnożenie pikseli to tak naprawdę odwrócenie znaku co drugi piksel. Tak łatwe do wektoryzacji, zapis odczytu-modyfikacji-zapisu jest gwarantowanym trafieniem do pamięci podręcznej i procesor może łatwo pobrać odczyt.
Wandering Logic

No tak, to odwrócenie znaku, a nie realne pomnożenie.
endolith

Dlaczego transformacja Fouriera obrazu testowego (drugi obraz) tak wygląda? Widzę dwa obrazy, czarne jeden nad drugim.
hakunami,

10

Odpowiedź Wandering Logic jest poprawna i szczegółowa. Pomyślałem, że chcesz zobaczyć matematykę zamiast zdjęć:

Jeśli spojrzymy na przypadek 1D, mnożymy dane wejściowe przez gdzie częstotliwość wynosi . To znaczy, mnożenie przesuwa widmo sygnału o połowę częstotliwości próbkowania.(1)k=ejωω2π(k/2)

Skutkuje to tym, że częstotliwość zerowa - która wcześniej miała indeks 0 - jest teraz w połowie szerokości obrazu (lub wysokości, w zależności od tego, czy pomnożymy kolumny czy wiersze).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.