HTML
-
基于以上描述,文中分别按照上述的两种方法进行实验。实验硬件平台包括计算机和通过互联网接入连接到计算机的单目相机。计算机的操作系统是Windows XP。两个激光测距仪,其中一个激光光斑可见,另一个不可见。具有不可见光斑的激光测距仪的波长为905 nm,可见光斑的激光测距仪为普通红波段,使用的相机为MV-EM系列的工业相机,最高分辨率为1 280×960。
对于方法1,具体操作为使用相机直接观察棋盘,并检测激光光斑。详细的原理图如图2所示。为了追求高精度,在随机位置捕获30个平面姿态,并检测每个图像中激光光斑的像素坐标。通过求解公式(5)和(6)得到未知变量
$\left( {{\theta _x},{\theta _y},{t_x},{t_y},{t_z}} \right)$ 。变量${\theta _x}$ 和${\theta _y}$ 表征激光的方向,$\left( {{t_x},{t_y},{t_z}} \right)$ 表示激光位置。在实际实验中,只有位置变量$\left( {{t_x},{t_y},{t_z}} \right)$ 可以通过实际测量轻松获得,因此文中后续将实际位置与作为方程解的变量进行比较,并将比较结果作为评估方法。如图2所示,在不同位置拍摄6张棋盘图片,图片如图4所示,并且通过最小二乘法求解公式(5)和(6)得到校准参数。
可以看到,方法1的主要误差源是光斑像素坐标的测量误差和相机的内部参数误差,其中像素坐标的测量误差是主要误差源,因为相机的内部参数误差可以通过多次标定来校正。
对于方法1的主要误差源,在检测点的像素坐标时,通常通过选择多个点并计算重心来计算点的像素坐标,以尽量减小像素坐标对参数精度的影响。
对于方法2,由于激光光斑不可见,文中使用激光光斑位于棋盘平面上的约束条件来建立约束方程(12)。根据Zhang和Pless[12]的标定方法,可以得到每个位置的棋盘平面方程。在这种方法中,在随机位置捕获10个平面姿态,并利用张氏方法得到每个图像中的平面方程。通过求解方程(12),得到未知变量
$\left( {{\theta _x},{\theta _y},{t_x},{t_y},{t_z}} \right)$ 。由于存在误差,为了获得高精度,将优化等式(16)最小化以获得更准确的标定结果。具体的标定图像如图5所示。根据笔者拍摄的图片,计算了每个棋盘平面的具体参数
$\pi = {\left( {a,b,c,d} \right)^{\rm{T}}}$ 。具体数据如表1所示。得到每个棋盘平面的参数后,通过求解方程(12)得到未知变量$\left( {{\theta _x},{\theta _y},{t_x},{t_y},{t_z}} \right)$ 。Image\parameter Parameter a Parameter b Parameter c Parameter d 1 79.481 9 −92.458 2 −3 716.7 −1.382 9e07 2 −117.033 3 137.264 9 −3 671.3 −1.351 1e07 3 413.226 3 −1 092 −3 180 −1.147 5e07 4 1 145.8 −686.871 5 −3 032.5 −1.09 8e07 5 99.424 9 −1 394 −2 943.6 −1.06 18e07 6 −1 331.8 292.370 5 −3 152.1 −1.179 5e07 Table 1. Calculation parameters of the chessboard plane
类似地,很明显方法2的主要误差源是棋盘平面参数的求解,并且平面参数的求解涉及相机的内部参数,外部参数和其他因素,这些因素总是具有或多或少的误差。通过人工方法很难减少这种误差。只能收集尽可能多的图像来标定相机的内部和外部参数,以使相机的参数接近真实值。
在得到标定参数后,文中提出几种方法来评估标定结果。对于方法1和方法2,可以使用误差函数公式(15)来评估。通过比较参考图像中激光光斑的两个像素坐标,并根据标定参数计算,如图6所示。从图中可以清晰地看到,取自不同的棋盘姿态的同样数量的图片,方法1的表现明显优于方法2。
上图显示了收集相同数量图像的两种方法的比较结果,显然,方法1取得了良好的效果,因为图像数目相同的条件下,方法1的唯一影响因素是激光光斑的像素坐标。这与收集到的图像数量无关,更重要的是,当使用多个点计算重心时,像素坐标的影响已降至最小。方法2的影响因素包括相机外部参数,外部参数的精度与所收集的图像数量有关。收集的图像越多,外部参数就越准确。因此,在采集图像数量相同的条件下,方法1的表现明显优于方法2。而且文中最后的实际实验结果证实了笔者的推理。
另外,由于位置变量
$\left( {{t_x},{t_y},{t_z}} \right)$ 可以通过实际测量获得,文中定义了另一种评估方法:式中:
$\left( {{t_{0x}},{t_{0y}},{t_{0z}}} \right)$ 为实际激光位置。通过绘制了方法1和方法2在不同棋盘姿态下实际激光位置与计算位置之间的误差d,来评价标定参数的精确性。这两种方法在超过15次测量中都有显著改善。具体比较结果如下:从图7可以看出,这两种方法对位移参数
$\left( {{t_x},{t_y},{t_z}} \right)$ 影响不大,两种方法都可以获得精确的位移参数。Figure 6. Comparison of the actual position and calculated position of the laser spot. (a) Red rectangle is the position calculated by method 1; (b) Blue rectangle is the position calculated by method 2
更重要的是,文中特别比较了进行全局优化的方法与没有全局优化的标定结果。结果如图8所示,原始误差用绿色表示,包括相机内参误差在内的完全优化用红色表示,由此可以看出,全局优化后标定结果的误差明显较小,因为它综合考虑了影响标定过程中标定精度的各种因素,并进行了全面优化。
图8是优化和无优化的比较结果。优化后,将方法1或方法2的所有可能影响因素整合到表达式中以优化结果。优化的优点是利用更多图像来获得更准确的参数。显然,优化后的误差小于没有优化的误差。
对于目前存在的标定算法,将文中算法与其做了对比,对比结果如表2所示。
Existing algorithm Method 1 Method 2 $\left( {{\theta _x},{\theta _y}} \right)$ (1.556,1.588) (1.557,1.586) (1.561,1.590) $\left( {{t_x},{t_y},{t_z}} \right)$ (0.04,−0.08,0.03) (0.04,−0.07,0.04) (0.06,−0.10,0.05) Time/s 0.153 0.063 0.106 Table 2. Comparison of three calibration algorithms
很明显可以看出,在实际的标定结果上,文中算法与现存算法的结果相差不多,但是时间上确是消耗较少,而且方法一比方法二所需时间更少。由于所选样本太少,导致方法二的结果与其他两种方法存在一点偏差。
最后,文中将实际光斑与根据标定参数计算出的像素位置进行了比较。这两种方法都比最小测量集有显著的改进。可以看到,通过14次或更多的测量,方法1达到了可接受的水平。相反,方法2需要18次或更多次才能达到可比的精度。
从图9中可以明显看出,只要有足够的数据图像,参数值就可以收敛到真值,但显然方法1所需的图像数量较少,方法1更容易接近实际值。