|
Ajax |
Forum-Century
|
|
Beiträge: 176
|
|
|
|
Anmeldedatum: 09.09.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.10.2010, 08:41
Titel: 2D Fouriertransformation
|
|
|
|
|
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
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
verwendet, dann klappt es auch nicht. Aber wie muss die Funktion
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
|
|
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.10.2010, 09:03
Titel:
|
|
Moin Ajax,
eine einfache Umrechnung erfolgt:
Natürlich geht das auch in 2 Zeilen.
Viele Grüße
Hubertus
|
|
|
Ajax |
Themenstarter
Forum-Century
|
|
Beiträge: 176
|
|
|
|
Anmeldedatum: 09.09.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.10.2010, 09:48
Titel:
|
|
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
mfg
Ajax
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.10.2010, 10:08
Titel:
|
|
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
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|