estimate_noise
— Schätzung des Bildrauschens aus einem Bild.
Der Operator estimate_noise
schätzt die Standardabweichung
von additivem Rauschen innerhalb des Definitionsbereiches des in
Image
übergebenen Bildes.
In folgenden Anwendungsfällen ist der Operator hilfreich:
Bestimmung von MinContrast für das Matching,
Bestimmung der Kantenamplitude bei Kantenfiltern,
Beurteilung einer Kamera,
Überwachung der Fehlbedienung einer Kamera (z.B. zu hoher Gain durch den Anwender).
Die folgenden vier Methoden zur Schätzung des Rauschens stehen zur Verfügung:
'foerstner' : Falls für Method
'foerstner' gewählt wird, wird zunächst für jedes Pixel ein
Homogenitätsmaß basierend auf den ersten Ableitungen der Grauwerte
von Image
berechnet. Durch Anwendung eines Schwellwertes
auf das Homogenitätsmaß erhält man die homogenen Bildbereiche. Der
Schwellwert wird aus einem Näherungswert für das Bildrauschen
gewonnen. Als Näherungswert dient der mit Hilfe der Methode
'immerkaer' (siehe unten) ermittelte Wert. Die
Rauschschätzung basiert auf der Annahme, dass die
Grauwertschwankungen innerhalb der homogenen Bildbereiche
ausschließlich auf das Bildrauschen zurückzuführen sind. Außerdem
wird angenommen, dass das Bildrauschen Gaußverteilt ist. Das über
die homogenen Bereiche gemittelte Homogenitätsmaß wird dazu
genutzt, eine verbesserte Schätzung für das Bildrauschen zu
erhalten. Aus der verbesserten Schätzung kann schließlich ein
neuer Schwellwert für das Homogenitätsmaß abgeleitet werden. Der
bisher beschriebene Vorgang wird solange wiederholt, bis die
verbesserte Schätzung genügend genau ermittelt worden ist.
Letztendlich wird die Standardabweichung des geschätzten
Bildrauschens in 'Sigma' zurückgeliefert.
Es ist zu beachten, dass die Iteration in einigen Fällen fälschlicherweise gegen den Wert 0 konvergiert. Dies kann z.B. dann auftreten, wenn Lücken im Grauwerthistogramm des Eingabebildes vorhanden sind. Lücken im Grauwerthistogramm können sowohl durch eine automatische radiometrische Skalierung innerhalb der Kamera oder des Framegrabbers verursacht werden als auch durch eine manuelle Spreizung der Grauwerte im Bild mit einem Skalierungsfaktor > 1.
Das mit dieser Methode ermittelte Ergebnis ist unabhängig von dem
in Percent
übergebenen Wert.
'immerkaer' : Bei der Methode 'immerkaer' wird zunächst folgende Filtermaske auf das Eingabebild angewendet:
Der Vorteil dieser Methode ist, dass M weitgehend unabhängig vom Bildinhalt ist und nur vom Bildrauschen beeinflusst wird. Geht man von einem Gaußverteilten Rauschen aus, so kann dessen Standardabweichung schließlich wie folgt ermittelt werden:
Dabei beschreibt N die Anzahl der Pixel, auf die M angewendet wurde.
Das mit dieser Methode ermittelte Ergebnis ist unabhängig von dem
in Percent
übergebenen Wert.
'least_squares' : Falls für Method
'least_squares' gewählt wird, werden die
Grauwertschwankungen relativ zu einer lokal geschätzten
Grauwertebene genutzt, um das Bildrauschen zu ermitteln. Dafür
wird zunächst ein Homogenitätsmaß basierend auf den ersten
Ableitungen der Grauwerte von Image
berechnet. Homogene
Bildbereiche werden ermittelt, indem die Percent
Prozent
homogensten Pixel, d.h. Pixel mit kleiner erster Ableitung, im
Definitionsbereich des Eingabebildes ausgewählt werden. Für jedes
ausgewählte Pixel wird eine Ebene an die Grauwerte innerhalb einer
3x3-Umgebung angepasst. Die Differenzen zwischen
dieser Ebene und den Grauwerten in der
3x3-Umgebung dienen dazu, die Standardabweichung
des Rauschens zu ermitteln. Schließlich wird die über alle
homogenen Pixel gemittelte Standardabweichung in Sigma
zurückgegeben.
'mean' : Falls für Method
'mean' gewählt wird, basiert die Ermittlung des
Bildrauschens auf der Differenz zwischen dem Eingabebild und einer
rauschfreien Version des Eingabebildes. Dafür wird zunächst ein
Homogenitätsmaß basierend auf den ersten Ableitungen der Grauwerte
von Image
berechnet. Homogene Bildbereiche werden
ermittelt, indem die Percent
Prozent homogensten Pixel,
d.h. Pixel mit kleiner erster Ableitung, im Definitionsbereich des
Eingabebildes ausgewählt werden. Die anschließende Anwendung eines
Mittelwertfilters auf die homogenen Bildregionen dient der
Eliminierung des Bildrauschens. Es wird angenommen, dass die
Differenz zwischen dem Eingabebild und dessen rauschfreier Version
das zu ermittelnde Rauschen enthält. Schließlich wird die
Standardabweichung der Differenzen in Sigma
zurückgegeben. Bei der Anwendung dieses Verfahrens ist darauf zu
achten, dass eine zuverlässige Ermittlung des Bildrauschens große
zusammenhängende homogene Bildregionen voraussetzt.
Es gilt zu beachten, dass die Methoden 'foerstner' und 'immerkaer' von einem Gaußverteilten Bildrauschen ausgehen, während die Methoden 'least_squares' und 'mean' auch auf Bilder mit beliebig verteiltem Rauschen angewendet werden können. Allgemein gilt, dass die Methode 'foerstner' die genauesten Ergebnisse liefert, während die Methode 'immerkaer' die kürzeste Berechnungszeit aufweist.
Sollte das Bildrauschen nicht zuverlässig geschätzt werden können,
wird der Fehler 3175 zurückgegeben. Dies tritt insbesondere dann
auf, wenn das Eingabebild nicht genügend homogene Regionen
beinhaltet, das Eingabebild künstlich erzeugt wurde oder das
Rauschen nicht Gaußverteilt ist. Um diesen Fehler zu vermeiden, kann
es in manchen Fällen sinnvoll sein, in Abhängigkeit der verwendeten
Methode Method
, eine der folgenden Änderungen vorzunehmen:
Vergrößern des Definitionsbereiches des Eingabebildes (bei allen Methoden anwendbar).
Erhöhen des Wertes für den Parameter
Percent
(bei den Methoden 'least_squares' und
'mean' anwendbar).
Verwenden der Methode 'immerkaer' anstatt der Methoden 'foerstner' , 'least_squares' , oder 'mean' . Die Methode 'immerkaer' ist nicht auf das Vorhandensein homogener Bildregionen angewiesen und ist somit in fast allen Fällen anwendbar.
Beachten Sie, dass Filteroperatoren eventuell unerwartete Resultate ausgeben, wenn ein Bild mit einer reduzierten Domäne als Input übergeben wird. Weitere Informationen können im Kapitel Filter gefunden werden.
Image
(input_object) singlechannelimage(-array) →
object (byte / uint2)
Eingabebild.
Method
(input_control) string →
(string)
Methode zur Schätzung des Bildrauschens.
Defaultwert: 'foerstner'
Werteliste: 'foerstner' , 'immerkaer' , 'least_squares' , 'mean'
Percent
(input_control) number →
(real / integer)
Prozentsatz der verwendeten Bildpunkte.
Defaultwert: 20
Wertevorschläge: 1, 2, 5, 7, 10, 15, 20, 30, 40, 50
Restriktion: 0 < Percent && Percent <= 50.
Sigma
(output_control) real(-array) →
(real)
Standardabweichung des Bildrauschens.
Zusicherung: Sigma >= 0
read_image (Image, 'combine') estimate_noise (ImageNoise, 'foerstner', 20, SigmaFoerstner) estimate_noise (ImageNoise, 'immerkaer', 20, SigmaImmerkaer) estimate_noise (ImageNoise, 'least_squares', 20, SigmaLeastSquares) estimate_noise (ImageNoise, 'mean', 20, SigmaMean)
Sind die Parameterwerte korrekt, dann liefert estimate_noise
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt. Konnte das Rauschen nicht zuverlässig geschätzt
werden, wird die Fehlermeldung 3175 zurückgeliefert.
grab_image
,
grab_image_async
,
read_image
,
reduce_domain
binomial_filter
,
gauss_filter
,
mean_image
,
smooth_image
noise_distribution_mean
,
intensity
,
min_max_gray
gauss_distribution
,
add_noise_distribution
W. Förstner: „Image Preprocessing for Feature Extraction in Digital
Intensity, Color and Range Images„, Springer Lecture Notes on Earth
Sciences, Summer School on Data Analysis and the Statistical
Foundations of Geomatics, 1999
J. Immerkaer: „Fast Noise Variance Estimation„, Computer Vision
and Image Understanding, Vol. 64, No. 2, pp. 300-302, 1996
Foundation