Name
anisotrope_diffanisotrope_diffAnisotropeDiffanisotrope_diffAnisotropeDiffAnisotropeDiff — Kantenerhaltende Glättung durch anisotrope Diffusion.
Warnung
anisotrope_diffanisotrope_diffAnisotropeDiffanisotrope_diffAnisotropeDiffAnisotropeDiff ist veraltet und wird nur aus Gründen der
Rückwärtskompatibilität zur Verfügung gestellt. Neue Applikationen
sollten stattdessen anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusion verwenden.
Herror anisotrope_diff(const Hobject Image, Hobject* ImageAniso, const Hlong Percent, const Hlong Mode, const Hlong Iteration, const Hlong NeighborhoodType)
Herror T_anisotrope_diff(const Hobject Image, Hobject* ImageAniso, const Htuple Percent, const Htuple Mode, const Htuple Iteration, const Htuple NeighborhoodType)
Herror anisotrope_diff(Hobject Image, Hobject* ImageAniso, const HTuple& Percent, const HTuple& Mode, const HTuple& Iteration, const HTuple& NeighborhoodType)
HImage HImage::AnisotropeDiff(const HTuple& Percent, const HTuple& Mode, const HTuple& Iteration, const HTuple& NeighborhoodType) const
HImageArray HImageArray::AnisotropeDiff(const HTuple& Percent, const HTuple& Mode, const HTuple& Iteration, const HTuple& NeighborhoodType) const
anisotrope_diffanisotrope_diffAnisotropeDiffanisotrope_diffAnisotropeDiffAnisotropeDiff realisiert ein iteratives, anisotropes
Glättungsverfahren, das auf den mathematischen Grundlagen der
physikalischen Diffusion beruht. In Analogie zum physikalischen
Diffusionsprozess, der den Konzentrationsausgleich zwischen
Molekülen in Abhängigkeit vom Dichtegradienten beschreibt, führt
der Diffusionsfilter eine Glättung der Grauwerte, abhängig von den
lokalen Grauwertgradienten, durch.
Zur iterativen Berechnung des Grauwertes eines Pixels werden die
Grauwertdifferenzen zu den vier bzw. acht Nachbarn herangezogen.
Diese Grauwertdifferenzen gehen jedoch mit unterschiedlicher
Gewichtung in die Berechnung ein, d.h. es handelt sich um einen
nichtlinearen Diffusionsprozess.
Die Gewichtung erfolgt mittels einer Diffusionsfunktion
(implementiert wurden zwei verschiedene Funktionen, ModeModeModeModeModemode
= 1 bzw. 2), die --- abhängig vom Gradienten --- dafür sorgt, dass
innerhalb homogener Regionen stärker geglättet wird als über die
Regionengrenzen hinweg. Die Kanten bleiben deswegen scharf erhalten.
Die Diffusionsfunktion wird mittels einer Histogrammanalyse im
Gradientenbild (nach Canny) auf das Rauschverhältnis des Bildes hin
abgestimmt. Ein hoher Wert für PercentPercentPercentPercentPercentpercent erhöht dabei
die glättende Wirkung, verwischt aber auch Kanten etwas mehr
(typisch sind Werte von 80 - 90 Prozent).
Der Parameter IterationIterationIterationIterationIterationiteration legt die Zahl der Iterationen
fest (typisch 3--7).
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
- Automatisch parallelisiert auf Kanalebene.
Für Histogrammanalyse. Größere Werte erhöhen die
glättende Wirkung, typisch: 80 - 90.
Defaultwert: 80
Wertevorschläge: 65, 70, 75, 80, 85, 90
Typischer Wertebereich: 50
≤
Percent
Percent
Percent
Percent
Percent
percent
≤
100
Minimale Schrittweite: 1
Empfohlene Schrittweite: 5
Auswahl der Diffusionsfunktion.
Defaultwert: 1
Werteliste: 1, 2
Anzahl der Iterationen, typische Werte: 3 - 7.
Defaultwert: 5
Wertevorschläge: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Typischer Wertebereich: 1
≤
Iteration
Iteration
Iteration
Iteration
Iteration
iteration
≤
30
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Gewünschter Nachbarschaftstyp.
Defaultwert: 8
Werteliste: 4, 8
read_image(Image,'fabrik')
anisotrope_diff(Image,Aniso,80,1,5,8)
sub_image(Image,Aniso,Sub,2.0,127)
disp_image(Sub,WindowHandle)
read_image(&Image,"fabrik");
anisotrope_diff(Image,&Aniso,80,1,5,8);
sub_image(Image,Aniso,&Sub,2.0,127.0);
disp_image(Sub,WindowHandle);
read_image(Image,'fabrik')
anisotrope_diff(Image,Aniso,80,1,5,8)
sub_image(Image,Aniso,Sub,2.0,127)
disp_image(Sub,WindowHandle)
read_image(Image,'fabrik')
anisotrope_diff(Image,Aniso,80,1,5,8)
sub_image(Image,Aniso,Sub,2.0,127)
disp_image(Sub,WindowHandle)
read_image(Image,'fabrik')
anisotrope_diff(Image,Aniso,80,1,5,8)
sub_image(Image,Aniso,Sub,2.0,127)
disp_image(Sub,WindowHandle)
read_image(Image,'fabrik')
anisotrope_diff(Image,Aniso,80,1,5,8)
sub_image(Image,Aniso,Sub,2.0,127)
disp_image(Sub,WindowHandle)
Pro Bildpunkt: O(Iterations * 18).
Sind die Parameterwerte korrekt, dann liefert
anisotrope_diffanisotrope_diffAnisotropeDiffanisotrope_diffAnisotropeDiffAnisotropeDiff den Wert 2 (H_MSG_TRUE). Das Verhalten bei
leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels
set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)
festlegen. Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
read_imageread_imageReadImageread_imageReadImageReadImage,
grab_imagegrab_imageGrabImagegrab_imageGrabImageGrabImage
regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing,
thresholdthresholdThresholdthresholdThresholdThreshold,
sub_imagesub_imageSubImagesub_imageSubImageSubImage,
dyn_thresholddyn_thresholdDynThresholddyn_thresholdDynThresholdDynThreshold,
auto_thresholdauto_thresholdAutoThresholdauto_thresholdAutoThresholdAutoThreshold
sigma_imagesigma_imageSigmaImagesigma_imageSigmaImageSigmaImage,
rank_imagerank_imageRankImagerank_imageRankImageRankImage
smooth_imagesmooth_imageSmoothImagesmooth_imageSmoothImageSmoothImage,
binomial_filterbinomial_filterBinomialFilterbinomial_filterBinomialFilterBinomialFilter,
gauss_imagegauss_imageGaussImagegauss_imageGaussImageGaussImage,
sigma_imagesigma_imageSigmaImagesigma_imageSigmaImageSigmaImage,
rank_imagerank_imageRankImagerank_imageRankImageRankImage,
eliminate_min_maxeliminate_min_maxEliminateMinMaxeliminate_min_maxEliminateMinMaxEliminateMinMax
P. Perona, J. Malik: „Scale-space and edge detection using anisotropic
diffusion“, IEEE transaction on pattern analysis and machine intelligence,
Vol. 12, No. 7, July 1990.
Foundation