Halcon轮廓的分割,合并及圆&矩形&线拟合

变换

平滑轮廓:smooth_contours

算子:smooth_contours_xld(Contours : SmoothedContours : NumRegrPoints : )

示例:smooth_contours_xld (Border, SmoothedContours, 11)

Border(输入对象):输入轮廓对象

SmoothedContours(输出对象):输出平滑后的轮廓

11(输入控制参数):数值越大越平滑

形状变换:shape_trans_xld

算子:shape_trans_xld(XLD : XLDTrans : Type : )

示例:shape_trans_xld (ContCircle, XLDTrans, 'rectangle1')

ContCircle(输入对象):输入轮廓对象

XLDTrans(输出对象):输出变形后的轮廓

'rectangle1'(输入控制参数):输入需要变形的类型

注意:区域圆变形为椭圆 结果还是圆 轮廓圆变形为椭圆 结果是点

封闭轮廓:close_contours_xld

算子:close_contours_xld(Contours : ClosedContours : : )

示例:close_contours_xld (Contours, ClosedContours)

Contours(输入对象):输入轮廓对象

ClosedContours(输出对象):输出封闭后的轮廓对象

对轮廓排序:sort_contours_xld

算子:sort_contours_xld(Contours : SortedContours : SortMode, Order, RowOrCol : )

示例:sort_contours_xld (ContoursSplit, SortedContours, 'upper_left', 'true', 'column')

ContoursSplit(输入对象):输入包含多个轮廓的对象

SortedContours(输出对象):输出排序轮廓对象

'upper_left'(输入控制参数1):排序方法

'true'(输入控制参数2):升序true或者是降序false

'column'(输入控制参数3):按照行或者列排序

     分割

      按直线和圆弧的特性分割轮廓:segment_contours_xld

算子:segment_contours_xld(Contours : ContoursSplit : Mode, SmoothCont, MaxLineDist1, MaxLineDist2 : )

示例:segment_contours_xld (Contours1, ContoursSplit, 'lines_circles', 5, 4, 2)

Contours1(输入对象):输入轮廓对象

ContoursSplit(输出对象):输出分割后的对象

'lines_circles'(输入控制参数1):输入分割类型

5(输入控制参数2):控制轮廓分割的细节 数值越大 分割的线段越多

4(输入控制参数3):与轮廓拟合参数一 参数越大有角度的轮廓合并的越多

2(输入控制参数4):与轮廓拟合参数二 对参数三进行补充

合并

合并端点临近的轮廓:union_adjacent_contours_xld

算子:union_adjacent_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, Mode : )

示例:union_adjacent_contours_xld (ContoursSplit, UnionContours, 10, 1, 'attr_keep')

ContoursSplit(输入对象):输入轮廓对象

UnionContours(输出对象):输出合并的轮廓对象

10(输入控制参数1):两个轮廓端点间的最小距离控制参数

1(输入控制参数2):两个轮廓端点间的最小距离与最长轮廓长度的比值控制参数

'attr_keep'(输入控制参数3):定义轮廓属性处理的模式,即,是否保留或丢弃轮廓属性(默认)

合并位于同一条直线上的轮廓:union_collinear_contours_xld

       资料扩展:https://blog.csdn.net/qq_18620653/article/details/105518295

算子:union_collinear_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, MaxShift, MaxAngle, Mode : )

示例:union_collinear_contours_xld (Contours3, UnionContours1, 10, 1, 2, 0.1, 'attr_keep')

Contours3(输入对象):输入轮廓对象

UnionContours1(输出对象):输出合并的轮廓对象

10(输入控制参数1):测量两个轮廓之间的最大间隙长度

1(输入控制参数2):间隙在参考轮廓拟合直线上的投影长度与参考轮廓长度的比值上限

2(输入控制参数3):第二个轮廓与参考轮廓拟合直线的最大距离

0.1(输入控制参数4):两个轮廓拟合直线的角度

