Forum: Digitale Signalverarbeitung / DSP / Machine Learning Kennt sich jemand mit der 2D-FFT aus


von Mario G. (mario)


Lesenswert?

Hallo,

ich teste zur Zeit in Matlab einige Algorithmen zur Bildtransformation.
Weiß jemand, wie ich aus dem Frequenzbild (nach Transformation eines 
Grauwertebildes) die charakteristischen Frequenzen (=Abstände) numerisch 
ermitteln kann.

Das Grauwertbild hat eine Gitterstrukur.
Nach der FFT2 und SHIFTFFT gibts 2 charakteristische Frequenzenspots in 
X und Y Richtung im Abstand zur Mitte des Bildes. Der Gitterabstand 
steht ja irgendwie im Verhältnis zur FFT2-Fenstergröße und dem Abstand 
zur Mitte des Frequenzbildes.
Ich steh irgendwie grad auf dem Schlauh. Ich möchte am Ende jedenfalls 
die Gittergröße in Pixel raus haben (X und Y Richtung).

Weiß jemand Rat?

: Verschoben durch Admin
von Richard Z. (richardz)


Lesenswert?

also du hast eine 2 D Matrix die eine Gitterstruktur hat. Daraus willst 
du dann den Abstand des Gitters durch die FFT berechnen?

Ich denke die FFT ist da suboptimal weil sie ja erwartet, dass es 
periodisch ändernde Signal enthält und du hast da Diracs drin. Also 
prinzipiell Überlagerungen von Exponentialfunktionen die dann die FFT 
liefert.

Was spricht gegen ein aufsummieren in X Richtung?
Dann kannst du einen threshold TH berechnen: (Punkte < TH)/(Punkte > TH) 
= Anzahl Gitterwiederholungen
oder ist das zu naiv?

von Franzi (Gast)


Lesenswert?

Hallo,
zeig doch einmal dein Bild her.

Ich kann mis schon voestellen, dass das mit dem Muster gehen kann. Vor 
allem kann man erkennen, ob das Muster verdreht ist oder hoizonzal 
ausgerichtet ist.

von Michael L. (Gast)


Lesenswert?

Hallo Mario,

das ist sicher nicht anders als bei der "normalen" FFT:

N  = Anzahl der Gitterpunkte in eine Richtung
fs = 1;                 % Abtastfrequenz in Pixeln/Abtastwert
f  = 0:fs/N:(N-1)/N*fs; % Frequenzvektor in x-Richtung

Plotte das Bild und suche den Index mit dem Maximum heraus.
1/f(index) ist die Anzahl der Pixel, die eine Struktur aufweist.

Wenn es sehr genau sein soll, mußt du das Betragsspektrum interpolieren, 
beispielsweise mit einem Polynom 2. Grades.

Gruß,
  Michael

von zwieblum (Gast)


Lesenswert?

noch was: fft ist nicht rotationsinvariant. wenn das muster rotiert ist, 
ändert sich die position der maxima.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.