Halcon拟合系列(2)直线/圆/椭圆/矩形拟合算子fit_line_contour_xld/fit_circle_contour_xld/...

简介: Halcon拟合系列(2)直线/圆/椭圆/矩形拟合算子fit_line_contour_xld/fit_circle_contour_xld/...

fit_line_contour_xld.hdev


fit_line_contour_xld(Contours : : Algorithm, MaxNumPoints, ClippingEndPoints, Iterations, ClippingFactor : RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)


参数说明:


1 Contours 输入的轮廓


2 Algorithm 拟合直线算法


'regression' 标准的最小二乘拟合; 最简单,但是受离群点的影响比较大,鲁棒性不强。

'huber' 加权最小二乘拟合,通过Huber方法减小离群点的影响

'tukey' 加权最小二乘拟合,通过Tukey方法减小离群点的影响【默认】

'drop':加权的最小二乘法拟合,异常值的影响被消除【平顶】

'gauss':加权的最小二乘法拟合,异常值的影响被减小基于最逼近线上的所有其轮廓点的平均值和距离标准方差【高斯】

参数列表:


MaxNumPoints(in):用于计算的最大轮廓点个数


ClippingEndPoints(in):在逼近过程中被忽略的开始及末尾点个数


Iterations(in):迭代的最大次数


ClippingFactor(in):消除异常值的裁剪因子,即削波系数,用于消除异常值,默认2.0


RowBegin(out):线段开始点的行坐标


ColBegin(out):线段开始的列坐标


RowEnd(out):线段结尾的行坐标


ColEnd(out):线段结尾的列坐标


Nr(out):线参数:法向量的行坐标


Nc(out):法向量的列坐标


Dist(out):原点到该线的距离


ClippingFactor控制被弱化的异常值个数,值越小,越多异常值被检测到。


最小拟合一条线的必要轮廓点个数是2,因此,一条轮廓线点个数至少是2+2*ClippingEndPoints


可能前置项:


gen_contours_skeleton_xld, lines_gauss, lines_facet, edges_sub_pix, smooth_contours_xld


可能后置项:


disp_line, select_lines, line_orientation


可替代项:


regress_contours_xld, get_regress_params_xld


read_image (Image, 'mreut')
edges_sub_pix (Image, Edges, 'lanser2', 0.5, 20, 40)
gen_polygons_xld (Edges, Polygons, 'ramer', 2)
split_contours_xld (Polygons, Contours, 'polygon', 1, 5)
fit_line_contour_xld (Contours, 'regression', -1, 0, 5, 2, RowBegin, \
                      ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
read_image (Image, 'C:/Users/Administrator/Desktop/1.png')
threshold (Image, Regions, 0, 112)
skeleton(Regions,TriangleSkeleton)
gen_contours_skeleton_xld(TriangleSkeleton,TriangleContours,1,'filter')
segment_contours_xld(TriangleContours,ContoursSplit,'lines_circles', 5, 4, 2)
select_contours_xld(ContoursSplit,SelectedContours, 'contour_length',100, 999, -0.5, 0.5)
fit_line_contour_xld (SelectedContours, 'tukey', -1, 10, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
*计算三个夹角
angle_ll (RowBegin[0], ColBegin[0], RowEnd[0], ColEnd[0], RowBegin[1], ColBegin[1], RowEnd[1], ColEnd[1], Angle1)
angle_ll (RowBegin[0], ColBegin[0], RowEnd[0], ColEnd[0], RowBegin[2], ColBegin[2], RowEnd[2], ColEnd[2], Angle2)
angle_ll (RowBegin[1], ColBegin[1], RowEnd[1], ColEnd[1], RowBegin[2], ColBegin[2], RowEnd[2], ColEnd[2], Angle3)
Angle1:=abs(deg(Angle1))
Angle2:=abs(deg(Angle2))
Angle3:=abs(deg(Angle3))
dev_display (Image)
dev_display (SelectedContours)
disp_message (3600, '角度:' + Angle1 + '°、 ' + Angle2 + '°、 ' + Angle3 + '°', 'image', 20, 20, 'red', 'true')
fit_circle_contour_xld.hdev


fit_circle_contour_xld


参数Algorithm的可选项解释如下:


algebraic:这种方法减少了轮廓点与结果圆之间的代数距离


ahuber:类似于algebraic,轮廓点被加权以减小异常值的影响基于方法Huber


atukey:类似于algebraic,轮廓点被加权以减小异常值的影响基于方法Tukey


geometric:该法减少了轮廓点与结果圆之间的几何距离,该法被统计是最优的,但占用很多计算时间。如果轮廓点被噪声干扰严重,可以考虑使用该方法。


geohuber:类似于geometric,轮廓点被加权以减小异常值的影响基于方法Huber


geotukey:类似于geometric,轮廓点被加权以减小异常值的影响基于方法Tukey


fit_ellipse_contour_xld.hdev


fit_ellipse_tooth_rim_xld.hdev


fit_rectangle2_contour_xld.hdev


---


鸟叔封装的halcon rake卡直线 spoke卡圆工具(开源版) v1.3 20190527


提示信息 - Halcon视觉之家 - 51Halcon专注于机器视觉技术

相关文章
|
计算机视觉
OpenCV-计算轮廓周长cv::arcLength
OpenCV-计算轮廓周长cv::arcLength
137 0
|
6月前
|
计算机视觉 Python
透视变换
【5月更文挑战第15天】透视变换。
42 1
|
计算机视觉
OpenCV-计算轮廓面积cv::contourArea
OpenCV-计算轮廓面积cv::contourArea
249 0
|
Python
Voronoi多边形和Delaunay三角剖分
Voronoi多边形和Delaunay三角剖分
102 0
|
6月前
|
算法
[Halcon&拟合] 直线、矩形和圆的边缘提取
[Halcon&拟合] 直线、矩形和圆的边缘提取
391 0
|
存储 编解码 算法
OpenCV-霍夫圆变换cv::HoughCircles
OpenCV-霍夫圆变换cv::HoughCircles
128 0
|
数据挖掘
ggplot2|从0开始绘制直方图
ggplot2|从0开始绘制直方图
299 0
使用最小二乘法将xld曲线拟合成直线
使用最小二乘法将xld曲线拟合成直线
406 0
|
存储 API 图形学
OpenCV_11 轮廓检测:图像的轮廓+绘制轮廓+轮廓近似+边界矩形+椭圆拟合+直线拟合
轮廓检测指检测图像中的对象边界,更偏向于关注上层语义对象。如OpenCV中的findContours()函数, 它会得到每一个轮廓并以点向量方式存储,除此也得到一个图像的拓扑信息,即一个轮廓的后一个轮廓、前一个轮廓等的索引编号。
1618 0
|
编解码 算法 计算机视觉
Canny算子与霍夫变换检测圆与直线
Canny算子与霍夫变换检测圆与直线
375 0
Canny算子与霍夫变换检测圆与直线