KlassenKlassenKlassenKlassen | | | | Operatoren

coherence_enhancing_diffcoherence_enhancing_diffCoherenceEnhancingDiffcoherence_enhancing_diffCoherenceEnhancingDiffCoherenceEnhancingDiff (Operator)

Name

coherence_enhancing_diffcoherence_enhancing_diffCoherenceEnhancingDiffcoherence_enhancing_diffCoherenceEnhancingDiffCoherenceEnhancingDiff — Koherenzverstärkende Diffusion eines Bildes.

Signatur

coherence_enhancing_diff(Image : ImageCED : Sigma, Rho, Theta, Iterations : )

Herror coherence_enhancing_diff(const Hobject Image, Hobject* ImageCED, double Sigma, double Rho, double Theta, const Hlong Iterations)

Herror T_coherence_enhancing_diff(const Hobject Image, Hobject* ImageCED, const Htuple Sigma, const Htuple Rho, const Htuple Theta, const Htuple Iterations)

Herror coherence_enhancing_diff(Hobject Image, Hobject* ImageCED, const HTuple& Sigma, const HTuple& Rho, const HTuple& Theta, const HTuple& Iterations)

HImage HImage::CoherenceEnhancingDiff(const HTuple& Sigma, const HTuple& Rho, const HTuple& Theta, const HTuple& Iterations) const

HImageArray HImageArray::CoherenceEnhancingDiff(const HTuple& Sigma, const HTuple& Rho, const HTuple& Theta, const HTuple& Iterations) const

void CoherenceEnhancingDiff(const HObject& Image, HObject* ImageCED, const HTuple& Sigma, const HTuple& Rho, const HTuple& Theta, const HTuple& Iterations)

HImage HImage::CoherenceEnhancingDiff(double Sigma, double Rho, double Theta, Hlong Iterations) const

void HOperatorSetX.CoherenceEnhancingDiff(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageCED, [in] VARIANT Sigma, [in] VARIANT Rho, [in] VARIANT Theta, [in] VARIANT Iterations)

IHImageX* HImageX.CoherenceEnhancingDiff(
[in] double Sigma, [in] double Rho, [in] double Theta, [in] Hlong Iterations)

static void HOperatorSet.CoherenceEnhancingDiff(HObject image, out HObject imageCED, HTuple sigma, HTuple rho, HTuple theta, HTuple iterations)

HImage HImage.CoherenceEnhancingDiff(double sigma, double rho, double theta, int iterations)

Beschreibung

Der Operator coherence_enhancing_diffcoherence_enhancing_diffCoherenceEnhancingDiffcoherence_enhancing_diffCoherenceEnhancingDiffCoherenceEnhancingDiff führt einen anisotropen Diffusionsvorgang auf dem Eingabebild ImageImageImageImageImageimage durch mit dem Ziel, die Kohärenz der in ImageImageImageImageImageimage enthaltenen Bildstrukturen zu erhöhen, das heißt insbesondere, unterbrochene Bildkanten diffusiv miteinander zu verbinden ohne sie dabei senkrecht zur Kantenrichtung zu verschmieren. Dazu nutzt coherence_enhancing_diffcoherence_enhancing_diffCoherenceEnhancingDiffcoherence_enhancing_diffCoherenceEnhancingDiffCoherenceEnhancingDiff eine Diskretisierung der anisotropen Diffusionsgleichung

nach Weickert. Mit einer von den Grauwerten in ImageImageImageImageImageimage abhängigen 2x2 Koeffizientenmatrix G ist diese eine Weiterentwicklung der Krümmungsfluss- oder intrinsischen Wärmeleitungsgleichung
auf der durch das Eingabebild ImageImageImageImageImageimage zu einem Zeitpunkt definierten Grauwertfunktion u. Der Glättungsoperator mean_curvature_flowmean_curvature_flowMeanCurvatureFlowmean_curvature_flowMeanCurvatureFlowMeanCurvatureFlow verwendet die Krümmungsflussgleichung direkt. Die diskrete Diffusionsgleichung wird in IterationsIterationsIterationsIterationsIterationsiterations Zeitschritten der Länge ThetaThetaThetaThetaThetatheta gelöst, so dass das Ausgabebild ImageCEDImageCEDImageCEDImageCEDImageCEDimageCED die Grauwertfunktion zur Zeit enthält.

