前段时间一直在做图像模板匹配。需要对旋转模板进行匹配,并且对速度精度都有较高的要求。OpenCV里面并没有较好的解决方法。
cvMatchTemplate( const CvArr* image, constCvArr* templ,CvArr* result,int method )
Image 待搜索图像
Templ 模板图像
Result 匹配结果 用来存放通过以下方法计算出滑动窗口与模板的相似值
Method 计算匹配程度的方法
以上函数当模板存在较大旋转时就无法准确匹配了。
OpenCV形状匹配函数
double cvMatchShapes(void* object1,void* object2,int method)
第一个参数是待匹配的物体1,
第二个是待匹配的物体2,
第三个参数method可以有CV_CONTOURS_MATCH_I1,CV_CONTOURS_MATCH_I2,CV_CONTOURS_MATCH_I3三种输入,这其实就是三种不同的判定物体相似的方法,匹配的返回值也是不一样的。
以上函数匹配精度也不高,只能达到像素级。
特征点匹配如Sift算法等需要图像质量较好,噪声大的图像不适应,而且找到特征点之间一一对应关系是难点。
halcon等商业软件这方面做的很好。 halcon基于形状的匹配Shape-Based matching能完美解决工业条件下的模板匹配问题。
HALCON提供的基于形状匹配的算法主要是针对感兴趣的小区域来建立模板,对整个图像建立模板也可以,但这样除非

该博客探讨了在图像处理中实现旋转无关的模板匹配问题,指出OpenCV在处理旋转模板匹配时的局限性。作者利用Halcon库找到了解决方案,通过先粗定位再精定位的方法达到亚像素级别的精度,并能输出匹配角度。文章还提到了相关转换函数的应用。

350

被折叠的 条评论
为什么被折叠?



