4.3 基于模板匹配的边缘检测
模板匹配(template matching)就是研究图像与模板(template)的一致性(匹配程度)。为此,准备了几个表示边缘的标准模式与图像的一部分进行比较,选取最相似的部分作为结果图像。如图4.3所示的Prewitt算子,共有对应于8个边缘方向的8种掩模(mask)。图4.4说明了这些掩模与实际图像如何进行比较。与微分运算相同,目标像素及其周围(3×3邻域)像素分别乘以对应掩模的系数值,然后对各个积求和。对8个掩模分别进行计算,其中计算结果中最大的掩模的方向即为边缘的方向,其计算结果即为边缘的强度。

图4.3 用于模板匹配的各个掩模模式(Prewitt算子)

图4.4 模板匹配的计算例
图4.5是一帧图像采用不同微分算子处理的结果。可以看出,采用不同的微分算子,处理结果是不一样的。在实际应用时,可以根据具体情况选用不同的微分算子,如果处理效果差不多,要尽量选用计算量少的算子,这样可以提高处理速度。例如,在图4.5中,(b)和(d)的微分效果差不多,但是(b)Sobel算子的计算量就会比(d)Prewitt算子少很多。

图4.5 不同算子的微分图像
另外,当目标对象的方向性已知时,如果使用模板匹配算子,就可以只选用方向性与目标对象相同的模板进行计算,这样可以在获得良好检测效果的同时,大大减少计算量。例如,在检测公路上的车道线时,由于车道线是垂直向前的,也就是说需要检测左右边缘,如果选用Prewitt算子,可以只计算检测左右边缘的③和⑦,这样就可以使计算量减少到使用全部算子的1/4。减少处理量,对于实时处理,具有非常重要的意义。
此外,在模板匹配中,经常使用的还有图4.6所示的Kirsch算子和图4.7所示的Robinson算子等。

图4.6 Kirsch算子

图4.7 Robinson算子