edges_color_sub_pixedges_color_sub_pixEdgesColorSubPixEdgesColorSubPix (Operator)

Name

edges_color_sub_pixedges_color_sub_pixEdgesColorSubPixEdgesColorSubPix — Subpixel-genaue Farbkantendetektion mit Deriche-, Shen- oder Canny-Filtern.

Signatur

edges_color_sub_pix(Image : Edges : Filter, Alpha, Low, High : )

Herror edges_color_sub_pix(const Hobject Image, Hobject* Edges, const char* Filter, double Alpha, double Low, double High)

Herror T_edges_color_sub_pix(const Hobject Image, Hobject* Edges, const Htuple Filter, const Htuple Alpha, const Htuple Low, const Htuple High)

void EdgesColorSubPix(const HObject& Image, HObject* Edges, const HTuple& Filter, const HTuple& Alpha, const HTuple& Low, const HTuple& High)

HXLDCont HImage::EdgesColorSubPix(const HString& Filter, double Alpha, const HTuple& Low, const HTuple& High) const

HXLDCont HImage::EdgesColorSubPix(const HString& Filter, double Alpha, double Low, double High) const

HXLDCont HImage::EdgesColorSubPix(const char* Filter, double Alpha, double Low, double High) const

HXLDCont HImage::EdgesColorSubPix(const wchar_t* Filter, double Alpha, double Low, double High) const   (Nur Windows)

static void HOperatorSet.EdgesColorSubPix(HObject image, out HObject edges, HTuple filter, HTuple alpha, HTuple low, HTuple high)

HXLDCont HImage.EdgesColorSubPix(string filter, double alpha, HTuple low, HTuple high)

HXLDCont HImage.EdgesColorSubPix(string filter, double alpha, double low, double high)

Beschreibung

edges_color_sub_pixedges_color_sub_pixEdgesColorSubPixEdgesColorSubPixEdgesColorSubPix extrahiert subpixel-genaue Farbkanten aus dem Eingabebild ImageImageImageImageimage. Die Definition von Farbkanten ist in der Beschreibung von edges_coloredges_colorEdgesColorEdgesColorEdgesColor erläutert. Es stehen dieselben Kantenfilter wie bei edges_coloredges_colorEdgesColorEdgesColorEdgesColor zur Verfügung: 'canny'"canny""canny""canny""canny", 'deriche1'"deriche1""deriche1""deriche1""deriche1", 'deriche2'"deriche2""deriche2""deriche2""deriche2" und 'shen'"shen""shen""shen""shen". Zusätzlich steht noch ein schneller Sobel-Filter mit 'sobel_fast'"sobel_fast""sobel_fast""sobel_fast""sobel_fast" zur Verfügung. Die Filter werden durch den Paremeter FilterFilterFilterFilterfilter spezifiziert.

Die „Filterbreite“ (Stärke der Glättung) AlphaAlphaAlphaAlphaalpha ist frei wählbar. Für eine ausführliche Beschreibung dieses Parameters siehe edges_coloredges_colorEdgesColorEdgesColorEdgesColor. Bei FilterFilterFilterFilterfilter = 'sobel_fast'"sobel_fast""sobel_fast""sobel_fast""sobel_fast" wird dieser Parameter ignoriert.

Die extrahierten Kanten werden als subpixel-genaue XLD-Konturen in EdgesEdgesEdgesEdgesedges zurückgeliefert. Für alle Kantenoperatoren außer 'sobel_fast'"sobel_fast""sobel_fast""sobel_fast""sobel_fast" werden für jeden Kantenpunkt die folgenden Attribute definiert (Für weitere Informationen siehe get_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldGetContourAttribXldGetContourAttribXld):

'edge_direction'"edge_direction""edge_direction""edge_direction""edge_direction":

Gibt die Richtung der Kante (nicht der Kontur), berechnet aus den Grauwertgradienten in Spalten- und Zeilenrichtung, im Bogenmaß an. Die Winkel sind bezüglich der Zeilenachse gegen den Uhrzeigersinn gegeben.

