approx_chain_simpleT_approx_chain_simpleApproxChainSimpleApproxChainSimpleapprox_chain_simple近似链简单(算子)
名称
approx_chain_simpleT_approx_chain_simpleApproxChainSimpleApproxChainSimpleapprox_chain_simple — 用圆弧和线近似轮廓。
警告
approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple 已过时,仅出于向后兼容性考虑而保留。
签名
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]]
描述
曲线的轮廓由一系列线和弧近似表示。
该函数的结果将弧和线分别返回。若需获取段序列,可从返回元组中依次读取各个结果元素。序列可通过返回参数 order(0:下一个元素为下一条线段;1:下一个元素为下一条弧线段)获取。
算子 approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple 的行为与 approx_chainapprox_chainApproxChainApproxChainApproxChainapprox_chain 类似,但当使用 approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple 时,缺失的参数会在内部按以下方式分配: 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。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
参数
RowRowRowRowrowrow (输入控制) point.y-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
轮廓的行。
默认值:
32
ColumnColumnColumnColumncolumncolumn (输入控制) point.x-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
轮廓的列。
默认值:
32
ArcCenterRowArcCenterRowArcCenterRowArcCenterRowarcCenterRowarc_center_row (输出控制) arc.center.y-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
弧中心的行。
ArcCenterColArcCenterColArcCenterColArcCenterColarcCenterColarc_center_col (输出控制) arc.center.x-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
弧中心的列。
ArcAngleArcAngleArcAngleArcAnglearcAnglearc_angle (输出控制) arc.angle.rad-array → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
弧角度。
ArcBeginRowArcBeginRowArcBeginRowArcBeginRowarcBeginRowarc_begin_row (输出控制) arc.begin.y-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
弧起点的行。
ArcBeginColArcBeginColArcBeginColArcBeginColarcBeginColarc_begin_col (输出控制) arc.begin.x-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
弧起点的列。
LineBeginRowLineBeginRowLineBeginRowLineBeginRowlineBeginRowline_begin_row (输出控制) line.begin.y-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
线段起点的行。
LineBeginColLineBeginColLineBeginColLineBeginCollineBeginColline_begin_col (输出控制) line.begin.x-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
线段起点的列。
LineEndRowLineEndRowLineEndRowLineEndRowlineEndRowline_end_row (输出控制) line.end.y-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
线段终点的行。
LineEndColLineEndColLineEndColLineEndCollineEndColline_end_col (输出控制) line.end.x-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
线段终点的列。
OrderOrderOrderOrderorderorder (输出控制) integer-array → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
由线(值为0)和弧(值为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);
结果
算子 approx_chain_simpleapprox_chain_simpleApproxChainSimpleApproxChainSimpleApproxChainSimpleapprox_chain_simple 在参数正确时返回值 2 ( H_MSG_TRUE )。否则将抛出异常。
可能的前趋
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
模块
基础