fast_threshold (Image, Region, 0, 120, 7)
boundary (Region, RegionBorder, ‘inner‘)
dilation_circle (RegionClipped, RegionDilation, 2.5)
reduce_domain (Image, RegionDilation, ImageReduced)
一副图片的前期处理:
1、 Blob应用(逼近感兴趣区域)
2、 Boundary
3、 膨胀
4、 形成Image
edges_sub_pix(Image : Edges : Filter, Alpha, Low, High : )
提取图像精确边缘 (精确边缘就是亚像素边缘)
(这个函数就是将含有边缘的图像变成亚像素轮廓XLD)
Image: 输入图像
Edges: 输出边缘轮廓
Filter: 边缘提取算法的名称 (canny,lanser1 )
Alpha: 高斯平滑系数
Low: 低阈值
High: 高阈值
edges_sub_pix (ImageReduced, Edges, ‘canny‘, 2, 20, 60)
(20,60,这两个越小,边缘越多,越细腻,越大,边缘越少)
介绍一下Canny算子:
使用累计直方图计算两个阀值。凡是大于高阀值的一定是边缘; 凡是小于低阀值的一定不是边缘;如果检测结果大于低阀值但又小于高阀值,那就要看这个像素的邻接像素中有没有超过高阀值的边缘像素:如果有的话那么它就是边缘了,否则他就不是边缘;
segment_contours_xld(Contours : ContoursSplit : Mode, SmoothCont, MaxLineDist1, MaxLineDist2 : )
将一个XLD轮廓分割为直线段、圆(圆弧)、椭圆弧。
Contours: 需要进行分割的轮廓。
ContoursSplit: 分割后的轮廓tuple。
Mode: 分割轮廓的方式,可以选择‘lines‘(使用直线段分割),
‘lines_circles‘(使用直线段和圆(弧)分割),
‘lines_ellipses‘(使用直线段和椭圆弧分割)。
SmoothCont: 轮廓平滑的参数,可以抑制在折线逼近过程中过短的线段,能更加鲁棒的逼近圆和椭圆。
MaxLineDist1: 第一次用Ramer算法(即用直线段递进逼近轮廓)时的MaxLineDist,在逼近完成之后,再 用圆弧或椭圆弧对相邻分割线段进行拟合,如果拟合圆弧到轮廓的距离小于逼近线段到轮廓的距离,就用圆 弧替代逼近线段,这个过程一致迭代直到所有的线段拟合完毕。
MaxLineDist2: 第二次逼近轮廓时的MaxLineDist,只有当MaxLineDist2
这种两步逼近算法效率较高,因为在第一次逼近过程中,递进逼近的直线段较少,因此较大直径的圆弧能够被高效的分割出来。在第二次逼近过程中,能够被小直径圆弧逼近的轮廓被找到,同时大直径圆弧的末端被重新定义。
segment_contours_xld (Edges, ContoursSplit, ‘lines_circles‘, 5, 4, 3)
Remark:
分割得到的轮廓是直线段、圆(圆弧)或者椭圆弧可以通过分割后轮廓的全局属性‘cont_approx’参数的值来确定(参考get_contour_global_attrib_xld)。
如果‘cont_approx‘=-1,这一部分轮廓最适合被拟合为直线段。
如果‘cont_approx‘=0,这一部分轮廓最适合被拟合为椭圆弧。
如果‘cont_approx‘=1,这一部分轮廓最适合被拟合为圆弧。
Count_obj (ContoursSplit,Number)
计算ContoursSplit连通域的个数
Select_obj (ContoursSplit,i)
选择ContoursSplit连通域中第i个连通域
get_contour_global_attrib_xld(Contour : : Name : Attrib)
用于得到一段XLD轮廓的全局特征
参数列表:
Contour(in):单个轮廓
Name : 特征名称,如
regr_norm_row\regr_norm_col\regr_mean_dist\regr_dev_dist\cont_approx
Attrib(out):特征值
可能前置项:
lines_gauss, lines_facet, edges_sub_pix
get_contour_global_attrib_xld (ObjectSelected, ‘cont_approx‘, Attrib)
如果Attrib =-1,这一部分轮廓最适合被拟合为直线段。
如果Attrib =0,这一部分轮廓最适合被拟合为椭圆弧。
如果Attrib =1,这一部分轮廓最适合被拟合为圆弧。
If (Attrib > 0)
fit_circle_contour_xld(Contours : : Algorithm, MaxNumPoints, MaxClosureDist, ClippingEndPoints, Iterations, ClippingFactor : Row, Column, Radius, StartPhi, EndPhi, PointOrder)
对亚像素拟合圆的函数
Contours(in): 输入轮廓
Algorithm(in): 拟合圆的算法
MaxNumPoints(in): 用于计算的最大轮廓点个数
MaxClosureDist(in): 一个轮廓的末尾点最大间距被认为是闭合
ClippingEndPoints(in):在逼近过程中被忽略的开始及末尾点个数
Iterations(in): 迭代的最大次数用于鲁棒加权拟合
ClippingFactor(in): 消除异常值的裁剪因子
Row(out): 圆心行坐标
Col(out): 圆心列坐标
Radius(out): 圆半径
StartPhi(out): 开始点的角度(rad)
EndPhi(out): 末尾点的角度(rad)
PointOrder(out): 边界点的顺序
fit_circle_contour_xld (ObjectSelected, ‘ahuber‘, -1, 2, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
函数作用:
对一些线段的XLD做近似计算直线计算
参数Algorithm的可选项解释如下:
algebraic:这种方法减少了轮廓点与结果圆之间的代数距离
ahuber:类似于algebraic,轮廓点被加权以减小异常值的影响基于方法Huber
atukey:类似于algebraic,轮廓点被加权以减小异常值的影响基于方法Tukey
geometric:该法减少了轮廓点与结果圆之间的几何距离,该法被统计是最优的,但占用很多计算时间。如果轮廓点被噪声干扰严重,可以考虑使用该方法。
geohuber:类似于geometric,轮廓点被加权以减小异常值的影响基于方法Huber
geotukey:类似于geometric,轮廓点被加权以减小异常值的影响基于方法Tukey
ClippingFactor控制被弱化的异常值个数,值越小,越多异常值被检测到。
最小拟合一条线的必要轮廓点个数是2,因此,一条轮廓线点个数至少是2+2*ClippingEndPoints
可替代项:
fit_ellipse_contour_xld
fit_line_contour_xld
fit_rectangle2_contour_xld
可能后置项:
gen_circle_contour_xld
disp_circle,
get_points_
edges_sub_pix(Image : Edges : Filter, Alpha, Low, High : )
提取图像精确边缘 (精确边缘就是亚像素边缘) (zero—cross)
segment_contours_xld(Contours : ContoursSplit : Mode, SmoothCont, MaxLineDist1, MaxLineDist2 : )
将一个XLD轮廓分割为直线段、圆(圆弧)、椭圆弧。
get_contour_global_attrib_xld(Contour : : Name : Attrib)
用于得到一段XLD轮廓的全局特征
fit_circle_contour_xld(Contours : : Algorithm, MaxNumPoints, MaxClosureDist, ClippingEndPoints, Iterations, ClippingFactor : Row, Column, Radius, StartPhi, EndPhi, PointOrder)
对亚像素拟合圆的函数
第一步:提取轮廓
第二部:分割轮廓
第三部:选取轮廓,得到特征
第四部:根据特征,选择函数进行拟合
1、亚像素精度阈值分割
threshold_sub_pix(Image : Border : Threshold : )
2、亚像素轮廓查找
edges_sub_pix(Image : Edges : Filter, Alpha, Low, High : )
zero_crossing_sub_pix(Image : ZeroCrossings : : )
转载自:http://blog.sina.com.cn/s/blog_c01c55220102ypsx.html
原文:https://www.cnblogs.com/Amiry/p/11916841.html