模板匹配理论与opencv实践

       

一、opencv灰度匹配cv::MatchTemplate

       1)cv::MatchTemplate是灰度匹配,该函数的优点是精度高,因为是一个个像素点的比较;缺点是计算时间长,因为要计算的点比较多,一个个比较花费时间长。如果从图像金字塔的角度,把模板和图像都降低分辨率来匹配,这样时间上可以提高一个数量级。但问题又来了,分辨率要降低到多少是合适的,如果看一个东西,缩小到什么时候辨认不出是什么的时候,就是分辨率的最小极限了。

      2)cv::MatchTemplate需要由于是逐个像素点的匹配,需要模板图像的大小与待匹配区域的大小一致方能匹配。如果模板图像的大小过大或过小都会导致匹配紊乱,有一篇关于Multi-scale Template Matching文章可用来解决这个问题:https://www.pyimagesearch.com/2015/01/26/multi-scale-template-matching-using-python-opencv/。文章也提到,如果待匹配图像中如果存在模板旋转或者非仿射变换,opencv的cv::MatchTemplate是行不通的,可接跳转至特征点匹配的方法。

      3)如果受光照因素比较大,用cv::MatchTemplate也是行不通的,因为模板的像素与待匹配图像存在一定灰度距离,此时可以考虑计算模板和待匹配图像灰度梯度边缘后再进行匹配。

     

二、形状匹配

        opencv中使用cv::MatchShapes,这个就是形状匹配,函数本身写的不错,但是熟练使用此函数的人不多,若优化的好,许多工业应用就不需要再买其他软件了。

(借鉴:https://blog.csdn.net/mr_vision/article/details/3999662

发布了64 篇原创文章 · 获赞 19 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/wwwsssZheRen/article/details/88973677