'angle'"angle""angle""angle""angle":

Richtung der Normalenvektoren der Kontur (so orientiert, dass die Normalenvektoren auf die rechte Seite der Kontur in Durchlaufrichtung der Kontur zeigen; die Winkel sind bzgl. der Zeilenachse des Bildes im Bogenmaß angegeben).

'response'"response""response""response""response":

Die Amplitude der Kante.

edges_color_sub_pixedges_color_sub_pixEdgesColorSubPixEdgesColorSubPixEdgesColorSubPix verknüpft die einzelnen Kantenpunkte mit einem Hysterese-Schwellenwert-artigen Verfahren zu Kanten, wie es auch in edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixEdgesSubPix und lines_gausslines_gaussLinesGaussLinesGaussLinesGauss verwendet wird. Dabei werden Punkte, deren Amplitude größer als HighHighHighHighhigh ist, sofort als sichere Kantenpunkte akzeptiert. Punkte, deren Amplitude kleiner als LowLowLowLowlow ist, werden sofort verworfen. Alle Punkte, die eine zweite Amplitude zwischen diesen zwei Werten besitzen, werden akzeptiert, wenn sie durch einen Pfad mit sicheren Punkten verbunden sind (siehe lines_gausslines_gaussLinesGaussLinesGaussLinesGauss und hysteresis_thresholdhysteresis_thresholdHysteresisThresholdHysteresisThresholdHysteresisThreshold).

Da Kantenextraktoren oftmals bestimmte Kreuzungspunkte nicht extrahieren können, kann durch Anhängen von '_junctions'"_junctions""_junctions""_junctions""_junctions" an die oben beschriebenen Werte von FilterFilterFilterFilterfilter versucht werden, diese mit anderen Mitteln zu extrahieren. Dieser Modus ist analog zu dem bei edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixEdgesSubPix und lines_gausslines_gaussLinesGaussLinesGaussLinesGauss verfügbaren Modus zur Vervollständigung von Kreuzungspunkten.

Der Kantenoperator 'sobel_fast'"sobel_fast""sobel_fast""sobel_fast""sobel_fast" hat dieselbe Semantik wie alle anderen Kantenoperatoren, basiert intern aber auf einer stark vereinfachten Variante der einzelnen Schritte (Hysterese-Schwellenwert-Operation, Verknüpfung der Kantenpunkte, Extraktion der Subpixel-Position). Daher können die Ergebnisse von 'sobel_fast'"sobel_fast""sobel_fast""sobel_fast""sobel_fast" in manchen Fällen eine geringere Genauigkeit als die Ergebnisse der anderen Filter aufweisen und andere Kantenteile selektieren.

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

ImageImageImageImageimage (input_object)  (multichannel-)image objectHImageHImageHobject (byte / uint2)

Eingabebild.

EdgesEdgesEdgesEdgesedges (output_object)  xld_cont-array objectHXLDContHXLDContHobject *

Extrahierte Kanten.

