首页 > 其他分享 >Halcon轮廓的分割,合并及圆&矩形&线拟合

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

时间:2023-05-01 16:33:30浏览次数:37  
标签:输出 轮廓 MetrologyHandle xld 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):沿边界的点顺序

 

 

 

 

标签:输出,轮廓,MetrologyHandle,xld,Halcon,控制参数,拟合,矩形,输入
From: https://www.cnblogs.com/ksjqsj/p/17366658.html

相关文章

  • Halcon轮廓的分割,合并及圆&矩形&线拟合
    变换 平滑轮廓:smooth_contours算子:smooth_contours_xld(Contours : SmoothedContours : NumRegrPoints :)示例:smooth_contours_xld(Border,SmoothedContours,11)Border(输入对象):输入轮廓对象SmoothedContours(输出对象):输出平滑后的轮廓11(输入控制参数):数值越大越平滑形状变换......
  • day 60 84. 柱状图中最大的矩形
    给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为1。求在该柱状图中,能够勾勒出来的矩形的最大面积。  classSolution{publicintlargestRectangleArea(int[]heights){if(heights==null||heights.length==0){......
  • 如何减少过拟合?
    过拟合即过度拟合train集分布,泛化能力差解决方案正则化L0,L1,L2dropoutearlystop数据增强正则化正则化是一类通过限制模型复杂度,从而避免过拟合,提高泛化能力的方法,包括引入一些约束规则,增加先验、提前停止等。L0,L1,L2正则化指给目标函数增加关于模型权重......
  • 【数据挖掘&机器学习】招聘网站的职位招聘数据的分位数图、分位数-分位数图以及散点图
    一.本次需求背景本文主题:招聘网站的职位招聘数据的分位数图、分位数-分位数图以及散点图、使用线性回归算法拟合散点图处理详解之前的文章我们已经对爬取的数据做了清洗处理,然后又对其数据做了一个薪资数据的倾斜情况以及盒图离群点的探究。我们这次的需求是:使用散点图、使用......
  • ML-误差、偏差、过拟合、正则化
    机器学习在损失函数中加入正则项,称为Regularize正则化。目的是防止过拟合。原理是:加上限制后,缩小了解空间,从而减少过拟合的可能性。L0范数表示向量中非零元素个数,但L0范数的求解是个NP-Hard问题;L1范数也可以实现稀疏,而且更容易求解。L2范数不如L1范数更能够降低复杂度,但是处处可......
  • C++拟合多项式
     #include<iostream>#include<vector>#include<cmath>#include<ctime>//eigen核心部分#include<Eigen/Core>//稠密矩阵的代数运算(逆、特征值等)#include<Eigen/Dense>usingnamespaceEigen;usingnamespacestd;///<summary>///拟......
  • Halcon XLD 生成提取&测量及特征筛选
    6.1XLD的生成和提取XLD的创建生成圆轮廓gen_circle_contour_xld算子:gen_circle_contour_xld(: ContCircle : Row, Column, Radius, StartPhi, EndPhi, PointOrder, Resolution :)示例:gen_circle_contour_xld(ContCircle1,500,500,150,0,6.28318,'positiv......
  • halcon 仿射变换
    一、两点计算:刚体仿射变换1、vector_to_rigid:1)根据两个以上点对计算计算刚性仿射变换矩阵,支持旋转和平移2、vector_angle_to_rigid1)根据点和角度计算刚性仿射变换矩阵,支持旋转和平移 ......
  • SVG 教程 (二)矩形
    SVGSVGShapesSVG有一些预定义的形状元素,可被开发者使用和操作:矩形<rect>圆形<circle>椭圆<ellipse>线<line>折线<polyline>多边形<polygon>路径<path>下面的章节会为您讲解这些元素,首先从矩形元素开始。SVG矩形-<rect>实例1<rect>标签可用来创建矩形,以及矩形的变种:下......
  • Halcon Variation_model 详解
    介绍使用Halcon的差异模型进行检测,主要分为下面的四个步骤:create_shape_model创建检测的区域匹配模板注:这里使用形状匹配模板,当然也可以通过其它的匹配算法实现create_variation_model创建差异模型rain_variation_model训练正常图像prepare_variation_model......