计算机视觉_OpenCV开源库讲解(轮廓匹配)

我们得到了轮廓的点集之后,可以进行一系列的数学操作,下面讲解一个常用基于轮廓的匹配方法;

  • [1]几何炬计算

  • 比较两个轮廓最简洁的方式是比较他们的轮廓矩.这里先简短介绍一个矩的含义.简单的说,矩是通过对轮廓上所有点进行积分运算而得到的一个粗略特征.通常,我们如下定义一个轮廓的(p,q)矩;

  • 在这里插入图片描述

  • 在公式中p对应x纬度上的矩,q对应y维度上的矩,q对应y维度上的矩,阶数表示对应的部分的指数.该计算是对轮廓边界上所有像素(数目为n)进行求和.如果p和q全为0,那么m00实际上对轮廓边界上点的数目;

  • [2]基于Hu炬的轮廓匹配

  • 在这里插入图片描述

  • [3]相关API讲解;

Moments mm2 = moments(contours2[0]);//几何矩,计算Hu炬,计算轮廓的中心位置
Mat hu2;
HuMomnets(mm2,hu);

for(int i = 0; i < contours1.size(); i++)
{
	Moments mm = moments(contours2[0]);
	Mat hu;
	HuMomnets(mm,hu);
	double dist = matchShapes(hu,hu2,CONTOURS_MATCH_I1,0);
}

double matchShape(Mat hu,Mat hu2,int method,double parameter );
参数详解:
1,hu为待测目标;
2,hu2为模板目标;
3,method为匹配检测方法;
4,parameter一般为0

下面讲解参数method的种类:
在这里插入图片描述
注:常用的方法为第一个I1方法。
该函数的返回值范围在0~1之间,完全相同的图像返回值是0,返回值最大是1;

发布了19 篇原创文章 · 获赞 12 · 访问量 1740

猜你喜欢

转载自blog.csdn.net/qq_41408585/article/details/104484069