第四章 网格化匹配在基于像素值模板匹配的实验结果
4.1实验数据集介绍
我们使用的数据集来自Visual Tracker Benchmark(http://www.visual-tracking.net)。
该数据集主要包含以下场景和条件变化:
- 照明变化-目标区域的照明发生了显着变化。
- 比例变化–第一帧和当前帧的边界框之比超出ts,ts> 1(ts = 2)的范围。
- 遮挡–目标被部分或完全遮挡。
- 变形–非刚性物体变形。
- 运动模糊–由于目标或摄像机的运动,目标区域模糊。
- 快速运动–ground_truth的运动大于tm像素(tm = 20)。
- 平面内旋转–目标在图像平面内旋转。
- 平面外旋转–目标旋转到图像平面外。
- 视线外–目标的某些部分离开视线。
- 背景噪声–目标附近的背景具有与目标相似的颜色或纹理。
- 低分辨率小目标–bounding box内的像素数小于tr(tr = 400)。
图片场景变化丰富,涵盖了篮球场、公路自行车、鸟、汽车、跑道上的人、衣服上的logo、草丛、室内室外的人等等。
数据集图片示例
4.2对比算法介绍
模板匹配算法主要分为基于边缘的模板匹配和基于像素值的模板匹配。本章我们主要讨论基于像素值的模板匹配,对于基于边缘的模板匹配不做讨论。模板匹配是一种高级的机器视觉技术,可识别图像上与预定义模板匹配的部分。先进的模板匹配算法允许查找模板的出现,而不管其方向和局部亮度如何。模板匹配技术灵活且使用起来相对简单,这使其成为对象定位最流行的方法之一。它们的适用性主要受到可用计算能力的限制,因为识别大型模板和复杂模板可能很耗时。模板匹配将以一种非常直接的方式执行实际搜索-我们将模板放置在图像上每个可能的位置,并且每次我们计算模板和当前与之重叠的图像片段之间的相似度的数值度量。最后,我们将确定产生最佳相似性度量的位置作为可能的模板出现。计算图像相关性的基本方法称为互相关,它本质上是图像的相应像素值的成对乘法的简单和。尽管我们可能注意到相关值确实似乎反映了所比较图像的相似性,但是互相关方法远非鲁棒。它的主要缺点是它受图像整体亮度变化的影响-即使第二个图像根本不相似,图像的增亮也可能使其与另一个图像的互相关性急剧上升。
1.NCC (归一化互相关)
NCC是一种基于统计学计算两组样本数据相关性的算法,其取值范围为[-1, 1]之间,而对图像来说,每个像素点都可以看出是RGB数值,这样整幅图像就可以看成是一个样本数据的集合,如果它有一个子集与另外一个样本数据相互匹配则它的ncc值为1,表示相关性很高,如果是-1则表示完全不相关,基于这个原理,实现图像基于模板匹配识别算法,其中第一步就是要归一化数据,数学公式如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191126215952811.png
归一化互相关是经典互相关方法的增强版本,与原始互相关方法相比,引入了两个改进:
结果与全局亮度变化无关,即,任一图像的一致增亮或变暗对结果没有影响(这是通过从每个像素值中减去平均图像亮度来实现的)。
最终相关值被缩放到[-1,1]范围,以使两个相同图像的NCC等于1.0,而图像及其取反的NCC等于-1.0。
实现NCC模板匹配需要进行以下步骤:
(1)获取模板像素并计算均值与标准方差、像素与均值diff数据样本;
(2)根据模板大小,在目标图像上从左到右,从上到下移动窗口,计算每移动一个像素之后窗口内像素与模板像素的ncc值,与阈值比较,大于阈值则记录位置;
(3)定模板相关图像的哪些点足够好,可以视为实际匹配。通常,我们将表示模板相关性的位置(同时)标识为匹配项:1.大于某个预定义的阈值(即大于0.5);2.局部最大(比相邻像素中的模板相关性强)
2.SSD(平方差总和)
SSD相似度的计算公式如下图所示,其余匹配过程与NCC相似,不做赘述:
3.SAD
SAD相似度的计算公式如下图所示:
4.3 实验对比指标
在本实验中,数据集的ground_truth为目标的边框,计算实验结果与ground_truth的IOU,统计不同IOU要求下的正例和负例比例,计算AUC值。
下面,将对AUC的计算做详细介绍:
AUC(Area Under Curve)被定义为ROC曲线下与坐标轴围成的面积,显然这个面积的数值不会大于1。 又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。
ROC空间将伪阳性率(FPR)定义为 X 轴,真阳性率(TPR)定义为 Y 轴。
TPR:在所有实际为阳性的样本中,被正确地判断为阳性之比率。
FPR:在所有实际为阴性的样本中,被错误地判断为阳性之比率。
同一个二元分类模型的阈值可能设定为高或低,每种阈值的设定会得出不同的FPR和TPR。将同一模型每个阈值 的 (FPR, TPR) 座标都画在ROC空间里,就成为特定模型的ROC曲线。
ROC曲线下方的面积(Area under the Curve of ROC (AUC ROC)),其意义是:
(1)因为是在1x1的方格里求面积,AUC必在0~1之间。
(2)假设阈值以上是阳性,以下是阴性;
(3)若随机抽取一个阳性样本和一个阴性样本,分类器正确判断阳性样本的值高于阴性样本之几率。
(4)简单说:AUC值越大的分类器,正确率越高。
从AUC判断分类器(预测模型)优劣的标准:
(1)AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
(2)0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
(3)AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
(4)AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
4.4实验结果
4.4.1实验效果图
图4-1 实验效果图
图4-1左上角图片中的红色框内为模板图片,在后续图片的检测结果中,绿色框代表基于像素值的网格化模板匹配算法的结果,黑色框是基于SAD模板匹配的结果,紫色框是基于NCC模板匹配的结果,蓝色框是基于SSD模板匹配的结果。我们可以看到,基于像素值的网格化模板匹配算法的结果效果最好,即使在发生严重遮挡和光照变化、模糊的情况下也能准确识别目标。在第三幅图像中,当发生严重遮挡时,以及第六幅图像中目标发生严重光照变化时,SSD、SAD、NCC算法均检测失败,足以见得,网格化匹配在模糊、光照变化以及遮挡的情况下有极强的鲁棒性。
4.4.2性能比对图
图4-2 算法性能对比图
我们分别取IOU_threshold (即ground_truth与算法输出框的重合比例)为[0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1.0],计算算法输出正例占比,得到以上曲线图。我们可以看出,基于像素值的网格化模板匹配算法的AUC最大,检测效果最好。SSD效果最差,这种简单粗暴的平方差综合计算相似度,在光照变化、发生遮挡的情况下几乎会完全失效。并且,从图中可以看出,在IOU高于0.7时正确率会急速下降,说明模板匹配的IOU准确度可以达到0.6左右。
4.5速度
本实验基于Intel® Core™ i7-8700 CPU @3.2GHz、X64的处理器,依赖于opencv4.1版本,基于VS2017 vc141工具集完成实验。
我们在640*480的相同纹理的图像上进行500次运行取平均值的统计,得到各算法的运行速度如下图所示。
算法名称 Debug(s) Release(s)
基于像素值的网格化模板匹配 4 1
SSD 2.2 0.5
NCC 3.8 0.9
SAD 1.6 0.2
4.6 实验分析
从实验效果图4-1和实验性能图4-2中,我们可以得出,基于像素值的网格化模板匹配算法较传统经典的模板匹配算法有更好的检测性能,在面对光照变化、柔性形变、严重遮挡、运动模糊等复杂棘手场景中,基于像素值的网格化模板匹配算法拥有更强的鲁棒性和更高的检测率以及更高的IOU准确度。由于本算法在计算量上比较大,所以目前实时性暂时无法得到保证,有待优化。