'attr_keep'(输入控制参数5):定义轮廓属性处理的模式,即,是否保留或丢弃轮廓属性(默认)

合并属于同一个圆上的轮廓:union_cocircular_contours_xld

扩展资料:halcon union_cocircular_contours_xld函数介绍_上位机 (gkbc8.com)

算子:union_cocircular_contours_xld(Contours : UnionContours : MaxArcAngleDiff, MaxArcOverlap, MaxTangentAngle, MaxDist, MaxRadiusDiff, MaxCenterDist,MergeSmallContours, Iterations : )

示例:union_cocircular_contours_xld (Contours5, UnionContours2, Phi4, Phi4, Phi4, 30, 10, 10, 'true', 1)

Contours5(输入对象):输入轮廓对象

UnionContours2(输出对象):输出合并的轮廓对象

Phi4(输入控制参数1):轮廓的端点(默认)

Phi4(输入控制参数2):轮廓可能重叠的最大角度(默认)

Phi4(输入控制参数3):圆切线与两条等值线连接线之间的最大夹角(默认)

30(输入控制参数4):两条轮廓线的端点和起点的最大绝对距离(默认)

10(输入控制参数5):拟合到轮廓上的圆的半径的最大绝对值差(默认)

10(输入控制参数6):圆中心欧氏距离的极限(默认)

'true'(输入控制参数7):设置为“true”,那么没有拟合圆的等值线也会被合并(默认)

1(输入控制参数8):轮廓线的合并产生了新的圆参数(默认)

拟合

根据圆弧拟合为圆 fit_circle_contour_xld (circles.hdev)

扩展资料:https://www.cnblogs.com/liming19680104/p/16023466.html

算子:fit_circle_contour_xld(Contours : : Algorithm, MaxNumPoints, MaxClosureDist, ClippingEndPoints, Iterations, ClippingFactor : Row, Column, Radius, StartPhi,EndPhi, PointOrder)

示例:fit_circle_contour_xld (Edges, 'algebraic', -1, 0, 0, 3, 2, Row20, Column20, Radius5, StartPhi1, EndPhi1, PointOrder3)

Edges(输入对象):输入圆弧轮廓对象

'algebraic',(输入控制参数1):圆的拟合算法(默认)

-1(输入控制参数2): 默认值

0(输入控制参数3): 默认值

0(输入控制参数4):默认值

3(输入控制参数5):默认值

2(输入控制参数6):默认值

Row20(输出控制参数1):输出圆中心的行坐标

Column20(输出控制参数2):输出圆中心的列坐标

Radius5(输出控制参数3):输出圆的半径

StartPhi(输出控制参数4):输出起点角度

EndPhi(输出控制参数5):输出终点角度

  PointOrder3(输出控制参数6):输出沿边界的点顺序

生成圆的轮廓

算子:gen_circle_contour_xld( : ContCircle : Row, Column, Radius, StartPhi, EndPhi, PointOrder, Resolution : )

示例:gen_circle_contour_xld (ContCircle2, Row20, Column20, Radius5, 0, 6.28318, 'positive', 1)

ContCircle2(输出对象):输出拟合圆轮廓对象

Row20(输入控制参数1):输出圆中心的行坐标(默认)

Column20(输入控制参数2):输出圆中心的列坐标(默认)

Radius5(输入控制参数3):输出圆的半径(默认)

0(输入控制参数4):输出起点角度(默认)

3.28318(输入控制参数5):输出终点角度(默认)

'positive'(输入控制参数6):输出沿边界的点顺序(默认)

1(输入控制参数7):输出相邻轮廓点的距离(默认)

根据轮廓拟合为圆

1.创建测量句柄:create_metrology_model

算子:create_metrology_model( : : : MetrologyHandle)

示例:create_metrology_model (MetrologyHandle)

MetrologyHandle(输出控制参数):输出创建的测量模型句柄

2.添加模型:add_metrology_object_generic

资源扩展:https://blog.csdn.net/cashmood/article/details/99758714

