openCV 计算连通区域的形状描述符之距的概念和计算
2015-04-30 18:26
375 查看
本文转自:http://blog.csdn.net/huixingshao/article/details/42060231
opencv中的矩主要包括以下几种:空间矩,中心矩和中心归一化矩。
classMoments{public:......
//空间矩
doublem00,m10,m01,m20,m11,m02,m30,m21,m12,m03;
//中心矩
doublemu20,mu11,mu02,mu30,mu21,mu12,mu03;
//中心归一化矩
doublenu20,nu11,nu02,nu30,nu21,nu12,nu03;
}
空间矩的公式为:
可以知道,对于01二值化的图像,m00即为轮廓的面积。
中心矩的公式为:
其中:
归一化的中心矩公式为:
矩的基本概念可参考:
Hu不变矩主要是利用归一化中心矩构造了7个不变特征矩:
OpenCV中计算Hu矩的公式为:
HuMoments(constMoments&m,OutputArrayhu)
voidHuMoments(constMoments&moments,doublehu[7])
matchShapes函数其实比较的是两个轮廓的Hu不变矩:
doublecomres;
comres=matchShapes(contours[0],contours[1],CV_CONTOURS_MATCH_I1,0.0);
printf("CV_CONTOURS_MATCH_I1比较结果是:%f\n",comres);
comres=matchShapes(contours[0],contours[1],CV_CONTOURS_MATCH_I2,0.0);
printf("CV_CONTOURS_MATCH_I2比较结果是:%f\n",comres);
comres=matchShapes(contours[0],contours[1],CV_CONTOURS_MATCH_I3,0.0);
printf("CV_CONTOURS_MATCH_I3比较结果是:%f\n",comres);
第三个参数决定比较的方式,下面是第三个参数的三个可选值。
CV_CONTOURS_MATCH_I1
CV_CONTOURS_MATCH_I2
CV_CONTOURS_MATCH_I3
这里:分别是A,B的Hu矩。
[/code]
本文转自:
opencv中的矩主要包括以下几种:空间矩,中心矩和中心归一化矩。
classMoments{public:......
//空间矩
doublem00,m10,m01,m20,m11,m02,m30,m21,m12,m03;
//中心矩
doublemu20,mu11,mu02,mu30,mu21,mu12,mu03;
//中心归一化矩
doublenu20,nu11,nu02,nu30,nu21,nu12,nu03;
}
空间矩的公式为:
可以知道,对于01二值化的图像,m00即为轮廓的面积。
中心矩的公式为:
其中:
归一化的中心矩公式为:
矩的基本概念可参考:
http://www.opencvchina.com/thread-509-1-1.html
在OpenCV中,还可以很方便的得到Hu不变距,Hu不变矩在图像旋转、缩放、平移等操作后,仍能保持矩的不变性,所以有时候用Hu不变距更能识别图像的特征。Hu不变矩的基本概念请参考paper:Hu.VisualPatternRecognitionbyMomentInvariants,IRETransactionsonInformationTheory,8:2,pp.179-187,1962,或者参考中文介绍:OpenCV中计算矩的函数为:Momentsmoments(InputArrayarray,boolbinaryImage=false)http://www.cnblogs.com/skyseraph/archive/2011/07/19/2110183.html[code]
Hu不变矩主要是利用归一化中心矩构造了7个不变特征矩:
OpenCV中计算Hu矩的公式为:
HuMoments(constMoments&m,OutputArrayhu)
voidHuMoments(constMoments&moments,doublehu[7])
matchShapes函数其实比较的是两个轮廓的Hu不变矩:
doublecomres;
comres=matchShapes(contours[0],contours[1],CV_CONTOURS_MATCH_I1,0.0);
printf("CV_CONTOURS_MATCH_I1比较结果是:%f\n",comres);
comres=matchShapes(contours[0],contours[1],CV_CONTOURS_MATCH_I2,0.0);
printf("CV_CONTOURS_MATCH_I2比较结果是:%f\n",comres);
comres=matchShapes(contours[0],contours[1],CV_CONTOURS_MATCH_I3,0.0);
printf("CV_CONTOURS_MATCH_I3比较结果是:%f\n",comres);
第三个参数决定比较的方式,下面是第三个参数的三个可选值。
CV_CONTOURS_MATCH_I1
CV_CONTOURS_MATCH_I2
CV_CONTOURS_MATCH_I3
这里:分别是A,B的Hu矩。
[/code]
相关文章推荐
- OpenCV2编程手册笔记之 7.6计算连通区域的形状描述符
- opencv之7.6计算联通区域的形状描述
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV 自定义任意区域形状及计算平均值 方差
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- opencv结构分析与形状识别-轮廓检测和填充(连通区域-边缘与整个图像的目标)
- 7.6计算联通区域的形状描述
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- 7.6提取区域的轮廓,计算区域的形状描述算子
- OpenCV计算连通区域数目与最大连通区域并标示出
- OpenCV计算连通区域数目与最大连通区域并标示出
- openCV中的特征点检测、描述子计算、特征匹配的一些类
- OpenCV_连通区域分析
- OpenCV编程案例:使用轮廓函数检测连通区域
- OpenCV_连通区域分析(Connected Component Analysis-Labeling)
- 图像处理之计算二值连通区域的质心
- Opencv2简洁代码提取连通区域