| Operatoren |
wiener_filter — Bildrestauration mittels Wiener-Filterung.
wiener_filter ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt.
wiener_filter(Image, Psf, FilteredImage : RestoredImage : : )
wiener_filter liefert eine Abschätzung des unbeeinträchtigten Originalbildes. Die Abschätzung ist im Sinne eines minimalen, quadratischen Fehlers zwischen dem Originalbild und seiner Abschätzung optimal. Diese Abschätzung stellt eine restaurierte Version eines durch verschiedene Einflüsse (z.B. relative Bewegung zwischen aufzunehmendem Objekt und Aufnahmesystem, falsch fokussiertes Linsensystem, atmosphärische Störungen usw.) beeinträchtigten Bildes dar. Ausgangspunkt ist das beeinträchtigte Bild, das als Ausgabe eines gestörten, linearen Systems interpretiert wird. Das Verhalten eines linearen Systems, ist durch seine Impulsantwort bestimmt. Folgerichtig wird davon ausgegangen, dass das beeinträchtigte Bild das Ergebnis einer Faltung von Originalbild und Impulsantwort des linearen Systems darstellt. Diese Impulsantwort beschreibt die Bildaufnahme und die dabei aufgetretenen Störungen. Um auch Störungsursachen stochastischer Natur (Rauschen) einbeziehen zu können, wird zu dem Faltungsergebnis ein Rauschterm addiert. Insgesamt ergibt sich also das beeinträchtigte Bild aus
[Faltung(Impulsantwort und Originalbild)] + Rauschterm
Der Rauschterm beinhaltet zwei Komponenten, von denen jeweils eine das
bildabhängige und bildunabhängige Rauschen beschreibt.
Die Routine wiener_filter benötigt eine Bildversion, die (in
der Vorverarbeitung durch den Anwender) mit einem Rauschfilter bearbeitet
wurde. Diese rauschreduzierte Bildversion wird von wiener_filter dafür
verwendet, die spektralen Leistungsdichten vom Rauschen und dem Originalbild
abzuschätzen.
Weiterhin ist durch den Anwender eine Impulsantwort zu erzeugen, die die
spezielle Beeinträchtigung im Bild beschreibt. Die Impulsantwort wird als
Bildmatrix eingegeben (Bildtyp: 'real'). Sie stellt die Impulsantwort
im Ortsraum dar und muss dahingehend in die Bildmatrix eingetragen werden, dass
der Nullpunkt in der Bildecke „links oben“ liegt. Das bedeutet folgende
Einteilung der insgesamt NxM-großen Bildmatrix in vier
rechteckige Regionen:
Erstes Rechteck („links oben“): (Bildkoordinaten xb= 0..(N/2)-1, yb = 0..(M/2)-1)
-entspricht dem vierten Quadranten des kartesischen Koordinatensystems, enthält also die Werte der Impulsantwort für x = 0..N/2 und y = 0..-M/2
Zweites Rechteck („rechts oben“): (Bildkoordinaten xb = N/2..N-1, yb = 0..(M/2)-1)
-entspricht dem dritten Quadranten des kartesischen Koordinatensystems, enthält also die Werte der Impulsantwort für x = -N/2..-1 und y = -1..-M/2
Drittes Rechteck („links unten“): (Bildkoordinaten xb = 0..(N/2)-1, yb = M/2..M-1)
-entspricht dem ersten Quadranten des kartesischen Koordinatensystems, enthält also die Werte der Impulsantwort für x = 1..N/2 und y = M/2..0
Viertes Rechteck („rechts unten“): (Bildkoordinaten xb = N/2..N-1, yb = M/2..M-1)
-entspricht dem zweiten Quadranten des kartesischen Koordinatensystems, enthält also die Werte der Impulsantwort für x = -N/2..-1 und y = M/2..1
wiener_filter verwendet folgende Strategie zur Erzeugung des restaurierten Bildes:
Abschätzen der spektralen Leistungsdichte des Originalbildes aus der des rauschgefilterten Eingabebildes.
Subtrahieren der Bildwerte des rauschgefilterten Eingabebildes von denen des belassenen Eingabebildes ergibt eine Abschätzung der Rauschstärke an jedem Bildpunkt. Damit lässt sich die spektrale Leistungsdichte des Rauschens für jeden Bildpunkt abschätzen.
Mit Hilfe des Quotienten der Leistungsdichten vom Rauschen und Originalbild und der Fouriertransformierten der Impulsantwort wird das Wiener-Filter gebildet.
Durchführung der Wiener-Filterung durch Faltung von dem Eingabebild und der Frequenzantwort des Filters (= Multiplikation von deren diskreten Fouriertransformierten).
Rücktransformiertes Ergebnis stellt das restaurierte Bild dar.
Das Restaurationsergebnis ist vom Bildtyp 'real'.
Die Impulsantwort Psf muss vom Bildtyp 'real' sein und dieselbe Bildbreite und -länge wie Image und FilteredImage besitzen.
Beeinträchtigtes Bild, das gefiltert werden soll.
Impulsantwort (Point Spread Function) der Bildbeeinträchtigung (im Ortsraum mit dem Nullpunkt in der Bildecke angegeben).
Beeinträchtigtes, durch ein Rauschfilter vorverarbeitetes Bild, das gefiltert werden soll.
Restauriertes Bild.
/* Restoration of a noisy image (size=256x256), that was blurred by motion*/ Hobject object; Hobject restored; Hobject psf; Hobject noisefiltered; /* 1. Generate a Point-Spread-Function for a motion-blur with */ /* parameter a=10 and direction along the x-axis */ gen_psf_motion(&psf,256,256,10,0,3); /* 2. Noisefiltering of the image */ median_image(object,&noisefiltered,"circle",2,0); /* 3. Wiener-filtering */ wiener_filter(object,psf,noisefiltered,&restored);
Sind die Parameterwerte korrekt, dann liefert wiener_filter den Wert 2 (H_MSG_TRUE). Bei einer leeren Eingabe wird mit einer entsprechenden Fehlermeldung abgebrochen.
gen_psf_motion, simulate_motion, simulate_defocus, gen_psf_defocus, optimize_fft_speed
simulate_motion, gen_psf_motion, simulate_defocus, gen_psf_defocus
M. Lückenhaus:„Grundlagen des Wiener-Filters und seine Anwendung
in der Bildanalyse“; Diplomarbeit;
Technische Universität München, Institut für Informatik;
Lehrstuhl Prof. Radig; 1995
Azriel Rosenfeld, Avinash C. Kak: Digital Picture Processing,
Computer Science and Aplied Mathematics, Academic Press New York/San
Francisco/London 1982
Foundation
| Operatoren |