一、圆度
- 目前在生产实践中,圆度的测量仪器主要有圆度仪、三坐标测量机等,而圆度的评定和计算则是通过圆度仪、三坐标测量机等精密仪器自带的计算程序来完成。
由于设计者对程序严格保密且这些程序大都价格不菲,因此,使用者希望开发更多、更方便的圆度评定方法。
实际上,圆度评定和计算的过程就是一个按照圆度评定标准构造函数原型进行优化求解的过程。
二、获取轮廓(连通域)的特征。
-
1、轮廓面积获取函数
输入当前轮廓点集,输出该轮廓点集的面积
area = contourArea(contours[t]);//计算轮廓面积 -
2、轮廓周长获取函数
输入当前轮廓点集,第二个参数:bool closed:表示轮廓是否封闭的
输出该轮廓点集的周长
len = arcLength(contours[t], true);//计算轮廓周长 -
3、轮廓圆形度计算
原本计算公式:
网上的公式一般是这个:e=(4π 面积)/(周长 * 周长);
这里将周长等价于2pi*r;
area = contourArea(contours[t]);//计算轮廓面积
len = arcLength(contours[t], true);//计算轮廓周长
roundness = (4 * CV_PI * area) / (len * len);//圆形度 -
4、矩形度计算
//先计算最小外接矩形的面积:
RotatedRect minrect = minAreaRect(contours[t]); //最小外接矩形
area = contourArea(contours[t]);//计算轮廓面积
int minrectmianji = minrect.size.height * minrect.size.width;
if (minrectmianji == 0)rectangularity = 0;
else rectangularity = area / minrectmianji;
注意点:
minrect.size是个数组,表述的是尺寸即:width,height -
5、宽长比计算
宽长比:最小外接矩形的长轴与短轴的比值
RotatedRect rbox = minAreaRect(contours[i]);
fabs(rbox.size.width * 1.0 / rbox.size.height - 1) < 0.1 //表示宽长比在1附近+-0.1内浮动 -
6、周径比计算
周径比的周即周长,径是指上面找到的轮廓最小外接矩形的长的一条边
lenratio = len / (minrect.size.height > minrect.size.width ? minrect.size.height : minrect.
三、参考
http://www.taodudu.cc/news/show-5943621.html?action=onClick
http://www.taodudu.cc/news/show-5943618.html?action=onClick
网友评论