周厚达,李泽文,郭爱英,张建华
(1.上海大学 新型显示与系统集成教育部重点实验室,上海 200072;2.上海大学 微电子研究与开发中心,上海 200072)
本文提出的多模式车载全景显示模型可根据车轮转速及车轮转动角度来调节4路鱼眼摄像头的位姿并实现辅助驾驶视角的自动切换,原理如下: 在车身前后左右4个方位安装鱼眼摄像头获取所需的行驶环境信息.
以普通家用轿车为例,假设: 车轮转速n及车轮转向角度α,则车辆的行驶速度为
(1)
行驶状态检测标准:
(2)
(3)
多模式车载全景显示模型框图如图1所示,首先,根据驾驶状态判定进行辅助驾驶模式自动选择高速行车模式或低速泊车模式;然后,通过4路鱼眼摄像头获取图像信息,图像信息以视频形式进入图像获取及矫正模块,接着将矫正后图像输入对应的柱面投影和俯视投影模块;最终经图像柱面融合及俯视融合模块处理后通过车载显示器输出.
图1 多模式车载全景显示模型框图Fig.1 The block diagram of multi-mode vehicle panoramic display system
根据多模式车载全景显示模型框图,本模型在算法实现部分包含4个模块,分别为: 驾驶模式自动选择模块、图像获取及矫正模块、图像投影模块和图像融合模块.
图像获取及矫正模块主要由鱼眼摄像头标定单元、图像获取单元和畸变矫正单元组成.为尽可能大地获取车身周围图像信息,本文选择鱼眼镜头进行图像采集.鱼眼摄像头具有短焦距,广视角的特点.在收集车身周围环境信息时能够在保证环境信息完整的前提下减少摄像头的数量.但也由于这个特点使得获取的图像带有严重的桶型畸变,需要在后期加以矫正处理.
首先在小车周围前、后、左、右安置4个相同参数类型的鱼眼摄像头,完整传输小车周围360°的环境信息[1-5];再利用摄像头标定原理对黑白棋盘格进行拍摄,利用图像中角点位置的变化对摄像头进行标定[6-11]:Mij=[uij,vij]T表示图像坐标系中行为i,列为j的坐标点,M′ij=[Xij,Yij,Zij]是对应的世界坐标系中的点.假设棋盘网格模版在世界坐标系中的Z坐标为0,世界坐标系与图像平面坐标系的对应关系可以表示为
(4)
其中λij为变换尺度因子.为了消除尺度因子这个未知的参数,在等式两边同乘以一个图像的列向量,将右边化为0,得到如下等式:
(5)
将上式展开,针对图像的每一个像素点,可以建立如下方程组:
(6)
对上述方程组进行求解即可得到相机内外参数.
图2 鱼眼矫正前后图像对比Fig.2 Image comparison before and after fisheye correction
在图像的鱼眼矫正部分使用局部保持的矫正模型,该模型是基于Carroll算法[12]实现的.其原理如下: 将棋盘格中的角点信息以直线形式保存,通过建立半球投影模型计算这些直线投影在半球面上的对应位置坐标.将获得的球面坐标与原角点坐标建立映射关系,再对具有桶型畸变的图像进行逆映射获得矫正后的图像.鱼眼矫正效果如图2所示.图2(a)为鱼眼摄像头拍摄到的黑白网格图像,可见未经矫正的图像存在严重的桶形畸变,图像边缘失真严重.经鱼眼矫正后图像如图2(b)所示,黑白网格线已经矫正为直线,且画面无撕裂,完整度较好.将矫正后的4副图像作为该模块的输出.
图像投影模块通过图像获取及矫正模块获取图像输入,根据驾驶模式的不同分为柱面投影单元和俯视投影单元.
图3 柱面投影示意图Fig.3 The cylindrical projection diagram
2.2.1 柱面投影单元
(7)
图4 柱面投影前后图像对比Fig.4 Image comparison before and after cylindrical projection
利用获得的像素映射关系和双线性插值法对原始图像进行柱面投影,投影效果如图4所示.图4(a)为鱼眼矫正后的图像,图像显示清晰且视野范围大,经投影变换后效果如图4(b)所示,原平面图像被映射至柱面上,图像中无重影,图像信息保存完好.将投影后的图像作为柱面投影模块的输出.
2.2.2 俯视投影单元
(8)
其中: Δx1=x1-x2;Δx2=x3-x2;Δx3=x0-x1+x2-x3;Δy1=y1-y2;Δy2=y3-y2;Δy3=y0-y1+y2-y3.
矩阵[u,v,w]中(u,v)表示原始图像的像素点坐标,(x=x′/w′,y=y′/w′)表示经过投影变换后的像素坐标,将原始图像的4角坐标变换带入上述方程式(8)即可求解出变换矩阵的参数,再将变换矩阵与原始图像进行矩阵相乘就可计算出变换后的图像.俯视投影效果如图5.图5(a)中靠近摄像头部分图像失真较小,但在远离摄像头部分图像被拉伸,失真较为严重.由于俯视投影对应的汽车行驶状态为低速泊车模式,故远距离图像信息重要性较低,可以直接去除.经过俯视投影变换后图像如图5(b)所示,在图像中靠近摄像头近距离画面被完整保存,且无畸变,剪切远距离画面部分后将该图像作为俯视投影单元的输出.
图5 俯视变换前后图像对比Fig.5 Image comparison before and after the top view
图像融合模块以图像投影模块的输出作为模块输入,主要由柱面图像融合单元和俯视图像融合单元组成[13-23].
2.3.1 柱面融合单元
在汽车处于前向高速行驶模式时,调用柱面图像融合单元,将4路柱面投影效果图进行图像融合.在图像重叠区域,图像融合的效果好坏是根据2幅图像的灰度值过渡是否平滑决定的,传统的加权平均融合法将2幅待拼接图像的权重设置为固定值,这导致了融合图像由于拍摄角度不同造成明显的拼接缝隙.考虑到与拼接缝距离越近的像素点灰度调整的越多,距离越远则情况相反,针对此种情况,本文提出一种指数加权融合算法.指数加权融合计算公式如下:
(9)
(10)
这里:w1,w2分别代表待处理的图I1和图I2的拼接权重;(xmin,xmax)代表图I1和图I2的重合区域.根据式(9)和(10),图I1的拼接权重w1在重合区域内从1至0平滑下降,而图I2的拼接权重w2情况相反,达到图I1和图I2拼接块的自然过渡.
设I为融合图像,I1和I2分别为参考图像和待拼接图像,则图像I在点(x,y)处的像素值可由式(11) 求得:
(11)
其中R1,R2分别代表参考图像和待拼接图像中未参与配准的区域.图6为指数加权平均融合法示意图,在该图中横坐标表示在拼接图像中像素位置,纵坐标表示待拼接图像在对应的权值大小,2幅图像权重在图像重合区域平滑变化.
柱面全景融合示意图如图7所示,将4幅图像按照前右后左顺序依次排列,在虚线框位置复制第1幅图像,由此完成5幅图像的融合,将融合后图像按黑框部分进行裁剪.最终融合效果如图8所示,可见融合后在图像融合区域无明显拼接缝,且图像显示完整,融合效果较好.
图6 指数加权平均融合法示意图Fig.6 Schematic diagram of exponential weighted average fusion method
图7 柱面图像拼接示意图Fig.7 Cylindrical image mosaic
图8 拼接效果图Fig.8 Stitching effect diagram
图9 全景环视图像融合结果Fig.9 Result of panoramic view image fusion
2.3.2 俯视融合单元
在汽车处于低速行车模式时,输入图像至俯视图像融合单元,同样使用指数加权平均融合法对4路俯视投影图像进行图像融合.在此模块中融合区域不再是长条形拼接带,而是4块锥状区域,因此在融合边界计算时需保存4块区域的边界直线信息.图像拼接时处于图像融合区域内的像素点需计算该点坐标与所处拼接区域边界直线的垂直和水平距离,根据这两段距离分配拼接图像的像素值权重,拼接完成后在图像中心区域贴上小车图片代表模型小车位置.图像融合效果如图9所示,可观察到在靠近小车的区域图像清晰,无明显拼接缝,实现了俯视图像的无缝融合.
模式转换模块处于图像获取及矫正模块之前,利用调整摄像头的位置获取不同方向的车身环境图像,该模块通过检测车辆车轮转速n及车轮转向角度α进行行车状态的判定.
该模块具有实时检测汽车行驶状态并及时切换辅助驾驶模式的能力,能自适应复杂路况.图像获取及矫正模块与图像投影模块在结构上相互独立,且通过模式转换模块进行选择连接,达到根据不同的行车模式将矫正后的图像输出至图像投影模块和图像融合模块的相应单元,并最终在车载显示器上显示融合后的全景图像.
为了验证该系统设计的正确性和合理性,模型小车作为系统载体进行系统实验,本系统实验的硬件平台包括Zedboard开发板,车载显示器等.系统整体硬件框架图如图10所示,4路鱼眼摄像头通过舵机安装在模型小车的前后左右4个方向,将4路摄像头通过USB HUB连接至开发板进行车身环境信息的实时传输,开发板进行运算后将融合后的全景图像输出至车载显示器显示.
本系统使用Zedboard开发板进行测试,运行环境为Linux,版本为Ubuntu 12.04,编译器为arm-linux交叉编译.Zedboard开发板的实物图如图11所示.
图10 系统硬件框架图Fig.10 System hardware framework
图11 Zedboard开发板Fig.11 Zedboard development board
首先在Zedboard开发板上装载Linux操作系统;其次将本文设计的多模式车载全景显示系统的程序运行环境在开发板上进行配置;最后将程序进行移植和测试,至此完成程序运行环境的搭建.
本文利用模型小车来模拟汽车的行驶状态,在车身前后左右安装4路鱼眼摄像头获取车身环境图像,摄像头通过舵机与车身连接,利用USB串口将图像信息传送至开发板中图像获取及矫正模块,该模块接受视频信息后将视频分解为帧图像.
首先对鱼眼摄像头进行标定,将摄像头对准黑白棋盘格进行拍摄,采集棋盘角点信息并储存,建立世界坐标系至图像坐标系的映射函数模型,将角点信息输入模型中对模型参数进行计算并获得摄像头参数矩阵.在图像获取及矫正模块中利用摄像头参数矩阵对获取的视频帧图像进行鱼眼矫正.
将车轮转速初值设定为调8r/s,车轮转向角度定义为0,即将汽车行驶状态设置为高速行车模式.舵机根据行车模式将位置调整使摄像头光轴与地面平行.视频帧图像矫正后输入柱面投影单元.在该单元中对输入4路图像应用柱面投影模型,获取4路柱面投影后的图像.再将柱面投影后图像输入柱面图像融合单元,在该单元中对图像应用柱面图像融合模型,最后将融合后的图像通过HDMI接口输出至显示器显示.
将车轮转速初值设定为0r/s,即将汽车行驶状态设置为低速行车模式.此时舵机根据行驶状态调整位置使摄像头向下转动45°,鱼眼摄像头光轴与地面呈斜向下45°夹角拍摄车身近距离环境信息.视频帧图像经矫正后输入俯视投影单元,获取俯视投影后的图像,接着输入至俯视图像融合单元,应用俯视图像融合模型对图像进行融合,最后融合后的图像通过HDMI接口输出至显示器显示.
图12 行车模式下的模型小车Fig.12 Model car in driving mode
将模型小车放置在地面上,使小车处于杂乱的环境中,有利于检验图像融合的效果.将汽车行驶状态设置为行车模式,具体实验环境如图12所示,此时安装在小车四周的鱼眼摄像头经舵机调整为水平状态,摄像头拍摄车身中远距离环境图像信息,并实时将图像信息输送至开发板,开发板处理后在显示器上输出.在行车模式测试中显示屏上获得的输出图像如图13所示,4路图像经柱面投影和柱面融合模块处理后输出为全景环视图像,可以看到4副图像的交界处过渡自然,无明显拼接缝,画面清晰,显示效果较好.
图13 行车模式下输出的全景环视图Fig.13 Output of panoramic ring view in driving mode
切换模式为低速行车模式,为增加显示效果,在小车下放置一块图案复杂的背景.实际实验环境如图14 所示,安装在小车周围的4路鱼眼摄像头通过舵机调整角度为斜向下45°,拍摄车身近距离图像,获取的图像信息输送给开发板进行图像处理,并最终通过显示器显示.显示屏上获得的输出图像如图15所示,图像中间部分贴上模拟小车图片表示模拟小车位置,在该图中靠近小车周围的图像显示清晰,无明显拼接缝,显示效果较好.
可见在模拟不同的行车模式时,该系统可以成功实现辅助模式的自动切换,即控制舵机旋转来调整输入图像,并根据行车的模式选择对应的图像处理方式,最终输出了清晰、准确的车身周围图像,获得了较好的观看效果,达到实验预期目标.
图14 泊车模式下的小车实物图Fig.14 Cart physical map in parking mode
图15 泊车模式下输出全景环视图Fig.15 Output of panoramic ring view in parking mode
对于辅助驾驶系统而言,系统处理时间是一项重要的性能指标.本文所设计的多模式车载全景显示系统完成4幅图像校正及拼接的总处理时间为70ms,帧率为14f/s,基本满足高速车辆行驶的处理时间要求;并且与目前主流的几种拼接算法,例如: 文献[21-23]针对分辨率,拼接时间,系统处理时间以及使用的硬件平台进行了对比.对比结果如表1所示.
表1 不同拼接算法的性能对比
本文提出的多模式拼接算法的能够拼接分辨率为VGA的图像.文献[21-23]以普通PC机为算法平台,其处理时间均大于几百ms,即处理帧频小于10f/s.本文提出的算法移植到Zedboard硬件平台上,其拼接处理时间仅为70ms,帧频约为14f/s,该套拼接系统可以作为车载设备使用.
本文根据汽车在不同路况下车轮转速及车轮转向角度的不同设计并实现了可自动切换辅助视角的多模式车载全景显示系统,该系统可根据汽车行驶状态切换辅助驾驶模式.在车轮转速高且车轮转向角度小时调整鱼眼摄像头拍摄中远距离图像,并最终输出柱面全景环视图.车轮转速小或车轮转向角度大时,该系统能及时调整摄像头角度,实时拍摄近距离环境信息,最终输出俯视全景图像.该系统能实时根据行驶状态提供驾驶员不同的辅助驾驶视角,彻底消除驾驶过程中的视觉死角.在未来的应用方面,使用性能更强的芯片和摄像头能够有效地增强系统的显示效果,这都将极大地提高本系统对驾驶员的辅助效果.