在进行图像处理时,难免会遇到Blob分析,诸如判断一个轮廓是否为圆形、是否为正方形等等,以便进行过滤筛选。
1,思路
通常会采用计算该轮廓最小包裹矩形的宽高比来判断是否为圆,但是这种办法不是很严谨,比如下面的轮廓就容易被误判为圆形。
所以,本人想了另外一种办法来避免这种误判。
1:计算轮廓点的形心,记为A。
2:计算所有轮廓点距A的距离,记为集合{Radius}
3:计算集合{Radius}的均值与标准差,均值作为虚拟半径。
4:计算标准差与均值的比值,若比值小于某阈值则判定为圆,反之,非圆。
代码如下:
/*
*@作用:判断一个轮廓(一段闭合轮廓)是否近似圆形。
*@contour:少于6个点直接返回false。
*@sdRatio: 各个点离质心距离的标准差与平均值的比值阈值。若大于该阈