Name
sobel_dir sobel_dir SobelDir sobel_dir SobelDir SobelDir — Kantendetektion (Amplitude und Richtung) mit dem Sobel-Operator.
void SobelDir (const HObject& Image , HObject* EdgeAmplitude , HObject* EdgeDirection , const HTuple& FilterType , const HTuple& Size )
HImage HImage ::SobelDir (HImage* EdgeDirection , const HString& FilterType , const HTuple& Size ) const
HImage HImage ::SobelDir (HImage* EdgeDirection , const HString& FilterType , Hlong Size ) const
HImage HImage ::SobelDir (HImage* EdgeDirection , const char* FilterType , Hlong Size ) const
sobel_dir sobel_dir SobelDir sobel_dir SobelDir SobelDir berechnet eine Art von erster Ableitung der
Grauwertdaten und wird als Kantenfilter eingesetzt. Dem Filter
liegen folgende zwei Filtermasken zugrunde:
A =
1 2 1
0 0 0
-1 -2 -1
B =
1 0 -1
2 0 -2
1 0 -1
Diese Masken werden je nach Filtertyp unterschiedlich verwendet.
(a und b stehen im folgenden für die Ergebnisse der Faltung mit
A und B in einem Bildpunkt):
Für eine 3x3 Sobel-Filterung (Size Size Size Size Size size = 3)
werden die Filter A und B direkt angewandt. Für größere
Sobel-Filter wird das Eingabebild dagegen zunächst mit dem
Gaußfilter (siehe gauss_image gauss_image GaussImage gauss_image GaussImage GaussImage ) oder einem Binomialfilter
(siehe binomial_filter binomial_filter BinomialFilter binomial_filter BinomialFilter BinomialFilter ) der Größe Size Size Size Size Size size -2
geglättet. Der Gaußfilter wird durch die oben angegebenen Werte
von FilterType FilterType FilterType FilterType FilterType filterType ausgewählt. Hierbei ist Size Size Size Size Size size = 5,
7, 9, 11 oder 13 zu wählen. Der Binomialfilter wird ausgewählt,
indem '_binomial' "_binomial" "_binomial" "_binomial" "_binomial" "_binomial" an die oben angegebenen Werte von
FilterType FilterType FilterType FilterType FilterType filterType angehängt wird. Hier kann Size Size Size Size Size size
zwischen 5 und 39 gewählt werden. Zusätzlich ist es möglich,
unterschiedliche Glättungen in Spalten- und Zeilenrichtung durch
Angabe von zwei Werten in Size Size Size Size Size size zu erreichen. Dabei
entspricht der erste Wert der Maskenbreite (Glättung in
Spaltenrichtung) und der zweite Wert der Maskenhöhe (Glättung in
Zeilenrichtung) des Binomialfilters. Der Binomialfilter kann nur
für Bilder vom Typ byte, uint2 und real verwendet werden. Da die
Glättung die Kantenamplituden reduziert, wird in diesem Fall die
Kantenamplitude noch mit 2 multipliziert, um einen
Informationsverlust zu vermeiden. Somit ist
sobel_dir(I,Amp,Dir,FilterType,S)
für Size > 3 konzeptuell äquivalent zu
scale_image(I,F,2,0)
gauss_image(F,G,S-2)
sobel_dir(G,Amp,Dir,FilterType,3)
bzw. zu
scale_image(I,F,2,0)
binomial_filter(F,G,S[0]-2,S[1]-2)
sobel_dir(G,Amp,Dir,FilterType,3).
Im Parameter EdgeDirection EdgeDirection EdgeDirection EdgeDirection EdgeDirection edgeDirection wird die Kantenrichtungen
zurückgeliefert. Diese werden in 2-Grad-Schritten kodiert,
d.h. eine Kantenrichtung von x Grad (im mathematisch positiven Sinn
und bezogen auf die Horizontale)
wird zu x / 2 im entsprechenden Ergebnisbild.
Außerdem wird auch die Richtung der Helligkeitsänderung
berücksichtigt. Bezeichnet
den Bildgradienten,
ergeben sich folgende Kantenrichtungen r (zurückgeliefert als
r/2) zwischen 0 und 359 Grad:
In Bildpunkten mit Kantenamplitude 0 wird als Kantenrichtung der
Wert 255 (undefinierte Richtung) zurückgeliefert.
sobel_dir sobel_dir SobelDir sobel_dir SobelDir SobelDir kann auf OpenCL Geräten ausgeführt werden. Dabei ist zu
beachten, dass bei Gauss-Filterung mit Size Size Size Size Size size > 3 das Ergebnis von
dem der CPU-Implementierung abweichen kann.
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.
Unterstützt OpenCL Compute Devices.
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.
Automatisch parallelisiert auf Domainebene.
Filtertyp.
Defaultwert:
'sum_abs'
"sum_abs"
"sum_abs"
"sum_abs"
"sum_abs"
"sum_abs"
Werteliste: 'sum_abs' "sum_abs" "sum_abs" "sum_abs" "sum_abs" "sum_abs" , 'sum_abs_binomial' "sum_abs_binomial" "sum_abs_binomial" "sum_abs_binomial" "sum_abs_binomial" "sum_abs_binomial" , 'sum_sqrt' "sum_sqrt" "sum_sqrt" "sum_sqrt" "sum_sqrt" "sum_sqrt" , 'sum_sqrt_binomial' "sum_sqrt_binomial" "sum_sqrt_binomial" "sum_sqrt_binomial" "sum_sqrt_binomial" "sum_sqrt_binomial"
Werteliste (für Compute Devices): 'sum_abs' "sum_abs" "sum_abs" "sum_abs" "sum_abs" "sum_abs" , 'sum_sqrt' "sum_sqrt" "sum_sqrt" "sum_sqrt" "sum_sqrt" "sum_sqrt" , 'sum_abs_binomial' "sum_abs_binomial" "sum_abs_binomial" "sum_abs_binomial" "sum_abs_binomial" "sum_abs_binomial" , 'sum_sqrt_binomial' "sum_sqrt_binomial" "sum_sqrt_binomial" "sum_sqrt_binomial" "sum_sqrt_binomial" "sum_sqrt_binomial"
Filtergröße.
Defaultwert: 3
Werteliste: 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39
read_image(Image,'fabrik')
sobel_dir(Image,Amp,Dir,'sum_abs',3)
threshold(Amp,Edg,128,255)
read_image(&Image,"fabrik");
sobel_dir(Image,&Amp,&Dir,"sum_abs",3);
threshold(Amp,&Edg,128.0,255.0);
read_image(Image,'fabrik')
sobel_dir(Image,Amp,Dir,'sum_abs',3)
threshold(Amp,Edg,128,255)
read_image(Image,'fabrik')
sobel_dir(Image,Amp,Dir,'sum_abs',3)
threshold(Amp,Edg,128,255)
read_image(Image,'fabrik')
sobel_dir(Image,Amp,Dir,'sum_abs',3)
threshold(Amp,Edg,128,255)
read_image(Image,'fabrik')
sobel_dir(Image,Amp,Dir,'sum_abs',3)
threshold(Amp,Edg,128,255)
sobel_dir sobel_dir SobelDir sobel_dir SobelDir SobelDir liefert den Wert 2 (H_MSG_TRUE), falls die Parameter
korrekt sind. 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.
binomial_filter binomial_filter BinomialFilter binomial_filter BinomialFilter BinomialFilter ,
gauss_filter gauss_filter GaussFilter gauss_filter GaussFilter GaussFilter ,
mean_image mean_image MeanImage mean_image MeanImage MeanImage ,
anisotropic_diffusion anisotropic_diffusion AnisotropicDiffusion anisotropic_diffusion AnisotropicDiffusion AnisotropicDiffusion ,
sigma_image sigma_image SigmaImage sigma_image SigmaImage SigmaImage
nonmax_suppression_dir nonmax_suppression_dir NonmaxSuppressionDir nonmax_suppression_dir NonmaxSuppressionDir NonmaxSuppressionDir ,
hysteresis_threshold hysteresis_threshold HysteresisThreshold hysteresis_threshold HysteresisThreshold HysteresisThreshold ,
threshold threshold Threshold threshold Threshold Threshold
edges_image edges_image EdgesImage edges_image EdgesImage EdgesImage ,
frei_dir frei_dir FreiDir frei_dir FreiDir FreiDir ,
kirsch_dir kirsch_dir KirschDir kirsch_dir KirschDir KirschDir ,
prewitt_dir prewitt_dir PrewittDir prewitt_dir PrewittDir PrewittDir ,
robinson_dir robinson_dir RobinsonDir robinson_dir RobinsonDir RobinsonDir
roberts roberts Roberts roberts Roberts Roberts ,
laplace laplace Laplace laplace Laplace Laplace ,
highpass_image highpass_image HighpassImage highpass_image HighpassImage HighpassImage ,
bandpass_image bandpass_image BandpassImage bandpass_image BandpassImage BandpassImage
Foundation