Um die Kantenrichtungen insbesondere bei verrauschten Eingabedaten stabiler zu bestimmen, kann der Berechnung der Grauwertgradienten ein zusätzlicher isotroper Glättungsschritt vorgeschaltet werden. Der Parameter SigmaSigmaSigmaSigmaSigmasigma bestimmt die Stärke dieser Glättung als Standardabweichung des zugehörigen Gauß-Faltungskernes, wie er auch im Operator isotropic_diffusionisotropic_diffusionIsotropicDiffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusion zur isotropen Glättung eines Bildes verwendet wird.

Während die Matrix G im Fall des Krümmungsflusses mean_curvature_flowmean_curvature_flowMeanCurvatureFlowmean_curvature_flowMeanCurvatureFlowMeanCurvatureFlow gegeben wird durch

wobei I die Einheitsmatrix bezeichnet, wird diese Matrix in coherence_enhancing_diffcoherence_enhancing_diffCoherenceEnhancingDiffcoherence_enhancing_diffCoherenceEnhancingDiffCoherenceEnhancingDiff komponentenweise in Ortsrichtung durch einen Gauß-Filter mit Standardabweichung RhoRhoRhoRhoRhorho geglättet und anschließend aus den Eigenwerten und Eigenvektoren der so entstandenen Matrix die endgültige Koeffizientenmatrix
konstruiert, wobei die Funktionen
empirisch bestimmt und aus der Veröffentlichung von Weickert entnommen sind.

Die Diffusionsrichtung wird bei mean_curvature_flowmean_curvature_flowMeanCurvatureFlowmean_curvature_flowMeanCurvatureFlowMeanCurvatureFlow also alleine durch die lokale Richtung des Grauwertgradienten bestimmt, wohingegen die makroskopische Struktur der Bildobjekte auf der Skala RhoRhoRhoRhoRhorho wiedergibt und die Stärke der Diffusion in coherence_enhancing_diffcoherence_enhancing_diffCoherenceEnhancingDiffcoherence_enhancing_diffCoherenceEnhancingDiffCoherenceEnhancingDiff davon abhängt, wie gut diese Struktur definiert ist.

Parallelisierung

Parameter

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

Eingabebild.

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

Ausgabebild.

SigmaSigmaSigmaSigmaSigmasigma (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Glättungsparameter für Ableitungsoperator.

Defaultwert: 0.5

Wertevorschläge: 0.0, 0.1, 0.5, 1.0

Restriktion: Sigma >= 0

RhoRhoRhoRhoRhorho (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Glättungsparameter für Diffusionskoeffizienten.

Defaultwert: 3.0

Wertevorschläge: 0.0, 1.0, 3.0, 5.0, 10.0, 30.0

Restriktion: Rho >= 0

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

Zeitschritt.

Defaultwert: 0.5

Wertevorschläge: 0.1, 0.2, 0.3, 0.4, 0.5

Restriktion: 0 < Theta <= 0.5

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

Anzahl Iterationen.

Defaultwert: 10

Wertevorschläge: 1, 5, 10, 20, 50, 100, 500

Restriktion: Iterations >= 1

Literatur

J. Weickert, V. Hlavac, R. Sara; „Multiscale texture enhancement“; Computer analysis of images and patterns, Lecture Notes in Computer Science, Vol. 970, pp. 230-237; Springer, Berlin; 1995.
J. Weickert, B. ter Haar Romeny, L. Florack, J. Koenderink, M. Viergever; „A review of nonlinear diffusion filtering“; Scale-Space Theory in Computer Vision, Lecture Notes in Comp. Science, Vol. 1252, pp. 3-28; Springer, Berlin; 1997.

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren