approx_chain_simpleT_approx_chain_simpleApproxChainSimpleApproxChainSimple (Operator)

Name

approx_chain_simpleT_approx_chain_simpleApproxChainSimpleApproxChainSimple — Approximation einer Kontur durch Bögen und Linien.

Warnung

approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimple ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt.

Signatur

approx_chain_simple( : : Row, Column : ArcCenterRow, ArcCenterCol, ArcAngle, ArcBeginRow, ArcBeginCol, LineBeginRow, LineBeginCol, LineEndRow, LineEndCol, Order)

Herror T_approx_chain_simple(const Htuple Row, const Htuple Column, Htuple* ArcCenterRow, Htuple* ArcCenterCol, Htuple* ArcAngle, Htuple* ArcBeginRow, Htuple* ArcBeginCol, Htuple* LineBeginRow, Htuple* LineBeginCol, Htuple* LineEndRow, Htuple* LineEndCol, Htuple* Order)

void ApproxChainSimple(const HTuple& Row, const HTuple& Column, HTuple* ArcCenterRow, HTuple* ArcCenterCol, HTuple* ArcAngle, HTuple* ArcBeginRow, HTuple* ArcBeginCol, HTuple* LineBeginRow, HTuple* LineBeginCol, HTuple* LineEndRow, HTuple* LineEndCol, HTuple* Order)

static void HMisc::ApproxChainSimple(const HTuple& Row, const HTuple& Column, HTuple* ArcCenterRow, HTuple* ArcCenterCol, HTuple* ArcAngle, HTuple* ArcBeginRow, HTuple* ArcBeginCol, HTuple* LineBeginRow, HTuple* LineBeginCol, HTuple* LineEndRow, HTuple* LineEndCol, HTuple* Order)

static void HOperatorSet.ApproxChainSimple(HTuple row, HTuple column, out HTuple arcCenterRow, out HTuple arcCenterCol, out HTuple arcAngle, out HTuple arcBeginRow, out HTuple arcBeginCol, out HTuple lineBeginRow, out HTuple lineBeginCol, out HTuple lineEndRow, out HTuple lineEndCol, out HTuple order)

static void HMisc.ApproxChainSimple(HTuple row, HTuple column, out HTuple arcCenterRow, out HTuple arcCenterCol, out HTuple arcAngle, out HTuple arcBeginRow, out HTuple arcBeginCol, out HTuple lineBeginRow, out HTuple lineBeginCol, out HTuple lineEndRow, out HTuple lineEndCol, out HTuple order)

Beschreibung

Die Koordinaten einer Kurve werden durch eine Folge von Linien und Kreisbögen approximiert.

Das Ergebnis des Verfahren wird getrennt nach Bögen und Linien zurückgegeben. Ist man an der Reihenfolge der Segmente interessiert, so können die einzelnen Ergebniselemente sukzessive aus den Ergebnistupeln ausgelesen werden, wobei dem Rückgabeparameter Order die Reihenfolge entnommen werden kann (0: nächstes Element ist nächstes Liniensegment, 1: nächstes Element ist nächstes Bogensegment).

approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimple verhält sich ähnlich wie approx_chainapprox_chainApproxChainApproxChainApproxChain nur bei approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimple sind die fehlende Parameter intern wie folgt belegt: MinWidthCoord = 1.0, MaxWidthCoord = 3.0, ThreshStart = 0.5, ThreshEnd = 0.9, ThreshStep = 0.3, MinWidthSmooth = 1.0, MaxWidthSmooth = 3.0, MinWidthCurve = 2, MaxWidthCurve = 9, Weight1 = 1.0, Weight2 = 1.0, Weight3 = 1.0.

Ausführungsinformationen

Parameter

RowRowRowRowrow (input_control)  point.y-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zeilenwert der Kontur.

Defaultwert: 32

ColumnColumnColumnColumncolumn (input_control)  point.x-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Spaltenwert der Kontur.

Defaultwert: 32

ArcCenterRowArcCenterRowArcCenterRowArcCenterRowarcCenterRow (output_control)  arc.center.y-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zeile des Mittelpunkts eines Bogens.

ArcCenterColArcCenterColArcCenterColArcCenterColarcCenterCol (output_control)  arc.center.x-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Spalte des Mittelpunkts eines Bogens.

ArcAngleArcAngleArcAngleArcAnglearcAngle (output_control)  arc.angle.rad-array HTupleHTupleHtuple (real) (double) (double) (double)

Winkel eines Bogens.

ArcBeginRowArcBeginRowArcBeginRowArcBeginRowarcBeginRow (output_control)  arc.begin.y-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zeile des Startpunkts eines Bogens.

ArcBeginColArcBeginColArcBeginColArcBeginColarcBeginCol (output_control)  arc.begin.x-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Spalte des Startpunkts eines Bogens.

LineBeginRowLineBeginRowLineBeginRowLineBeginRowlineBeginRow (output_control)  line.begin.y-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zeile des Startpunkts einer Linie.

LineBeginColLineBeginColLineBeginColLineBeginCollineBeginCol (output_control)  line.begin.x-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Spalte des Startpunkts einer Linie.

LineEndRowLineEndRowLineEndRowLineEndRowlineEndRow (output_control)  line.end.y-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zeile des Endpunkts einer Linie.

LineEndColLineEndColLineEndColLineEndCollineEndCol (output_control)  line.end.x-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Spalte des Endpunkts einer Linie.

OrderOrderOrderOrderorder (output_control)  integer-array HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Reihenfolge von Linien- (Wert 0) und Bogensegmenten (Wert1).

Beispiel (C)

/* read edge image */
read_image(&Image,"fig1_kan");
/* construct edge region */
hysteresis_threshold(Image,&RK1,64,255,40,1);
connection(RK1,&Rand);
/* fetch chain code */
T_get_region_contour(Rand,&Rows,&Columns);
firstline = get_i(Tline,0);
firstcol = get_i(Tcol,0);
/* approximation with lines and circular arcs */
T_approx_chain_simple(Rows,Columns,
                &Bzl,&Bzc,&Br,&Bwl,&Bwc,&Ll0,&Lc0,&Ll1,&Lc1,&order);
nob = length_tuple(Bzl);
nol = length_tuple(Ll0);
/* draw lines and arcs */
set_i(WindowHandleTuple,WindowHandle,0);
set_line_width(WindowHandle,4);
if (nob>0) T_disp_arc(Bzl,Bzc,Br,Bwl,Bwc);
set_line_width(WindowHandle,1);
if (nol>0) T_disp_line(WindowHandleTuple,Ll0,Lc0,Ll1,Lc1);

Ergebnis

approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimple liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

sobel_ampsobel_ampSobelAmpSobelAmpSobelAmp, edges_imageedges_imageEdgesImageEdgesImageEdgesImage, get_region_contourget_region_contourGetRegionContourGetRegionContourGetRegionContour, thresholdthresholdThresholdThresholdThreshold, hysteresis_thresholdhysteresis_thresholdHysteresisThresholdHysteresisThresholdHysteresisThreshold

Nachfolger

set_line_widthset_line_widthSetLineWidthSetLineWidthSetLineWidth, disp_arcdisp_arcDispArcDispArcDispArc, disp_linedisp_lineDispLineDispLineDispLine

Alternativen

get_region_polygonget_region_polygonGetRegionPolygonGetRegionPolygonGetRegionPolygon, approx_chainapprox_chainApproxChainApproxChainApproxChain

Siehe auch

get_region_chainget_region_chainGetRegionChainGetRegionChainGetRegionChain, smallest_circlesmallest_circleSmallestCircleSmallestCircleSmallestCircle, disp_circledisp_circleDispCircleDispCircleDispCircle, disp_linedisp_lineDispLineDispLineDispLine

Modul

Foundation