算子:add_metrology_object_generic( : : MetrologyHandle, Shape, ShapeParam, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName,GenParamValue : Index)

示例:add_metrology_object_generic (MetrologyHandle, 'circle', cir, 20, 5, 1, 30, [], [], Index)

MetrologyHandle(输入控制参数):输入创建的测量模型句柄

'circle', (输入控制参数1) :要添加的计量对象的类型

Cir(输入控制参数2):要添加的计量对象的参数

20(输入控制参数3):垂直于边界的测量区域的一半长度(默认)

5. (输入控制参数4):与边界相切的测量区域的一半长度(默认)

1(输入控制参数5):与边界相切的测量区域的一半长度(默认)

30(输入控制参数6):最小边缘幅度(默认)

[](输入控制参数7):通用参数的名称(默认)

[](输入控制参数8):通用参数的名称(默认)Index(输出控制参数):创建的计量对象的索引(默认)

3.确定边缘位置:apply_metrology_model

算子:apply_metrology_model(Image : : MetrologyHandle : )

示例:apply_metrology_model (Image, MetrologyHandle)

Image(输入对象):输入图像

MetrologyHandle(输出对象):输出测量模型句柄

4. 获取测量位置结果:get_metrology_object_measures

扩展资料:https://blog.csdn.net/cashmood/article/details/99760742

算子:get_metrology_object_measures( : Contours : MetrologyHandle, Index, Transition : Row, Column)

示例:get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)

Contours(输出对象):输出测量区域的矩形XLD轮廓

MetrologyHandle(输入控制参数1):测量模型句柄

'all'(输入控制参数2):测量对象的索引

'all'(输入控制参数3):选择浅色/深色或深色/浅色边缘

Row(输出控制参数1):测量边缘的行坐标

Column(输出控制参数2):测量边缘的列坐标

5.       返回测量结果:get_metrology_object_result

       资料扩展:https://blog.csdn.net/cashmood/article/details/99759546

算子:get_metrology_object_result( : : MetrologyHandle, Index, Instance, GenParamName, GenParamValue : Parameter)

示例:get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)

MetrologyHandle(输入控制参数):测量模型句柄

'all'(输入控制参数1):测量对象的索引

'all'(输入控制参数2):测量对象的实例

'result_type'(输入控制参数3):通用参数的名称

'all_param'(输入控制参数4):泛型参数的值

Parameter(输出控制参数):结果值

6.清除测量句柄

算子:clear_metrology_model( : : MetrologyHandle : )

示例:clear_metrology_model (MetrologyHandle)

MetrologyHandle(输入控制参数):测量模型句柄

根据点拟合为圆:gen_circle_contour_xld

扩展资料:https://blog.csdn.net/cashmood/article/details/99757034

算子:gen_circle_contour_xld( : ContCircle : Row, Column, Radius, StartPhi, EndPhi, PointOrder, Resolution : )

示例:gen_circle_contour_xld (ContCircle, Parameter[0], Parameter[1], Parameter[2], 0, 6.28318, 'positive', 1)

ContCircle(输出对象):产生的轮廓

Parameter[0] (输入控制参数1):圆心或圆弧的中心的行坐标

Parameter[1] (输入控制参数2):圆心或圆弧的圆柱坐标

Parameter[2] (输入控制参数3):圆弧或圆弧的半径

0(输入控制参数):圆弧或圆弧的半径(默认)

6.28318(输入控制参数4):圆弧或圆弧[rad]的终点角度(默认)

'positive'(输入控制参数5):沿圆或圆弧的点顺序(默认)

1(输入控制参数6):相邻轮廓点之间的距离(默认).

拟合为直线

1.创建测量的模型句柄:create_metrology_model

算子:create_metrology_model( : : : MetrologyHandle)

示例:create_metrology_model (MetrologyHandle)

MetrologyHandle(输出控制参数):测量模型句柄

2.添加拟合数据:add_metrology_object_generic

