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
Zgodnie z instrukcją, jest to równoznaczne z zamiana ćwiartki matrycy przez odwracanie przez i osi.
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
. To transformata Fouriera wygląda następująco:
), to wyniki w jednym punkcie tuż przy centrum transformaty Fouriera:
. (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).
, podczas gdy splatanie transformaty Fouriera obrazu z jądrem rotacji (w dziedzinie częstotliwości) daje:
.
, która ma transformacji Fouriera: