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
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
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