Problémáim vannak egy kép frekvenciakomponenseinek azonosításával,

Itt egyszerűen generáltam, 256×256 bináris- kép.

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

írja ide a kép leírását

A kép FFT készítése és eltolása a nulla frekvencia a középpontba,

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

eredményezi,

írja ide a kép leírását

Hogyan tudom azonosítani, hogy hány frekvenciakomponens van és melyek ezek a frekvenciák? bizonyos értékek negatívon, mit jelent ez? Hogyan lehetnek negatív frekvenciák?

Megjegyzések

  • Kapcsolódó (lehetséges ismétlés): dsp. stackexchange.com/q/1637/77
  • Az egyik legjobb módja annak, hogy megértsük, mi a transzformáció, ha kísérletezünk az inverz transzformációval. Rajzoljon egy pontot, majd fordítva alakítsa át, hogy lássa a keletkező hullámokat. Ezután próbáljon meg egy pontot egy másik helyen, majd egy vonalat, stb. A negatív frekvenciákról lásd: dsp.stackexchange.com/q/431/29

Válasz

hogyan lehetnek negatív frekvenciák?

Az FFT együtthatók nem frekvenciák, hanem összetett amplitúdók. Az együttható modulusa az amplitúdót, az együttható argumentuma a fázist jelzi.

Ne feledje, hogy figyelmeztetést vagy hibaüzenetet kell kapnia a Matlab-tól a log(shft), mivel az shft összetett mátrix, az eredmény nem valós és képként nem ábrázolható.

Megjegyzések

  • Minden, amit mondasz igaz, de a kérdés mellé áll. Az együtthatók fele értelmezhető úgy, hogy megfeleljen a negatív frekvenciáknak.

Válasz

Az első javaslatom az, hogy Ön megérteni az FFT-t 1 dimenzióban, mielőtt megpróbálná értelmezni az eredményeket a 2D-ben.

A Diszkrét Fourier-transzformáció (az FFT a DFT megvalósítása) egy komplex transzformáció: 2 vektor komplex N méretű vektor között transzformál. p>

Tehát 1D esetben nemcsak negatív értékeket, hanem általában komplex értékeket is kap.

Ugyanez vonatkozik a 2D-re is. Az imshow függvény valószínűleg a komplex mátrix valós részét veszi át (ez nem világos az imshow dokumentációjában).

Válasz

Hiányzik a abs parancs.

Próbálja ki a következőket:

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

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük