detect_edge_segmentsT_detect_edge_segmentsDetectEdgeSegmentsDetectEdgeSegmentsdetect_edge_segments (Operator)

Name

detect_edge_segmentsT_detect_edge_segmentsDetectEdgeSegmentsDetectEdgeSegmentsdetect_edge_segments — Detektion gerader Kantenstücke.

Signatur

detect_edge_segments(Image : : SobelSize, MinAmplitude, MaxDistance, MinLength : BeginRow, BeginCol, EndRow, EndCol)

Herror T_detect_edge_segments(const Hobject Image, const Htuple SobelSize, const Htuple MinAmplitude, const Htuple MaxDistance, const Htuple MinLength, Htuple* BeginRow, Htuple* BeginCol, Htuple* EndRow, Htuple* EndCol)

void DetectEdgeSegments(const HObject& Image, const HTuple& SobelSize, const HTuple& MinAmplitude, const HTuple& MaxDistance, const HTuple& MinLength, HTuple* BeginRow, HTuple* BeginCol, HTuple* EndRow, HTuple* EndCol)

void HImage::DetectEdgeSegments(Hlong SobelSize, Hlong MinAmplitude, Hlong MaxDistance, Hlong MinLength, HTuple* BeginRow, HTuple* BeginCol, HTuple* EndRow, HTuple* EndCol) const

static void HOperatorSet.DetectEdgeSegments(HObject image, HTuple sobelSize, HTuple minAmplitude, HTuple maxDistance, HTuple minLength, out HTuple beginRow, out HTuple beginCol, out HTuple endRow, out HTuple endCol)

void HImage.DetectEdgeSegments(int sobelSize, int minAmplitude, int maxDistance, int minLength, out HTuple beginRow, out HTuple beginCol, out HTuple endRow, out HTuple endCol)

def detect_edge_segments(image: HObject, sobel_size: int, min_amplitude: int, max_distance: int, min_length: int) -> Tuple[Sequence[int], Sequence[int], Sequence[int], Sequence[int]]

Beschreibung

detect_edge_segmentsdetect_edge_segmentsDetectEdgeSegmentsDetectEdgeSegmentsDetectEdgeSegmentsdetect_edge_segments detektiert gerade Kantenstücke in einem Graustufenbild. Die gefundenen Kantensegmente werden als Strecken Linien) mit einem Anfangs-(BeginRowBeginRowBeginRowBeginRowbeginRowbegin_row,BeginColBeginColBeginColBeginColbeginColbegin_col) und einem Endpunkt (EndRowEndRowEndRowEndRowendRowend_row,EndColEndColEndColEndColendColend_col) zurückgeliefert. Die Kantendetektion basiert auf dem Sobelfilter (Variante 'sum_abs'"sum_abs""sum_abs""sum_abs""sum_abs""sum_abs", Filtergröße, gemäß SobelSizeSobelSizeSobelSizeSobelSizesobelSizesobel_size). Auf dessen Filterantwort bezieht sich auch der Parameter MinAmplitudeMinAmplitudeMinAmplitudeMinAmplitudeminAmplitudemin_amplitude: Nur Pixel mit Intensität größer oder gleich MinAmplitudeMinAmplitudeMinAmplitudeMinAmplitudeminAmplitudemin_amplitude im gefilterten Eingangsbild werden als Kandidaten 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_segmentsdetect_edge_segmentsDetectEdgeSegmentsDetectEdgeSegmentsDetectEdgeSegmentsdetect_edge_segments im allgemeinen keine geschlossenen Objektkonturen (bzw. lineare Approximationen daran). Der Parameter MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance 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. MinLengthMinLengthMinLengthMinLengthminLengthmin_length gibt die gewünschte Mindestlänge der Ausgabelinien an. Kürzere Linien werden unterdrückt.

Achtung

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.

Ausführungsinformationen

Parameter

ImageImageImageImageimageimage (input_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject (byte)

Eingabebild.

SobelSizeSobelSizeSobelSizeSobelSizesobelSizesobel_size (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Filtergröße für Sobeloperator.

Defaultwert: 5

Werteliste: 3, 5, 7, 9, 11, 13

MinAmplitudeMinAmplitudeMinAmplitudeMinAmplitudeminAmplitudemin_amplitude (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

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 MinAmplitude MinAmplitude MinAmplitude minAmplitude min_amplitude ≤ 255

Minimale Schrittweite: 1

Empfohlene Schrittweite: 1

MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Maximale Abweichung der approximierenden Geraden von der ursprünglichen Kante.

Defaultwert: 3

Wertevorschläge: 2, 3, 4, 5, 6, 7, 8

Typischer Wertebereich: 0 ≤ MaxDistance MaxDistance MaxDistance MaxDistance maxDistance max_distance

Minimale Schrittweite: 1

Empfohlene Schrittweite: 1

MinLengthMinLengthMinLengthMinLengthminLengthmin_length (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Mindestlänge der Ausgabelinien.

Defaultwert: 10

Wertevorschläge: 3, 5, 7, 9, 11, 13, 16, 20

Typischer Wertebereich: 1 ≤ MinLength MinLength MinLength MinLength minLength min_length

Minimale Schrittweite: 1

Empfohlene Schrittweite: 1

BeginRowBeginRowBeginRowBeginRowbeginRowbegin_row (output_control)  line.begin.y-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zeilenkoordinaten der Anfangspunkte der Ausgabelinien.

BeginColBeginColBeginColBeginColbeginColbegin_col (output_control)  line.begin.x-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Spaltenkoordinaten der Anfangspunkte der Ausgabelinien.

EndRowEndRowEndRowEndRowendRowend_row (output_control)  line.end.y-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zeilenkoordinaten der Endpunkte der Ausgabelinien.

EndColEndColEndColEndColendColend_col (output_control)  line.end.x-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Spaltenkoordinaten der Endpunkte der Ausgabelinien.

Beispiel (C)

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);

Ergebnis

Sind die Parameterwerte korrekt, dann liefert detect_edge_segmentsdetect_edge_segmentsDetectEdgeSegmentsDetectEdgeSegmentsDetectEdgeSegmentsdetect_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>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

sigma_imagesigma_imageSigmaImageSigmaImageSigmaImagesigma_image, median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image

Nachfolger

partition_linespartition_linesPartitionLinesPartitionLinesPartitionLinespartition_lines, line_positionline_positionLinePositionLinePositionLinePositionline_position, line_orientationline_orientationLineOrientationLineOrientationLineOrientationline_orientation

Alternativen

sobel_ampsobel_ampSobelAmpSobelAmpSobelAmpsobel_amp, thresholdthresholdThresholdThresholdThresholdthreshold, skeletonskeletonSkeletonSkeletonSkeletonskeleton

Modul

Foundation