2.4 实验
实验目的是通过与常用角点检测算法(Plessey算子、Kitchen & Rosenfeld算子、SUSAN算子、CSS算子)进行对比,检验本章提出的角点检测与定位算法(LoD)的性能(包括角点检测和定位精度两方面)。实验由三部分组成:2.4.1节在真实图像上对比各算法在角点检测方面的性能;2.4.2节利用模拟图像比较各算法的角点定位精度;2.4.3节通过三维重建的方法在真实图像上间接比较各算法的角点定位精度。
由于本章提出的基于局部方向分布的算法和四种角点检测算法都有一些参数需要调整,不同的参数选择可能会导致不同的试验对比结果,为保证实验的可靠性,必须合理地进行参数选择。2.4.1节选取使算法结果达到最好的参数。2.4.2节和2.4.3节在保证实验图像中的目标角点都能够成功检测出来的前提下,对比各算法的最好结果。需要特别指出的是,实验表明,本文提出的LoD算法,对三个加权参数和梯度均衡参数的选取均不太敏感,窗口大小的选择对角点检测有一定的影响。因此应用时应根据图像的条件选取适当的窗口大小(本节实验中,2.4.1节和2.4.3节窗口半径为15,2.4.2节窗口半径大小为12)。
2.4.1 角点检测
图2-9是在角点检测算法的比较中被广泛使用的真实图像,其中,图2-9a~d是由Mokhtarian提供的实验结果,图2-9e是LoD算法的结果。可以看出, 在真实角点检测和虚假角点抑制方面,在四个常用的角点检测算子中,CSS算子表现出最好的性能,本章算法具有和CSS相当的角点检测性能。在角点定位方面,四种检测算子检测出的角点中许多明显偏离了真实位置,而LoD算法提供的角点位置较为准确。
图2-9 真实图像上不同算法角点检测定位结果
a)Kitchen&Rosenfeld b)Plessey c)SUSAN d)CSS e)LoD
2.4.2 角点定位精度比较(模拟图像)
本小节主要通过在模拟图像上的实验来比较各种算法的角点定位误差,使用模拟图像的原因是我们知道目标角点的真实位置,从而能够直接测量定位误差。图2-10a是实验中所使用的24幅模拟图像集,包含了各种类型的角点,第一至四行分别为L、T、Y和X类型的角点图像,每种类型均有6个不同角度的角点图像。角点图像的大小为 100×100像素,图像中像素灰度值分别为120(较亮)、100(灰色)和80(较暗)。在实验过程中,首先对图像进行高斯模糊(尺度大小为0.5)以模拟图像获取时的模糊效果,然后加入不同水平的高斯噪声来测试各算法的鲁棒性,同一噪声水平进行20次独立实验。角点的定位误差被定义为24个目标角点检测位置的绝对误差均值,图2-10b是四种常用检测算法和LoD算法的定位误差对比图。在四种常用四个角点检测算法中,CSS检测算法在角点定位精度和鲁棒性两方面均有最为出色的表现,而SUSAN算子在噪声较大时定位精度较差。相对于常用四个检测算子,LoD算法不但具有最高的定位精度,而且也具有最强的鲁棒性。
图2-10 角点定位误差对比
a)模拟图像集 b)定位误差对比
2.4.3 角点定位精度比较(真实图像)
由立体视觉的知识[45]可知,在摄像机标定的前提下,通过三维点在两幅不同视角图像上的像点,可以重建该点的三维空间坐标。三维重建误差主要是由像点定位误差和摄像机标定误差造成的,忽略摄像机标定误差(基于三维标定物的标定方法具有很高的标定精度[45]),可以认为重建误差主要来自像点的定位误差。因此,可以使用三维重建误差来间接评估各算法的角点定位精度。记三维空间中两个角点之间距离的测量值为lengthGT,利用角点检测算法检测图像角点并进行三维重建所得到的距离为lengthrecovery,我们使用下述误差来间接评估各算法的角点定位误差:
图2-11是实验中使用的同一场景两幅图像(图像大小为2048×1536像素),该场景由若干积木块和一个三维标定块组成,其中,积木提供了各种类型的角点,三维标定块用于摄像机标定。在标定块的三个可见面上分别手工选取12个点,采用DLT方法[45]标定摄像机。积木上的19条线段的端点被选择为目标角点,首先应用各种检测算法确定目标角点的二维图像坐标,然后利用标定获得的投影矩阵重建三维空间点。表2-1给出了各种算法重建误差的比较。通过对比可以看出,在四个常用的角点检测算子中,Plessey 和CSS算子具有相当的定位精度, 优于Kitchen & Rosenfeld算子和SUSUAN算子。相对于四个常用的角点检测算子,LoD算子具有更高的定位精度。
图2-11 同一场景不同角度拍摄的两幅图像