detect_edge_segments
— Detektion gerader Kantenstücke.
detect_edge_segments(Image : : SobelSize, MinAmplitude, MaxDistance, MinLength : BeginRow, BeginCol, EndRow, EndCol)
detect_edge_segments
detektiert gerade Kantenstücke in einem
Graustufenbild. Die gefundenen Kantensegmente werden als Strecken
Linien) mit einem Anfangs-(BeginRow
,BeginCol
)
und einem Endpunkt (EndRow
,EndCol
)
zurückgeliefert. Die Kantendetektion basiert auf dem Sobelfilter
(Variante 'sum_abs', Filtergröße, gemäß SobelSize
).
Auf dessen Filterantwort bezieht sich auch der Parameter
MinAmplitude
: Nur Pixel mit Intensität größer oder
gleich MinAmplitude
im gefilterten Eingangsbild werden
als Kanditaten für Kantenpunkte verwendet. Die Rohkanten werden
verdünnt und in gerade Teilstücke zerlegt. Aus technischen
Gründen gehen dabei Kantenpunkte, in denen sich mehrere Kanten
treffen, verloren. Somit liefert detect_edge_segments
im
allgemeinen keine geschlossenen Objektkonturen (bzw. lineare
Approximationen daran). Der Parameter MaxDistance
steuert die Zerlegung von Kanten in gerade Teilstücke. Er gibt die
maximale Abweichung eines Kantenpunktes von der approximierenden
Geraden an. Aus Laufzeitgründen wird dabei nicht der euklidische
Abstand, sondern die Betragssumme der Koordinatendifferenzen
verwendet. MinLength
gibt die gewünschte Mindestlänge
der Ausgabelinien an. Kürzere Linien werden unterdrückt.
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) (multichannel-)image(-array) →
object (byte)
Eingabebild.
SobelSize
(input_control) integer →
(integer)
Filtergröße für Sobeloperator.
Defaultwert: 5
Werteliste: 3, 5, 7, 9, 11, 13
MinAmplitude
(input_control) integer →
(integer)
Mindestamplitude für Kanten.
Defaultwert: 32
Wertevorschläge: 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 80, 90, 100, 110
Typischer Wertebereich: 1
≤
MinAmplitude
≤
255
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: MinAmplitude >= 0
MaxDistance
(input_control) integer →
(integer)
Maximale Abweichung der approximierenden Geraden von der ursprünglichen Kante.
Defaultwert: 3
Wertevorschläge: 2, 3, 4, 5, 6, 7, 8
Typischer Wertebereich: 1
≤
MaxDistance
≤
30
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: MaxDistance >= 0
MinLength
(input_control) integer →
(integer)
Mindestlänge der Ausgabelinien.
Defaultwert: 10
Wertevorschläge: 3, 5, 7, 9, 11, 13, 16, 20
Typischer Wertebereich: 1
≤
MinLength
≤
500
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: MinLength >= 0
BeginRow
(output_control) line.begin.y-array →
(integer)
Zeilenkoordinaten der Anfangspunkte der Ausgabelinien.
BeginCol
(output_control) line.begin.x-array →
(integer)
Spaltenkoordinaten der Anfgangspunkte der Ausgabelinien.
EndRow
(output_control) line.end.y-array →
(integer)
Zeilenkoordinaten der Endpunkte der Ausgabelinien.
EndCol
(output_control) line.end.x-array →
(integer)
Spaltenkoordinaten der Endpunkte der Ausgabelinien.
Htuple SobelSize,MinAmplitude,MaxDistance,MinLength; Htuple RowBegin,ColBegin,RowEnd,ColEnd; create_tuple(&SobelSize,1); set_i(SobelSize,5,0); create_tuple(&MinAmplitude,1); set_i(MinAmplitude,32,0); create_tuple(&MaxDistance,1); set_i(MaxDistance,3,0); create_tuple(&MinLength,1); set_i(MinLength,10,0); T_detect_edge_segments(Image,SobelSize,MinAmplitude,MaxDistance,MinLength, &RowBegin,&ColBegin,&RowEnd,&ColEnd);
Sind die Parameterwerte korrekt, dann liefert
detect_edge_segments
den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer
Eingabe (keine Eingabebilder vorhanden) lässt sich mittels
set_system('no_object_result',<Result>)
festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
partition_lines
,
line_position
,
line_orientation
sobel_amp
,
threshold
,
skeleton
Foundation