WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

2D Fouriertransformation

 

Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2010, 09:41     Titel: 2D Fouriertransformation
  Antworten mit Zitat      
Guten Morgen an alle Matlab und Mathe Profis,

ich stehe mal wieder vor einem Problem. Das Schlimme ist, dass es wohl auch mit einem kleinen Verständnisproblem zusammenhängt:

Ich habe einen Datensatz, welcher der zweidimensionalen Fouriertransformierten eines Bildes entspricht. Die Daten liegen in einer Matrix vor und sind im Fourierraum derart geordnet, dass es einem kartesischen u,v - Koordinatensystem entspricht. Gemeint ist: mein Bild hat die Funktion f(x,y), die Fouriertransformierte die Funktion F(u,v). In der Matrix sind also links oben die Werte mit negativem v und positivem u, links unten die mit negativem v und negativem u, rechts oben u und v positiv und rechts unten positives v und negatives u gespeichert (ich hoffe es ist einigermaßen verständlich, was ich meine).
Nun soll durch eine einfache zweidimensionale inverse Fouriertransformation das ursprüngliche Bild zurückgewonnen werden. Das bekomme ich aber nicht hin.
Jetzt zu der/den Frage/n: Einfache Anwendung von
Code:
liefert nicht das gewünschte Ergebnis. Das müsste daran liegen, dass Matlab die Daten anders angeordnet haben will (glaube ich). Aber wie will Matlab die Daten sortiert haben? Wenn ich einfach
Code:
verwendet, dann klappt es auch nicht. Aber wie muss die Funktion
Code:
angewandt werden? Der Code, mit dem ich auf die Matrix mit der Fouriertransformierten komme, ist relativ einfach, hier denke ich liegt also kein Fehler. Also glaube ich, dass ich einen oder mehrere Fehler bei der Rücktransformation mache.
Oder habe ich da etwas grundlegendes bei der zweidimensionalen Fouriertransformation übersehen oder nicht verstanden?

Ich hoffe ich habe das Problem einigermaßen klar beschrieben und es kann mir jemand weiter helfen.

Mit freundlichen Grüßen

Ajax
Private Nachricht senden Benutzer-Profile anzeigen


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.10.2010, 10:03     Titel:
  Antworten mit Zitat      
Moin Ajax,

eine einfache Umrechnung erfolgt:

Code:
I=imread(Bild);
I2=fft2(double(I));
I3=fftshift(I2);
I4=ifft2(I3);
I5=real(abs(I4));

 
Natürlich geht das auch in 2 Zeilen.

Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Ajax
Themenstarter

Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2010, 10:48     Titel:
  Antworten mit Zitat      
Hallo Hubertus,

erst Mal vielen Dank für die schnelle Antwort!
In meinem Algorithmus berechne ich F(u,v), also die 2D Fouriertransformierte, über ein paar Umwege aus anderen Daten (also nicht direkt aus einer fft2() eines Bildes).
Was mir jetzt Probleme bereitet ist, wie in deinem Code die Matrix I3, also die, welche anschließend zurück transformiert werden kann, zu verstehen ist. Einfach gesagt: in welcher Ecke dieser Matrix stehen hier die positiven und negativen Frequenzen?

Was ich zusätzlich nicht ganz verstehe: du verwendest nach der fft2() die fftshift() funktion - soweit so gut. Aber müsste nicht vor der Rücktransformation eigentlich ein ifftshift() verwendet werden?

Danke nochmal und weiterhin Wink
mfg

Ajax
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 20.10.2010, 11:08     Titel:
  Antworten mit Zitat      
Ja, da habe ich natürlich ifft2 vergessen - also:

[/Code]I4=ifftshift(ifft2(I3));[/Code]

Ich bin in der fft auch nicht so ganz sattelfest. Aber Matlab beginnt in der fft mit 1, gibt also nur positive Frequenzen wieder. Wenn das so nicht stimmt, bin ich gerne bereit dazuzulernen.

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.