FilterFilterFilterFilterfilter (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Gewünschter Kanten-Operator.

Defaultwert: 'canny' "canny" "canny" "canny" "canny"

Werteliste: 'canny'"canny""canny""canny""canny", 'canny_junctions'"canny_junctions""canny_junctions""canny_junctions""canny_junctions", 'deriche1'"deriche1""deriche1""deriche1""deriche1", 'deriche1_junctions'"deriche1_junctions""deriche1_junctions""deriche1_junctions""deriche1_junctions", 'deriche2'"deriche2""deriche2""deriche2""deriche2", 'deriche2_junctions'"deriche2_junctions""deriche2_junctions""deriche2_junctions""deriche2_junctions", 'shen'"shen""shen""shen""shen", 'shen_junctions'"shen_junctions""shen_junctions""shen_junctions""shen_junctions", 'sobel_fast'"sobel_fast""sobel_fast""sobel_fast""sobel_fast"

AlphaAlphaAlphaAlphaalpha (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Filterparameter: kleine Werte bewirken starke Glättung, also auch weniger Bilddetails (bei 'canny' umgekehrt).

Defaultwert: 1.0

Wertevorschläge: 0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0.9, 1.0, 1.1, 1.2, 1.5, 2.0, 2.5, 3.0

Typischer Wertebereich: 0.7 ≤ Alpha Alpha Alpha Alpha alpha ≤ 50.0

Minimale Schrittweite: 0.01

Empfohlene Schrittweite: 0.1

Restriktion: Alpha > 0.0

LowLowLowLowlow (input_control)  number HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Untere Schwelle für Hysterese-Schwellenwertoperation.

Defaultwert: 20

Wertevorschläge: 5, 10, 15, 20, 25, 30, 40

Typischer Wertebereich: 1 ≤ Low Low Low Low low

Minimale Schrittweite: 1

Empfohlene Schrittweite: 5

Restriktion: Low > 0

HighHighHighHighhigh (input_control)  number HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Obere Schwelle für Hysterese-Schwellenwertoperation.

Defaultwert: 40

Wertevorschläge: 10, 15, 20, 25, 30, 40, 50, 60, 70

Typischer Wertebereich: 1 ≤ High High High High high

Minimale Schrittweite: 1

Empfohlene Schrittweite: 5

Restriktion: High > 0 && High >= Low

Komplexität

Der Bedarf an temporären Speicher ist abhängig von der Höhe H der Region von ImageImageImageImageimage.

Ergebnis

Sind die Parameterwerte korrekt und tritt kein Fehler während der Berechnung auf, liefert edges_color_sub_pixedges_color_sub_pixEdgesColorSubPixEdgesColorSubPixEdgesColorSubPix 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>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Alternativen

edges_coloredges_colorEdgesColorEdgesColorEdgesColor

Siehe auch

edges_imageedges_imageEdgesImageEdgesImageEdgesImage, edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixEdgesSubPix, info_edgesinfo_edgesInfoEdgesInfoEdgesInfoEdges, hysteresis_thresholdhysteresis_thresholdHysteresisThresholdHysteresisThresholdHysteresisThreshold, lines_gausslines_gaussLinesGaussLinesGaussLinesGauss, lines_facetlines_facetLinesFacetLinesFacetLinesFacet

Literatur

C. Steger: „Subpixel-Precise Extraction of Lines and Edges“; International Archives of Photogrammetry and Remote Sensing, vol. XXXIII, part B3; pp. 141-156; 2000.
C. Steger: „Unbiased Extraction of Curvilinear Structures from 2D and 3D Images“; Herbert Utz Verlag, München; 1998.
S. Di Zenzo: „A Note on the Gradient of a Multi-Image“; Computer Vision, Graphics, and Image Processing, vol. 33; pp. 116-125; 1986.
Aldo Cumani: „Edge Detection in Multispectral Images“; Computer Vision, Graphics, and Image Processing: Graphical Models and Image Processing, vol. 53, no. 1; pp. 40-51; 1991.
J.Canny: „Finding Edges and Lines in Images“; Report, AI-TR-720; M.I.T. Artificial Intelligence Lab., Cambridge; 1983.
J.Canny: „A Computational Approach to Edge Detection“; IEEE Transactions on Pattern Analysis and Machine Intelligence; PAMI-8, vol. 6; pp. 679-698; 1986.
R.Deriche: „Using Canny's Criteria to Derive a Recursively Implemented Optimal Edge Detector“; International Journal of Computer Vision; vol. 1, no. 2; pp. 167-187; 1987.
R.Deriche: „Fast Algorithms for Low-Level Vision“; IEEE Transactions on Pattern Analysis and Machine Intelligence; PAMI-12, no. 1; pp. 78-87; 1990.
J. Shen, S. Castan: „An Optimal Linear Operator for Step Edge Detection“; Computer Vision, Graphics, and Image Processing: Graphical Models and Image Processing, vol. 54, no. 2; pp. 112-133; 1992.

Modul

2D Metrology