算子:add_metrology_object_generic( : : MetrologyHandle, Shape, ShapeParam, MeasureLength1, MeasureLength2, MeasureSigma, MeasureThreshold, GenParamName,GenParamValue : Index)

示例:add_metrology_object_generic (MetrologyHandle, 'line', [r,r1], 20, 5, 1, 30, [], [], Index)

MetrologyHandle(输入控制参数):输入创建的测量模型句柄

'circle', (输入控制参数1) :要添加的计量对象的类型

Cir(输入控制参数2):要添加的计量对象的参数

20(输入控制参数3):垂直于边界的测量区域的一半长度(默认)

5. (输入控制参数4):与边界相切的测量区域的一半长度(默认)

1(输入控制参数5):与边界相切的测量区域的一半长度(默认)

30(输入控制参数6):最小边缘幅度(默认)

[](输入控制参数7):通用参数的名称(默认)

[](输入控制参数8):通用参数的名称(默认)

Index(输出控制参数):创建的计量对象的索引(默认)

3.添加卡尺测量:get_metrology_object_measures

算子:get_metrology_object_measures( : Contours : MetrologyHandle, Index, Transition : Row, Column)

示例:get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)

Contours(输出对象):输出测量区域的矩形XLD轮廓

MetrologyHandle(输入控制参数1):测量模型句柄

'all'(输入控制参数2):测量对象的索引

'all'(输入控制参数3):选择浅色/深色或深色/浅色边缘

Row(输出控制参数1):测量边缘的行坐标

Column(输出控制参数2):测量边缘的列坐标

4.根据返回的点拟合为直线:gen_region_line

扩展资料:https://blog.51cto.com/u_11531789/5118402

算子:gen_region_line( : RegionLines : BeginRow, BeginCol, EndRow, EndCol : )

示例:gen_region_line (RegionLines1, Parameter[0], Parameter[1], Parameter[2], Parameter[3])

RegionLines1(输出对象):输出直线区域

Parameter[0] (输入控制参数1):起始点行坐标

Parameter[1] (输入控制参数2):起始点列坐标

Parameter[2] (输入控制参数3):终点行坐标

Parameter[3] (输入控制参数4):终点列坐标

5.清除模型句柄:clear_metrology_model

算子:clear_metrology_model( : : MetrologyHandle : )

示例:clear_metrology_model (MetrologyHandle)

MetrologyHandle(输入控制参数):测量模型句柄

拟合为矩形 2 fit_rectangle2_contour_xld (fit_rectangle2_contour_xld.hdev, measure_chip.hdev)

       资源扩展:https://blog.51cto.com/u_11531789/5272983

算子:fit_rectangle2_contour_xld(Contours : : Algorithm, MaxNumPoints, MaxClosureDist, ClippingEndPoints, Iterations, ClippingFactor : Row, Column, Phi, Length1,Length2, PointOrder)

示例:fit_rectangle2_contour_xld (RectangleEdges, 'tukey', -1, 0, 0, 3, 2, Row, Column, Phi, Length1, Length2, PointOrder)

RectangleEdges(输入对象):输入轮廓

'tukey'(输入控制参数1):拟合矩形的算法

-1(输入控制参数2):用于计算的轮廓点的最大数量

0(输入控制参数3):轮廓端点之间的最大距离被视为“闭合”

0(输入控制参数4):拟合要忽略的轮廓起点和终点的点数

3(输入控制参数5):最大迭代次数

2(输入控制参数6):默认值

Row(输出控制参数1):矩形中心的行坐标

Column(输出控制参数2):矩形中心的列坐标

Phi(输出控制参数3):基于水平的角度值 矩形主轴的方向(弧度)

Length1(输出控制参数4):矩形的第一个半径(长度的一半)

Length2(输出控制参数5):矩形的第二个半径(半宽度

PointOrder(输出控制参数6):沿边界的点顺序

猜你喜欢

转载自blog.csdn.net/a296026640/article/details/130456897