Verfasst am: 25.01.2011, 11:00
Titel: FFT und inverse Faltung
Hallo,
ich habe wiedermal eine Frage zur FFT bzw. inversen Faltung.
Ich habe folgenden Versuch gestartet:
Ein Graustufenbild(386x559) wird mit einer 5x5 Matrix gefaltet. Nun wandle ich das gefaltete Bild in den Frequenzbereich (mittels fft2). Im Frequenzraum führe ich eine inverse Faltung durch (mit der selben 5x5 Matrix).
Lasse ich mir die Bilder im Zeitbereich darstellen sieht es zwar wieder fast so aus wie das Original, allerdings lassen bei einer Vergrößerung des Bildes jedoch Artefakte erkennen --> das Bild wirkt pixeliger.
Ich hätte gerne gewusst wodurch ob jemand weiß wodurch diese Artefakte entstehen?
Ein weiters Problem ist mir aufgefallen. Sofern ich die Faltung des Bildes mit der 5x5 Martix mit dem Befehl conv2(Pic, PSF, 'same') durchführe und eine inverse Faltung des Ergebnisbildes im Frequenzbereich versuche wird das Bild unbrauchbar!?
Vielleicht kann mir hier jemand weiterhelfen.
(wer den Code Testen will --> das Bild befindet sich im Anhang)
ich habe Deinen Vorgang einmal nachvollzogen und festgestellt, dass die Artefakte mit einem weicheren Filterkern verschwinden - also liegt die Ursache im Filterkern, den ich auch etwas umständlich und daher auch unübersichtlich finde. Das betrifft aber nur die Schreibweise, nicht den Inhalt.
Der Kern ist ja eine reine Gauss-Funktion. Es könnte noch was bringen, Deinen Kern zu vergrößern und für weichere Übergänge zu sorgen oder einen anderen TP-Filter anzuwenden.
Weiterhin habe ich bessere Ergebnisse mit der Faltung, die Du aus Deinen früheren Anfragen her kennst.
Ich weiß, dass andere Faltungen bessere Ergebnisse haben mich hat nur interressiert warum die Artefakte auftreten, da diese bei den anderen Algorithmen nicht auftreten.
Meine ersten Ideen waren folgende: (allerdings bin ich mir da nicht ganz sicher in weit das stimmen kann)
-) weil im Frequenzbereich die Werte durch komplexe Zahlen dargestellt werden und diese in Matlab nicht exakt repräsentiert werden können, kommt es bei der FFT (ifft) zu Ungenauigkeiten welche sich besonders bei Faltungskernen mit kleinen Werten auswirken.
-) Konvolutionsoperation im Frequenzbereich setzt voraus, dass diese völlig zyklisch durchgeführt werden können, was aufgrund der Bildgrenzen nicht der Fall ist. --> Artefakte an Bildkanten?
ich habe mir Dein Beispiel noch einmal angesehen. Ich fand Deine Anmerkungen zu meiner Antwort sehr interessant. Noch ein Hinweis - Dein Bild ist kein reines S/W-Bild sondern ein indiziertes Bild ([x,map]=...-).
Wenn Du ein Bild mit der FFT transformierst und dann den Prozeß umkehrst, kommst Du exakt auf die gleichen Ausgangswerte. Die Werte bleiben auch erhalten, wenn Du dieses Verfahren mehrmals wiederholst. Man kann also davon ausgehen, dass Matlab bei Transformationen ohne Faltung keine Rundungsfehler verusacht. Die komplexen Zahlen interpretieren die Pixelwerte.
Nun gibts es aber eine ganz interessante Erscheinung. Deine Artefakte treten nur mit dem Zentrumswert 36 auf. Nicht mit 35 und auch nicht mit 37. Auch andere Werte in Beziehung zu 36 zeigen dieses Phänomen nicht. Was nicht heißen soll, dass es doch noch irgendeinen merkwürdigen Wert gibt, der das verursacht. Selbst wenn ich den Kernn linear erhöhe, treten diese Artefakte nicht auf. Als Ergebnis für Rundungsfehler kann ich das nicht nachvollziehen, da andere Kerne auch zu Rundungsfehler führen.
Deine Frage müßt also lauten, warum nur bei diesem Kern, mit diesem einen Zentrumswert. Darauf habe ich leider auch keine Antwort, da ich diese Erscheinung noch nie gesehen habe und sie auch nicht zwangsweise mit anderen Kernen herbeiführen kann. Sollte Dir irgendjemand den Kern vorgegeben haben, wird er sich schelmischerweise etwas dabei gedacht haben.
Das Problem mit den Rändern sehe ich ebenso fragwürdig. Ich kann dem Bild auch einen breiten Rahmen mit Nullwerten verpassen. Am Ergebnis ändert sich nichts.
Wenn Du des Rätsels Lösung kennst, laß uns daran teilhaben. Sehr interessantes Thema!!!
Noch ein kleiner Nachtrag, auch wenn ich mich damit auf "dünnem Eis" bewege. Im Zusammenhang mit inversen Filterungen gibt es den Effekt der "schlecht gestellten Probleme". Z.B. hier:
Seltsames Phänomen.Danke für die Infos.
Du hast mir sehr geholfen.
Beste Grüße!
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
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.