本文将讲述一种加速模板匹配的方法——图像金字塔。在Halcon的模板匹配过程中,除了基于描述符的匹配之外,其他几种匹配方法都用到了图像金字塔。图像金字塔是按照一定的排列顺序显示的一系列图像信息,包括原始图像和不同尺寸的下采样图像,如图所示。
为了提高匹配速度,一般是用一个图像金字塔,它包括原图的各种下采样版本,如原始全尺寸及各个层级的下采样图像。这一系列图像从大到小、自下而上构成一个塔状模型,原始图像为第1层(最底层),第2层图像大小仅为第1层的1/4,然后不断迭代,每一层图像包含的信息和细节程度都不相同。这样创建好的模型在匹配的时候,可在不同的金字塔层级中进行图像搜索。采用金字塔采样算法进行形状模板匹配的过程如下。
(1)确定金字塔的层级数,这取决于要寻找的目标,还要保证金字塔最上层的目标图像结构清晰。一般来说,其计算公式为:
在式中,M,N为图像的原始尺寸;t为塔顶图像最小维数的对数。
假设图像原始尺寸是640×480,那么第2~5层的大小分别是320×240、160×120、80×60以及40×30。是否需要更高的层级,取决于第5层的清晰度。根据确定的层级数,利用模板图像创建n层的金字塔图像。
(2)通过降采样创建每层级的金字塔图像,由于一般会出现图像锯齿,因此还需要使用平滑滤波器对图像进行处理。
(3)从金字塔的最顶层开始进行匹配。这个过程就是计算模板与ROI图像的相似性值,可以选择的相似性度量准则有SAD(绝对值总和)、SSD(平方差总和)、NCC(归一化相关)等,其中NCC效果最好,也能很好地适应光照变化。因此,在进行形状模板匹配时NCC是默认方法,但也是比较耗时的方法。
(4)得到了匹配的候选区域后,把这个结果映射到下一层,即直接将找到的匹配点的位置坐标乘以2,下一层的匹配搜索就在这个区域内进行。将找到的结果区域按同样的方法向下映射,直到找不到目标对象或者到达金字塔的最底层,如上图所示。
图(a)为理论上的图像金字塔模型,从底层开始,每一层均为之前一层的向下采样。图(b)为使用inspect_shape_model算子生成的各层级的形状模板图像,要求最小一层的形状仍能保留基本的形状特征,据此可以选择合适的金字塔层级数。对于比较大的模板,由于这种方法减少了搜索区域,因此整个匹配过程非常高效。