KlassenKlassenKlassenKlassen | | | | Operatoren

wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter (Operator)

Name

wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter — Bildrestauration mittels Wiener-Filterung.

Warnung

wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt.

Signatur

wiener_filter(Image, Psf, FilteredImage : RestoredImage : : )

Herror wiener_filter(const Hobject Image, const Hobject Psf, const Hobject FilteredImage, Hobject* RestoredImage)

Herror T_wiener_filter(const Hobject Image, const Hobject Psf, const Hobject FilteredImage, Hobject* RestoredImage)

Herror wiener_filter(Hobject Image, Hobject Psf, Hobject FilteredImage, Hobject* RestoredImage)

HImage HImage::WienerFilter(const HImage& Psf, const HImage& FilteredImage) const

void WienerFilter(const HObject& Image, const HObject& Psf, const HObject& FilteredImage, HObject* RestoredImage)

HImage HImage::WienerFilter(const HImage& Psf, const HImage& FilteredImage) const

void HOperatorSetX.WienerFilter(
[in] IHUntypedObjectX* Image, [in] IHUntypedObjectX* Psf, [in] IHUntypedObjectX* FilteredImage, [out] IHUntypedObjectX*RestoredImage)

IHImageX* HImageX.WienerFilter(
[in] IHImageX* Psf, [in] IHImageX* FilteredImage)

static void HOperatorSet.WienerFilter(HObject image, HObject psf, HObject filteredImage, out HObject restoredImage)

HImage HImage.WienerFilter(HImage psf, HImage filteredImage)

Beschreibung

wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter 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_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter benötigt eine Bildversion, die (in der Vorverarbeitung durch den Anwender) mit einem Rauschfilter bearbeitet wurde. Diese rauschreduzierte Bildversion wird von wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter 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:

wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter verwendet folgende Strategie zur Erzeugung des restaurierten Bildes:

Das Restaurationsergebnis ist vom Bildtyp 'real'.

Achtung

Die Impulsantwort PsfPsfPsfPsfPsfpsf muss vom Bildtyp 'real' sein und dieselbe Bildbreite und -länge wie ImageImageImageImageImageimage und FilteredImageFilteredImageFilteredImageFilteredImageFilteredImagefilteredImage besitzen.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  (multichannel-)image objectHImageHImageHImageHImageXHobject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)

Beeinträchtigtes Bild, das gefiltert werden soll.

PsfPsfPsfPsfPsfpsf (input_object)  (multichannel-)image objectHImageHImageHImageHImageXHobject (real)

Impulsantwort (Point Spread Function) der Bildbeeinträchtigung (im Ortsraum mit dem Nullpunkt in der Bildecke angegeben).

FilteredImageFilteredImageFilteredImageFilteredImageFilteredImagefilteredImage (input_object)  (multichannel-)image objectHImageHImageHImageHImageXHobject (byte / direction / cyclic / int1 / int2 / uint2 / int4 / real)

Beeinträchtigtes, durch ein Rauschfilter vorverarbeitetes Bild, das gefiltert werden soll.

RestoredImageRestoredImageRestoredImageRestoredImageRestoredImagerestoredImage (output_object)  image objectHImageHImageHImageHImageXHobject * (real)

Restauriertes Bild.

Beispiel (C)

/* 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);

Ergebnis

Sind die Parameterwerte korrekt, dann liefert wiener_filterwiener_filterWienerFilterwiener_filterWienerFilterWienerFilter den Wert 2 (H_MSG_TRUE). Bei einer leeren Eingabe wird mit einer entsprechenden Fehlermeldung abgebrochen.

Vorgänger

gen_psf_motiongen_psf_motionGenPsfMotiongen_psf_motionGenPsfMotionGenPsfMotion, simulate_motionsimulate_motionSimulateMotionsimulate_motionSimulateMotionSimulateMotion, simulate_defocussimulate_defocusSimulateDefocussimulate_defocusSimulateDefocusSimulateDefocus, gen_psf_defocusgen_psf_defocusGenPsfDefocusgen_psf_defocusGenPsfDefocusGenPsfDefocus, optimize_fft_speedoptimize_fft_speedOptimizeFftSpeedoptimize_fft_speedOptimizeFftSpeedOptimizeFftSpeed

Alternativen

wiener_filter_niwiener_filter_niWienerFilterNiwiener_filter_niWienerFilterNiWienerFilterNi

Siehe auch

simulate_motionsimulate_motionSimulateMotionsimulate_motionSimulateMotionSimulateMotion, gen_psf_motiongen_psf_motionGenPsfMotiongen_psf_motionGenPsfMotionGenPsfMotion, simulate_defocussimulate_defocusSimulateDefocussimulate_defocusSimulateDefocusSimulateDefocus, gen_psf_defocusgen_psf_defocusGenPsfDefocusgen_psf_defocusGenPsfDefocusGenPsfDefocus

Literatur

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

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren