approx_chain_simpleT_approx_chain_simpleApproxChainSimpleApproxChainSimpleapprox_chain_simple (算子名称)
名称
approx_chain_simpleT_approx_chain_simpleApproxChainSimpleApproxChainSimpleapprox_chain_simple
— Approximate a contour by arcs and lines.
Warning
approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple
is obsolete and is only provided for
reasons of backward compatibility.
参数签名
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)
def approx_chain_simple(row: Sequence[int], column: Sequence[int]) -> Tuple[Sequence[int], Sequence[int], Sequence[float], Sequence[int], Sequence[int], Sequence[int], Sequence[int], Sequence[int], Sequence[int], Sequence[int]]
描述
The contour of a curve is approximated by a sequence of
lines and arcs.
The result of the procedure is returned separately as arcs and
lines. If one is interested in the sequence of the segments the
individual resulting elements can be read successively from the
resulting tuples. The sequence can be taken from the return
parameter order (0: next element is next line segment, 1: next
element is next arc segment).
The operator approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple
behaves similarly as
approx_chainapprox_chainApproxChainApproxChainApproxChainapprox_chain
except that in the case of
approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple
the missing parameters are internally
allocated as follows: 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.
运行信息
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
参数表
RowRowRowRowrowrow
(input_control) point.y-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Row of the contour.
Default:
32
ColumnColumnColumnColumncolumncolumn
(input_control) point.x-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Column of the contour.
Default:
32
ArcCenterRowArcCenterRowArcCenterRowArcCenterRowarcCenterRowarc_center_row
(output_control) arc.center.y-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Row of the center of an arc.
ArcCenterColArcCenterColArcCenterColArcCenterColarcCenterColarc_center_col
(output_control) arc.center.x-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Column of the center of an arc.
ArcAngleArcAngleArcAngleArcAnglearcAnglearc_angle
(output_control) arc.angle.rad-array →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Angle of an arc.
ArcBeginRowArcBeginRowArcBeginRowArcBeginRowarcBeginRowarc_begin_row
(output_control) arc.begin.y-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Row of the starting point of an arc.
ArcBeginColArcBeginColArcBeginColArcBeginColarcBeginColarc_begin_col
(output_control) arc.begin.x-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Column of the starting point of an arc.
LineBeginRowLineBeginRowLineBeginRowLineBeginRowlineBeginRowline_begin_row
(output_control) line.begin.y-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Row of the starting point of a line segment.
LineBeginColLineBeginColLineBeginColLineBeginCollineBeginColline_begin_col
(output_control) line.begin.x-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Column of the starting point of a line segment.
LineEndRowLineEndRowLineEndRowLineEndRowlineEndRowline_end_row
(output_control) line.end.y-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Row of the ending point of a line segment.
LineEndColLineEndColLineEndColLineEndCollineEndColline_end_col
(output_control) line.end.x-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Column of the ending point of a line segment.
OrderOrderOrderOrderorderorder
(output_control) integer-array →
HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Sequence of line (value 0) and arc segments (value 1).
例程 (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);
结果
The operator approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple
returns the value 2 (
H_MSG_TRUE)
if the
parameters are correct. Otherwise an exception is raised.
可能的前置算子
sobel_ampsobel_ampSobelAmpSobelAmpSobelAmpsobel_amp
,
edges_imageedges_imageEdgesImageEdgesImageEdgesImageedges_image
,
get_region_contourget_region_contourGetRegionContourGetRegionContourGetRegionContourget_region_contour
,
thresholdthresholdThresholdThresholdThresholdthreshold
,
hysteresis_thresholdhysteresis_thresholdHysteresisThresholdHysteresisThresholdHysteresisThresholdhysteresis_threshold
可能的后置算子
set_line_widthset_line_widthSetLineWidthSetLineWidthSetLineWidthset_line_width
,
disp_arcdisp_arcDispArcDispArcDispArcdisp_arc
,
disp_linedisp_lineDispLineDispLineDispLinedisp_line
可替代算子
get_region_polygonget_region_polygonGetRegionPolygonGetRegionPolygonGetRegionPolygonget_region_polygon
,
approx_chainapprox_chainApproxChainApproxChainApproxChainapprox_chain
参考其它
get_region_chainget_region_chainGetRegionChainGetRegionChainGetRegionChainget_region_chain
,
smallest_circlesmallest_circleSmallestCircleSmallestCircleSmallestCirclesmallest_circle
,
disp_circledisp_circleDispCircleDispCircleDispCircledisp_circle
,
disp_linedisp_lineDispLineDispLineDispLinedisp_line
模块
Foundation