KlassenKlassenKlassenKlassen | | | | Operatoren

anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusion (Operator)

Name

anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusion — Anisotrope Glättung eines Bildes.

Signatur

anisotropic_diffusion(Image : ImageAniso : Mode, Contrast, Theta, Iterations : )

Herror anisotropic_diffusion(const Hobject Image, Hobject* ImageAniso, const char* Mode, double Contrast, double Theta, const Hlong Iterations)

Herror T_anisotropic_diffusion(const Hobject Image, Hobject* ImageAniso, const Htuple Mode, const Htuple Contrast, const Htuple Theta, const Htuple Iterations)

Herror anisotropic_diffusion(Hobject Image, Hobject* ImageAniso, const HTuple& Mode, const HTuple& Contrast, const HTuple& Theta, const HTuple& Iterations)

HImage HImage::AnisotropicDiffusion(const HTuple& Mode, const HTuple& Contrast, const HTuple& Theta, const HTuple& Iterations) const

HImageArray HImageArray::AnisotropicDiffusion(const HTuple& Mode, const HTuple& Contrast, const HTuple& Theta, const HTuple& Iterations) const

void AnisotropicDiffusion(const HObject& Image, HObject* ImageAniso, const HTuple& Mode, const HTuple& Contrast, const HTuple& Theta, const HTuple& Iterations)

HImage HImage::AnisotropicDiffusion(const HString& Mode, double Contrast, double Theta, Hlong Iterations) const

HImage HImage::AnisotropicDiffusion(const char* Mode, double Contrast, double Theta, Hlong Iterations) const

void HOperatorSetX.AnisotropicDiffusion(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageAniso, [in] VARIANT Mode, [in] VARIANT Contrast, [in] VARIANT Theta, [in] VARIANT Iterations)

IHImageX* HImageX.AnisotropicDiffusion(
[in] BSTR Mode, [in] double Contrast, [in] double Theta, [in] Hlong Iterations)

static void HOperatorSet.AnisotropicDiffusion(HObject image, out HObject imageAniso, HTuple mode, HTuple contrast, HTuple theta, HTuple iterations)

HImage HImage.AnisotropicDiffusion(string mode, double contrast, double theta, int iterations)

Beschreibung

Der Operator anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusion führt eine anisotrope Diffusion des Eingabebildes ImageImageImageImageImageimage nach dem Modell von Perona und Malik durch. Dieser Vorgang wird auch als nichtlinear isotrope Diffusion bezeichnet. Ordnet man dem Bild eine Grauwertfunktion u zu, so ist der Algorithmus eine Diskretisierung der partiellen Differentialgleichung

mit dem durch ImageImageImageImageImageimage definierten Anfangswert zu einem Zeitpunkt . Die Gleichung wird dabei IterationsIterationsIterationsIterationsIterationsiterations mal in Zeitschritten der Länge ThetaThetaThetaThetaThetatheta iteriert, so dass das Ausgabebild ImageAnisoImageAnisoImageAnisoImageAnisoImageAnisoimageAniso die Grauwertfunktion zum Zeitpunkt zeigt.

Ziel der anisotropen Diffusion ist es, in flächigen Bildbereichen Bildstörungen wie Rauschen zu eliminieren, ohne dabei Bildkanten zu verwischen. Die Unterscheidung zwischen Kanten und Flächen wird durch den Schwellwert ContrastContrastContrastContrastContrastcontrast für die Größe der Grauwertdifferenz zwischen benachbarten Pixeln getroffen. ContrastContrastContrastContrastContrastcontrast wird auch als Kontrastparameter bezeichnet und mit c abgekürzt.

Der variable Diffusionskoeffizient g kann dabei verschiedenen monoton fallenden Funktionen mit Werten zwischen 0 und 1 folgen und bestimmt das Antwortverhalten des Diffusionsvorganges auf eine Kante. Über den Parameter ModeModeModeModeModemode stehen die folgenden Funktionen zur Verfügung:

Die Wahl der Funktion , wenn ModeModeModeModeModemode auf 'parabolic'"parabolic""parabolic""parabolic""parabolic""parabolic" gesetzt wird, garantiert, dass die zugehörige Differentialgleichung parabolisch ist, so dass eine Wohlgestelltheitstheorie für das Problem existiert und das Verfahren für beliebige Schrittweiten ThetaThetaThetaThetaThetatheta stabil ist. In diesem Falle bleibt es aber bei einer leichten Diffusion auch über Kanten hinweg, deren Stärke c übersteigt.
Die in der Veröffentlichung von Perona und Malik verwendete Funktion bei Wahl von 'perona-malik'"perona-malik""perona-malik""perona-malik""perona-malik""perona-malik" für ModeModeModeModeModemode besitzt nicht die theoretischen Eigenschaften von , hat sich in der Praxis aber dennoch als ausreichend stabil erwiesen. Die theoretische Instabilität zeigt sich in einer leichten Schärfung von starken Kanten.
Die von Weickert vorgeschlagene Wahl bei ModeModeModeModeModemode='weickert'"weickert""weickert""weickert""weickert""weickert" mit der Konstanten C=3.31488 ist eine Steigerung von im Bezug auf die Kantenschärfe. Der Übergang zwischen Glättung und Schärfung erfolgt hier sehr abrupt an der Stelle x = c^2.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject (byte / uint2 / real)

Eingabebild.

ImageAnisoImageAnisoImageAnisoImageAnisoImageAnisoimageAniso (output_object)  image(-array) objectHImageHImageHImageHImageXHobject * (byte / uint2 / real)

Ausgabebild.

ModeModeModeModeModemode (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Diffusionskoeffizient als Funktion der Kantenstärke.

Defaultwert: 'weickert' "weickert" "weickert" "weickert" "weickert" "weickert"

Werteliste: 'parabolic'"parabolic""parabolic""parabolic""parabolic""parabolic", 'perona-malik'"perona-malik""perona-malik""perona-malik""perona-malik""perona-malik", 'weickert'"weickert""weickert""weickert""weickert""weickert"

ContrastContrastContrastContrastContrastcontrast (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Kontrastparameter.

Defaultwert: 5.0

Wertevorschläge: 2.0, 5.0, 10.0, 20.0, 50.0, 100.0

Restriktion: Contrast > 0

ThetaThetaThetaThetaThetatheta (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Zeitschritt.

Defaultwert: 1.0

Wertevorschläge: 0.5, 1.0, 3.0

Restriktion: Theta > 0

IterationsIterationsIterationsIterationsIterationsiterations (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Anzahl Iterationen.

Defaultwert: 10

Wertevorschläge: 1, 3, 10, 100, 500

Restriktion: Iterations >= 1

Literatur

J. Weickert; „'Anisotropic Diffusion in Image Processing'; PhD Thesis; Fachbereich Mathematik, Universität Kaiserslautern; 1996.
P. Perona, J. Malik; „Scale-space and edge detection using anisotropic diffusion“; Transactions on Pattern Analysis and Machine Intelligence 12(7), pp. 629-639; IEEE; 1990.
G. Aubert, P. Kornprobst; „Mathematical Problems in Image Processing“; Applied Mathematical Sciences 147; Springer, New York; 2002.

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren