Mam problem z identyfikacją składników częstotliwości obrazu,

Tutaj po prostu wygenerowałem binarny plik 256×256- obraz.

a = [zeros(256,128) ones(256,128)]; imshow(a); 

tutaj wprowadź opis obrazu

Wykonywanie obrazu FFT i przesuwanie częstotliwość zerowa do środka,

f = fft2(a) shft = fftshift(f); imshow(log(shft)) %stretching 

spowoduje,

tutaj wprowadź opis obrazu

Jak mogę zidentyfikować, ile jest składowych częstotliwości i jakie są te częstotliwości?

Również jeśli obliczę FFT dowolnej sekwencji 1-D i wykreślę tę sekwencję pewne wartości na minusie, co to oznacza? Jak mogą występować ujemne częstotliwości?

Komentarze

  • Powiązane (możliwy duplikat): dsp. stackexchange.com/q/1637/77
  • Jednym z najlepszych sposobów zrozumienia działania transformacji jest eksperymentowanie z transformacją odwrotną . Narysuj kropkę, a następnie odwróć ją, aby zobaczyć wytwarzane przez nią fale. Następnie wypróbuj kropkę w innym miejscu, potem linię itd. Jeśli chodzi o częstotliwości ujemne, zobacz dsp.stackexchange.com/q/431/29

Odpowiedź

jak mogą występować częstotliwości ujemne?

Współczynniki FFT nie są częstotliwościami, ale złożonymi amplitudami. Moduł współczynnika wskazuje amplitudę, argument współczynnika wskazuje fazę.

Zauważ, że powinieneś otrzymać ostrzeżenie lub komunikat o błędzie z Matlab do obliczania log(shft), ponieważ shft jest złożoną macierzą, wynik nie jest rzeczywisty i nie może być wykreślony jako obraz.

Komentarze

  • Wszystko, co powiesz jest prawdą, ale jest to również kwestia pominięcia. Połowę współczynników można zinterpretować jako odpowiadające częstotliwościom ujemnym.

Odpowiedź

Moja pierwsza sugestia jest taka, zrozumieć FFT w 1 wymiarze, zanim spróbujesz zinterpretować wyniki w 2D.

Dyskretna transformata Fouriera (FFT jest implementacją DFT) jest złożoną transformacją: przekształca między 2 wektorami złożonymi wektorami o rozmiarze N. p>

Zatem w przypadku 1D otrzymasz nie tylko wartości ujemne, ale ogólnie wartości złożone.

To samo dotyczy 2D. Funkcja imshow prawdopodobnie pobiera rzeczywistą część złożonej macierzy (nie jest to jasne w dokumentacji imshow).

Odpowiedź

Brakuje polecenia abs.

Spróbuj wykonać następujące czynności:

f = fft2(a) shft = fftshift(abs(f)); imshow(log(shft)) %stretching 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *