KlassenKlassenKlassenKlassen | | | | Operatoren

approx_chain_simpleT_approx_chain_simpleApproxChainSimpleapprox_chain_simpleApproxChainSimpleApproxChainSimple (Operator)

Name

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

Warnung

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

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

void HOperatorSetX.ApproxChainSimple(
[in] VARIANT Row, [in] VARIANT Column, [out] VARIANT* ArcCenterRow, [out] VARIANT* ArcCenterCol, [out] VARIANT* ArcAngle, [out] VARIANT* ArcBeginRow, [out] VARIANT* ArcBeginCol, [out] VARIANT* LineBeginRow, [out] VARIANT* LineBeginCol, [out] VARIANT* LineEndRow, [out] VARIANT* LineEndCol, [out] VARIANT* Order)

VARIANT HMiscX.ApproxChainSimple(
[in] VARIANT Row, [in] VARIANT Column, [out] VARIANT* ArcCenterCol, [out] VARIANT* ArcAngle, [out] VARIANT* ArcBeginRow, [out] VARIANT* ArcBeginCol, [out] VARIANT* LineBeginRow, [out] VARIANT* LineBeginCol, [out] VARIANT* LineEndRow, [out] VARIANT* LineEndCol, [out] VARIANT* 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_simpleApproxChainSimpleapprox_chain_simpleApproxChainSimpleApproxChainSimple verhält sich ähnlich wie approx_chainapprox_chainApproxChainapprox_chainApproxChainApproxChain nur bei approx_chain_simpleapprox_chain_simpleApproxChainSimpleapprox_chain_simpleApproxChainSimpleApproxChainSimple 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.

Parallelisierung

Parameter

RowRowRowRowRowrow (input_control)  point.y-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Zeilenwert der Kontur.

Defaultwert: 32

ColumnColumnColumnColumnColumncolumn (input_control)  point.x-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Spaltenwert der Kontur.

Defaultwert: 32

ArcCenterRowArcCenterRowArcCenterRowArcCenterRowArcCenterRowarcCenterRow (output_control)  arc.center.y-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Zeile des Mittelpunkts eines Bogens.

ArcCenterColArcCenterColArcCenterColArcCenterColArcCenterColarcCenterCol (output_control)  arc.center.x-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Spalte des Mittelpunkts eines Bogens.

ArcAngleArcAngleArcAngleArcAngleArcAnglearcAngle (output_control)  arc.angle.rad-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Winkel eines Bogens.

ArcBeginRowArcBeginRowArcBeginRowArcBeginRowArcBeginRowarcBeginRow (output_control)  arc.begin.y-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Zeile des Startpunkts eines Bogens.

ArcBeginColArcBeginColArcBeginColArcBeginColArcBeginColarcBeginCol (output_control)  arc.begin.x-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Spalte des Startpunkts eines Bogens.

LineBeginRowLineBeginRowLineBeginRowLineBeginRowLineBeginRowlineBeginRow (output_control)  line.begin.y-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Zeile des Startpunkts einer Linie.

LineBeginColLineBeginColLineBeginColLineBeginColLineBeginCollineBeginCol (output_control)  line.begin.x-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Spalte des Startpunkts einer Linie.

LineEndRowLineEndRowLineEndRowLineEndRowLineEndRowlineEndRow (output_control)  line.end.y-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Zeile des Endpunkts einer Linie.

LineEndColLineEndColLineEndColLineEndColLineEndCollineEndCol (output_control)  line.end.x-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Spalte des Endpunkts einer Linie.

OrderOrderOrderOrderOrderorder (output_control)  integer-array HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (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_simpleApproxChainSimpleapprox_chain_simpleApproxChainSimpleApproxChainSimple liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

sobel_ampsobel_ampSobelAmpsobel_ampSobelAmpSobelAmp, edges_imageedges_imageEdgesImageedges_imageEdgesImageEdgesImage, get_region_contourget_region_contourGetRegionContourget_region_contourGetRegionContourGetRegionContour, thresholdthresholdThresholdthresholdThresholdThreshold, hysteresis_thresholdhysteresis_thresholdHysteresisThresholdhysteresis_thresholdHysteresisThresholdHysteresisThreshold

Nachfolger

set_line_widthset_line_widthSetLineWidthset_line_widthSetLineWidthSetLineWidth, disp_arcdisp_arcDispArcdisp_arcDispArcDispArc, disp_linedisp_lineDispLinedisp_lineDispLineDispLine

Alternativen

get_region_polygonget_region_polygonGetRegionPolygonget_region_polygonGetRegionPolygonGetRegionPolygon, approx_chainapprox_chainApproxChainapprox_chainApproxChainApproxChain

Siehe auch

get_region_chainget_region_chainGetRegionChainget_region_chainGetRegionChainGetRegionChain, smallest_circlesmallest_circleSmallestCirclesmallest_circleSmallestCircleSmallestCircle, disp_circledisp_circleDispCircledisp_circleDispCircleDispCircle, disp_linedisp_lineDispLinedisp_lineDispLineDispLine

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren