定义:首先,需要制作模板,将模板以一定角度旋转,制作 0°~360°的各个方向的模板,模板图像 T 从目标图像的原点处每次移动一个像素,直到匹配分数达到最低要求找到目标物体。
在定义相似度量之前,先作如下定义:目标物体的模板定义为点集
以及这些点对应的方向向量
n 为模板上的像素点数。方向向量的获取可以通过边缘提取方法获得。
从一张图像中想要制作一个模板,只要是包含目标物体的任意感兴趣区域都可以作为模板。为了使得后面的操作更方便,将坐标ip 定义为相对于图像中所有点重心的相对坐标,可以通过 OpenCV 中 cvMoments 函数可以求取图像重心
2.3 模板匹配速度的提升方法
2.3.1 贪心算法提前终止搜索策略
一种提速的方法是对模板和图像进行二次抽样,因为通常模板都非常大,首先在金字塔最高层进行匹配,匹配之后获取的是模板的大概位置,有了这个大概的位置之后,然后使用下一层金字塔的点集进行匹配,获得更精确一些的位姿。虽然这样可以降低算法的复杂度,但是因为模板和图像二次抽样之后容易出现锯齿效应,那么图像中的有些实例就可能被忽略,如果使用二次抽样的方法必须使用平滑算法对图像进行平滑操作。而且图像直接缩小两倍以上的效果不如每次缩小两倍进行多次缩小的效果好。图像金字塔就是模板和图像多次缩小两倍的一种数据结构。图像金字塔每多一层,分辨率下降一半,分辨率高的图像中的四个像素的灰度值均值形成上面一层的一个像素
原图像创建图像金字塔的速度是很关键的一个指标。一般采用的是 2x2 均
值滤波器进行对图像的平滑,是创建图像金字塔的首选。也有用高斯滤波器的,但是需要注意高斯滤波器的尺寸须为偶数,因为如果是奇数容易造成图像金字塔的平移现象。所以高斯滤波器的尺寸最小为 4x4 ,这样就会又增加了金字塔的构造时间。而且较大的滤波器有频率响应的现象, 2x2 均值滤波器并没有这种情况,如图 2-4 所示。 金字塔层数每增加一层,分辨率降低一半,模板点和图像中的点都减少 4倍,那么整体提速就是 4x4 =16倍。如果金字塔的层数是 4 层,那么在最顶层的匹配速度是在原始图像中匹配的速度的 4096 倍。采用如下的搜索策略,首先在最顶层找到大概的位姿,进行一次完整的匹配。然后逐层向下确定下一层中的位姿,最后在原始图像中找到精确位姿。向下一层映射的时候只要把上一层搜索得到的坐标乘二。因为有可能上一层得到的位姿的不确定,所以在下一层搜素的时候应该是在上一层位姿的一个区域,可以假设这个区域的大小为 5x5的矩阵[40]。
2.4 基于 Sobel 算子的边缘检测算法