C++和OpenCV实现边缘模板匹配算法

4,911 阅读3分钟

必备知识

NCC边缘信息快速匹配算法

Ncc(normalized cross correlation)归一化互相关匹配法,是基于图像灰度信息的匹配方法。

基于Ncc灰度模板匹配算法通过比较模板图像和搜索图像的相似程度实现目标位置的定位,是广泛应用于工业生产检测、监控领域对象识别、机器人目标定位等的一项重要技术。目前常用的算法有归一化互相关算法、序惯相似性检测算法等。


Ncc匹配算法是现有相关匹配算法中效果最好的一种,具有匹配精度高和抗光照影响等优点。但是传统ncc方法计算量大,且不能实现变角度匹配,难以达到工业检测需求。模板创建比较耗时,十分占用存储空间,影响用户体验。


Ncc归一化匹配,在精度上与这三个【基于灰度信息匹配的算法(1)MAD平均绝对差算法(2)SSDA序惯相似性算法(3)PFC图像灰度编码算法】有显著的优势,有较强噪能力在图像亮度不一或者目标发生微小情况时,依然能够准确的识别到目标。


图像匹配的方法主要有三种:

基于灰度,基于特征,基于变换域。


基于Ncc算法的基础理论来可以讲,是将图像的相似性归结为2个向量的相似性。


边缘提取算法目前有:

Sobel算子、Isotropic Sobels算子、Roberts算子、Prewitt算子、Laplacian算子、 Canny算子等。


目前对于消除噪声的算子主要有:中值滤波、均值滤波、高斯滤波、双边滤波等。

Ps:-长春理工大学机械工程学院【王恩国 吴树范(ncc边缘信息快速匹配算法)】

Sobel算子

卷积的作用除了实现图像模糊或者去噪,还可以寻找一张图像上所有的梯度信息,这些梯度信息是图像的最原始特征数据,进一步处理后就可以生成一些比较高级的特征用来表示一张图乡实现基于图像特征的匹配,图像分类等应用。

Sobel算子是一种很经典的图像梯度提取算子,其本质是基于图像空间域卷积,背后的思想是图像一阶导数算子的理论支持。

Sobel算子主要是用于获取数字图像的一阶梯度,常见的应用和物理意义是边缘检测。

(Laplacian边缘检测并不局限于水平方向或垂直方向,这是Laplacian与soble的区别)

出处:https://www.cnblogs.com/zhaobinyouth/p/12171497.html

工程实现

1)该算法主要是基于图像梯度,实现基于梯度级别的NCC模板匹配,基于Sobel梯度算子得到dx,dy,magnitude。

2)通过Canny算法得到边缘图像、基于轮廓发现得到的所有的轮廓点采集,基于每个点计算该点的dx,dy,magnitude(dxy)三个值,生成模板信息。然后对输入的图像进行Sobel梯度图像之后,根据模型进行匹配。



结果: