物体坐标系曲面投影立体环视图像生成算法
2022-01-21谢迎娟许海燕李丽媛张学武
谢迎娟,许海燕,李丽媛,张学武
1(河海大学 物联网工程学院,江苏 常州 213022)2(江苏省输配电装备技术重点实验室,江苏 常州 213000)
1 引 言
相比于传统的环视图像,立体环视图像可以使人在视点处从立体和360°范围内观看场景,包含方向、距离、位置等空间结构信息,对空间定向、寻路、形成地图具有重要意[1].立体环视图像具备的高交互及良好的场景渲染效果等优点,在不降低图像分辨率的基础上,可以增大视场角,改善视觉体验,实现虚拟现实功能,便于后续图像的分析及处理,因此在路径引导[2]、辅助驾驶[3]、虚拟现实领域[4,5]等场合都有着重要的研究意义及实际应用价值.
目前国内外基于实景拍摄完成立体环视图像主要是运用三维实景技术实现,利用摄像头对实景的多角度拍摄,形成环视全景.形成的环视全景主要分为立方体全景图像、球面全景图像和圆柱面全景图像[6]等三类.其中立方体全景图由6幅广角为90°的画面组成,重采样区域边界为多边形.球面全景图的视点处于中心,在360°场景描述上有优势,但在两极会有较明显的畸变.柱面全景图便于生成任意视线方向的场景,但在垂直方向的视野较小,对垂直方向的视域有一定的限制.
为了增加环视图像的垂直视角以及减小图像的变形,学者提出诸多立体环视图像生成算法及改进方法,大致可以分为以下几类:1) 将多路摄像机获取的图像进行处理,形成二维平面全景图像,然后将二维图像映射到建立好的三维模型中进行显示:Zhang C.等[7]人用多个相机获得多组图像,基于相似三角形和结构相似性,生成具有适当景深的柱面立体全景图像,可以不间断地在瞬间捕捉全景立体图像用于导航、视频监控、虚拟现实等领域.傅子秋等[8]对多个相机获取的重叠图像,利用棋盘格标定板进行快速相机标定,再由标定参数进行配准完成图像拼接,获得高质量柱面图像.何林飞等[9]将双目鱼眼图像映射到空间单位球面上,利用配对特征点和旋转,获得球面全景图像.2) 以球面为模型,对采集的图像进行定位及调整产生全景效果:Lin H.S.等[10]根据折反射光学全景成像,通过反等矩形图像,全景投影模型,获取半球视场空间的真实三维信息,实现全景立体成像,减少对象边界上的伪影,用于虚拟现实中.Zhang J.D.[11]基于扫描线思想和双线性内插技术,改进了球面透视投影算法,以校正鱼眼图像.然后利用逆透视投影映射来获得良好视觉体验的立体图像,实现车辆全景图像生成.3) 借助其他设备,实现立体视觉全景:郭伟青等[12]对单目双曲镜面成像图像获取切面扫描图像,对被测物体表面的采样点数据进行曲面柔性拟合,重构立体几何模型,应用于管道隧道地下交通设施的检测中.Liu Z.等[13]同时使用线扫描相机和帧相机,捕捉由直线激光照射的物体图像,使用立体视觉测量实现3D重建模型,用于产品表面缺陷检测系统中.
现有方法在二维图像到三维空间映射模型的建模、立体环视图像拼接准确度以及算法复杂度上并没有一个统一的最优方案,每种方法在三维曲面映射、图像拼接、图像校正[14,15]等方面的适应性不同,应用场景也不尽相同.本文综合考虑立体环视图像生成算法的适用性与时间复杂度,提出了一种基于物体坐标系曲面投影的球面立体环视图像生成算法,对图像进行基于物体坐标系的纹理映射;提出基于角度信息的加权平均融合算法,消除叠影及边图像跳变;对拼接后的图像进行亮度和色度校正,消除光照不均、颜色差异的现象.并将本算法应用于车载立体环视图像的生成以验证算法的有效性.结果表明,通过本文方法可解决三维空间模型建立;立体环视图像非自然过渡,图像边缘模糊及物体变形;以及亮度跳跃等问题.
2 基于物体坐标系曲面投影的立体环视图像生成算法
一种基于物体坐标系曲面投影的立体环视图像生成算法,其算法流程如图1所示:根据实际应用场合建立合适的三维模型,利用鱼眼图像畸变矫正算法及单目相机位姿测量算法对图像进行基于物体坐标系的纹理映射,将三维模型划分为融合、非融合区域,将原始图像映射到非融合区域,对于拼接融合区域,结合模型特点,采用基于角度信息的加权平均融合算法,对拼接后的图像进行颜色校正.
图1 基于物体坐标系曲面投影的立体环视图像生成算法流程Fig.1 Flow chart of stereoscopic panoramic image algorithm
2.1 基于物体坐标系的曲面投影
为了显示物体周围的环境,生成立体环视图像,需要以三维模型为载体.本文以物体底面中心为原点建立物体坐标系,将相机位姿特征点位于Z=0的平面上,减少Z方向上的误差,从而提高图像映射的准确性.
二维纹理坐标系的定义如图2所示,定义图像左下角为(0,0),沿坐标归一化后的图像水平方向和垂直方向定义二维纹理坐标系的s轴和t轴,其中,纹理坐标限定在区间[0,1]内.以包围物体的三维曲面模型为中间映射媒介,根据计算机视觉中物体的成像关系,得到三维模型空间点所代表的世界坐标与鱼眼摄像机采集图像所代表的纹理坐标的一一映射关系.
纹理映射过程表示为:
(1)
图2 纹理坐标系Fig.2 Texture coordinate system
其中,(XW,YW,ZW)是三维模型任一点所代表的世界坐标,(s,t)是该点所对应的二维纹理坐标.以物体坐标系为基准,在物体周围放置特征点,用于计算物体上各个摄像头的位姿,则角点的世界坐标表示为(Xi,Yi,0),其中i=0,…,n,n表示特征点的个数.根据相机成像模型及特征点在各个摄像头中的图像坐标得到相机位姿参数,包括旋转矩阵R及平移向量T.
根据计算得到的旋转矩阵R及平移向量T得到三维空间点在各个摄像机坐标系中的坐标(XC,YC,ZC)及感光面坐标(Xp,Yp)分别为:
(2)
(3)
采用逆向映射法,由鱼眼图像的畸变矫正算法获得空间点对应的原始鱼眼图像坐标(u,v)为:
(4)
根据式(5)将鱼眼图像坐标归一化,得到空间点对应的二维纹理坐标(s,t):
(5)
式中width、height分别是鱼眼图像的宽、高.
在获得各个顶点代表的纹理坐标后,如图2所示,根据式(6)可以插值计算得到空间内任一点的纹理坐标p为:
p=a(s0+t0)+b(s1+t1)+c(s2+t2)
(6)
其中,(s0,t0)、(s1,t1)、(s2,t2)别是空间中三角形P0、P1、P2对应的纹理坐标,a、b、c都为正数,且满足a+b+c=1,P=aP0+bP1+cP2.
使用OpenGL进行纹理对象管理,将三维模型各个顶点对应的纹理坐标进行存储.基于OpenGL进行绘制操作,对实时获取的图像进行纹理映射,根据显示命令,配置统一变量,绘制图元,完成映射过程.
2.2 基于角度信息的加权平均融合
在两个摄像头视域范围的交叉区域中,同一个点P可投影到两个摄像头图像中的点p1和p2,一般情况下,p1和p2点的值并不相同.直接融合p1和p2点的值,会导致较严重的模糊或叠影,导致拼接位置处不同的相机拍摄的图像会发生明显的跳变.将两个摄像头视域范围的交叉区域定义为融合区域,非交叉区域定义为非融合区域.
对于立体环视图像的图像融合,结合融合区域形状特征,本文提出基于角度信息的加权平均融合算法,用于消除拼接产生的叠影或者模糊现象.各个顶点的纹理坐标确定方法如图3所示.在融合区域,三维模型中的顶点代表实际空间坐标,经过纹理映射后,在两个相邻摄像机采集的图像中对应两个纹理坐标,进行图像融合时,确定融合后模型各个顶点的纹理坐标,用来表明从纹理图像的哪个部分采样,其余片段进行片段插值.
图3 结合角度信息的图像融合算法Fig.3 Image fusion algorithm based on angle information
其中,v1(x1,y1,z1)、v2(x2,y2,z2)分别是三维模型位于融合区域边界的两个顶点,对应的纹理坐标分别是vt1、vt2,θ1、θ2分别是融合区域边界1和融合区域边界2与基准线的角度,则:
(7)
(8)
因此,在拼接区域,采用基于融合区域角度的加权平均法进行像素级的融合,可以达到消除拼接缝的目的.
2.3 颜色及色度校正
各摄像头原始图像通常存在亮度差异和色度差异,需要对图像进行颜色校正.对于融合后构建的立体环境图像存在的亮度差异,进行光照均一化处理,减弱不同摄像头拍摄的图像融合后在拼接区域的亮度跳跃现象.本文采用基于图像亮度平衡增益的颜色校正方法.算法的具体过程为,首先将采集到单幅图像转换为YUV颜色编码方式,将图像的亮度信息(Y)与色度信息(UV)分离.假设图像的宽为w,高为h,对采集到的图像按照设置的步长s进行采样,采样点个数为:
(9)
每幅采样图像的亮度均值为:
(10)
若对n幅图像进行拼接,图像整体的亮度均值为:
(11)
利用卡尔曼滤波器进行递推计算,将预测值设为0,使用当前测量值BImean更新卡尔曼滤波器的状态值,获得滤波后的亮度Br,则第j幅图像的亮度增益为:
(12)
式中,j=1,…,n.最后将获得的亮度平衡增益设置为纹理增益,对图像进行亮度校正,以达到光照均一化目的.
同样的,对融合后的环视图像存在的色度差异进行校正.计算每幅采样图像的在U、V通道的均值和标准差:
(13)
若对n幅图像进行拼接,图像整体的色度均值为:
(14)
从融合图像中移去均值:
(15)
对每幅图像色度进行校正,按照标准差的比值缩放,再加入均值获得合成图像的输出色度:
(16)
2.4 三维模型的建立
为实现立体环视,需要以三维模型为载体显示物体周围的环境.根据不同的应用场景,本文构建了4种不同的三维模型如图4所示.其中模型1以圆形为底面,以弧面为连接面及环形面,成碗状形态;模型2以圆角矩形为底面,弧面为连接面,柱面为环形面;模型3的组成与模型一相同,但是构成模型的顶点数量不同,底面的宽度也不同;模型4以平面为底面,弧面为连接面及环形面,连接面与环形面的弧度都较大.
图4 4种不同的三维模型Fig.4 Four types 3D models
以视点中心为原点建立世界坐标系,获取视点中心周围标定布上角点的世界坐标,基于物体坐标系进行纹理映射.对广角鱼眼摄像头获取的图像进行处理,得到角点的图像坐标,根据镜头的角度进行垂直性约束,基于经纬映射的非线性等距投影矫正法和逆向映射法将目标图像投影到球面模型上,对鱼眼图像进行矫正,计算出各个摄像头相对于建立的世界坐标系的旋转平移关系,然后根据基于物体坐标系的纹理映射算法,将4个广角鱼眼摄像头拍摄的图像映射到三维模型中,实现初步立体图像.
3 实验与分析
为了验证本文立体环视图像生成算法的效果,将算法应用于真实车辆立体环视图像的生成,实现车辆周围环境的全景图,并以立体形式展现,以验证算法的可行性、实用性及大尺寸视域下算法的可靠性.
实验硬件平台为新科IMX,CPU型号为Freescale i.MX6 Quad,主频为396MHz-792MHz,GPU为Vivante GC2000,软件平台基于Windows操作系统,使用计算机视觉库OpenCV及开放式图形库OpenGL,采用C++编程语言在visual studio 2012平台完成开发.
在真实车辆实验中,汽车的车长为4.45m,车宽为1.78m.通过安装在汽车前保险杠上、左右后视镜下方、后备箱上的4个鱼眼摄像头分别实时获取车身前、左、右、后方位的景象.摄像头采集的4个方位的原始图像如图5所示.两两相邻的摄像头拍摄的图像具有重合区域.
建立以汽车底面所在平面中心为原点的物体坐标系,在以该坐标系为基准的三维空间中,根据标定布上特征点的图像坐标与世界坐标,计算4个摄像头的外参,如表1所示,摄像头外参包括了旋转矩阵及平移矩阵,其中,旋转矩阵分解为摄像头坐标轴绕世界坐标系的X轴、Y轴、Z轴方向上的旋转角度,平移矩阵表示摄像头在世界坐标系中的位置,从表1中可以看出,计算值与测量值偏差不大,但是数值更加精确.
表1 真车摄像头外参Table 1 Real car camera external parameter
经过基于车身坐标系的纹理映射后,采集的四路图像初步形成车身周围的立体环境,但在图像融合区域具有明显的断层现象,由于不同模型的融合区域不同,因此,拼接后的图像出现断层的区域也不同.对拼接后的图像在图像融合区域进行基于角度的加权平均法后,可保持图像内容的连续性,过渡自然.算法复杂度不高且只针对融合区域进行运算,能够满足图像拼接速度的要求.车身近处的标定布拼接准确.由于摄像头安装位置及角度的不同,受到自然光的照射强度不同,融合后的图像具有明显的分界线,对融合后的图像进行亮度和色度的颜色校正.颜色校正后,图像整体亮度差异减小,不同图像间的分界线减弱,更加符合人眼视觉习惯.经过纹理映射、图像融合和颜色校正后得到的真实车辆立体环视图像如 图6所示.在真实车辆实验中,图像拼接的效果较好,没有明显的拼接缝及亮度不均现象,能够以立体形式显示车身周围环境,在汽车行驶过程中,能够给驾驶员展现车身周围的实际情况,提高行车安全性.
图6 真车立体环视图像Fig.6 Real car stereoscopic panoramic image
4 结束语
针对立体环视图像拼接准确度的难点,提出了一种基于物体坐标系曲面投影的立体环视图像生成算法,并以车载立体环视图像的实现验证算法的有效性.实验结果表明根据对于不同尺寸视域下,本文算法建立的立体环视图像拼接效果良好,拼接缝不明显.但是由于从图像纹理平面到三维模型表面是一种非线性过程,在曲率较大处纹理易产生变形现象,后续拟对该问题进行研究.