基于视觉传感器的智能车摄像头标定技术研究
实验方法
情况(1):摄像头俯角小,虽有桶形失真,但关键区域处于图像中部。如图9所示。分段逆透视变换适用于这种情况。
若忽略桶形失真,即让U=Xu+Center_u,V=Yu +Center_v(注意图7中图像原点Ouv在摄像头坐标系中坐标为(- Center_u,- Center_v,f)),则由公式1和公式2可知,
由于Zw=0,上式又可写成:
反解Xw,Yw,可得:
上式又可写成:
理论上根据4个点m1-m8就可以有一组解。
实验步骤如下:以车头为原点,在车头前选取8个点,如图10所示(单位:cm)。 选点要求范围尽量大,跑道经常出现的区域,但又不能处于摄像头输出图像边缘区域;从图9中读出各点像素坐标(a,b);根据分辨率将各像素坐标转换为单片机图像坐标,这是一个线性变换;将8个点分成near、middle、far三组,每组4个点,根据式6可求出三组解。
在单片机程序中,当图像预处理得到(U,V)后,可根据式5解出(Xw,Yw),差别是(U,V)处于不同位置时用不同的参数。由于相邻梯形有两个点是复用的,所以参数不会出现跳跃。图11显示该方法效果很好。
文献[7]中提到可以选取很多点,然后采用最小二乘法进行拟合。但是由于各像素点失真程度不一样(越远离图像中心失真越严重),所以最后结果可能是本来失真较小的点被失真较大的点所"拖累",没有一个点是准确的。
情况(2):摄像头俯角较大,跑道会出现在图像各个位置(如图1(b)所示),这时单片机需要对整幅图像进行处理。可使用下列方法。
这时不再让U=Xu,V=Yu,而是设
从图像中读出多个像素坐标(U,V),令k初值为0.00001,通过式7解出(Xu,Yu),根据式6通过最小二乘法解出 ,再根据式5求出(Xw,Yw),求出拟合误差sum_err。(这里要将式5与式6中的U、V分别换成Xu、Yu)。有关最小二乘法可参考文献[8]。
将k累加0.00001,同样的步骤可求出sum_err。
画出k与sum_err曲线,sum_err起初随着k增大而减小,但从某个k开始又开始增大,k值即取拐点处的值。
结论
本文根据摄像头成像模型,导出逆透视变换公式,并根据两种情况分别给出解决方案。该解决方案方便可行,可供各参赛摄像头队伍参考。
- 智能小车多功能传感器模块的设计(08-27)
- 无人驾驶车辆--移动的传感器平台(10-21)