本发明属于图像处理领域,涉及全景泊车中鸟瞰图像的自动拼接方法、系统及车辆。
背景技术:
驾驶员在倒车以及泊车时,发生倒车事故的概率占据了道路交通事故很大的比例。发生倒车事故的原因是多方面的,如倒车镜存在视觉盲区、恶劣天气造成的驾驶员视线模糊、驾驶员驾驶技术不熟练等。虽然倒车事故很少引起严重的交通事故,但是经常给车主带来麻烦和一些经济损失。全景辅助泊车系统通过安装在车身周围的多个鱼眼摄像头,同时采集车辆多个方向的实时图像,图像处理单元对这些图像进行处理,最终能够为驾驶员提供周边360度的全景图像,无任何死角,并且以俯视图的方式在车辆中控台上显示。全景辅助泊车系统能够以视频图像的方式告知驾驶员周围的情况除了可以帮助减轻泊车压力、辅助驾驶员倒车之外,还能避免一些安全事故,提高泊车的安全性。
全景辅助泊车系统在使用之前,需要对系统进行标定,获取全景拼接参数,这是系统的核心。目前的全景辅助泊车产品,在获取拼接参数时,很多需要技术人员手工操作来完成最终的鸟瞰图像的拼接,这种工作方式将增加技术人员的工作难度,同时也降低了全景拼接的精度,此外,因四个摄像头安装的高度和角度都各不相同,使得组成全景拼接图像的各个部分亮度变化不自然,不利于驾驶员的泊车。
技术实现要素:
本发明的目的是为克服上述现有技术的不足,提供全景泊车中鸟瞰图像的自动拼接方法,该方法能够自动实现鸟瞰图像的拼接,且全景拼接图像亮度变化自然,无明显的拼接缝隙。
本发明提供的第二目的是提供一种全景泊车系统的标定系统,该标定系统通过对图像的获取,处理后,可实现鸟瞰图像的自动拼接,提高全景拼接图像的质量。
本发明还提供一种车辆,该车辆采用上述的一种全景泊车系统的标定系统,通过该标定系统的使用,可实现车辆的辅助泊车。
为了达成上述目的,本发明采用如下技术方案:
本发明提供的第一个方案是:
全景泊车中鸟瞰图像的自动拼接方法,对每个摄像头覆盖区域子图像,先进行市街区距离变换,然后利用图像的市街区距离提取该子图像的骨架,接着根据骨架点的横坐标统计直方图和纵坐标统计直方图,确定这个子图像的十字交叉线中心点;根据该十字交叉线中心点实现鸟瞰图像的拼接;采用图像的市街区距离提取该子图像的骨架,有利于实现鸟瞰图像的准确拼接。
上述利用图像的市街区距离提取该子图像的骨架的方法如下:采用迭代的方法计算图像的动态阈值,根据该阈值对图像进行二值化处理,然后对图像中的目标像素点进行市街区距离变换,将每个目标像素的市街区距离和其周围像素的市街区距离进行比较,如果周围像素的市街区距离比当前像素的市街区距离都要小的话,则当前像素留下作为骨架,否则消去为背景。
上述自动拼接方法,具体步骤如下:
1)根据拼接模板将汽车周围用于标定的鸟瞰图像进行旋转,保证旋转后的鸟瞰图像的棋盘格方向与拼接方向一致,确定旋转后的鸟瞰图像中的棋盘格内角点构成的矩形区域;
2)根据鸟瞰图像中单位棋盘方格的图像尺寸,对鸟瞰图像进行尺寸归一化处理;
3)确定鸟瞰图像中摄像头覆盖区域子图像,对每个子图像进行市街区距离变换并提取子图像的骨架,确定子图像的十字交叉线中心点;
4)根据步骤3)确定的十字交叉线中心点,按照预先设定好的拼接模板,将鸟瞰图像拼接为一幅全景拼接图像。
进一步地,所述步骤1)的具体步骤如下:
1-1)图像坐标系的建立:以摄像头拍摄的图像左上顶点为坐标原点,水平向右为横坐标x的正方向,垂直向下方向为纵坐标y的正方向;
1-2)摄像头参数的确定:通过张正友标定方法确定;
1-3)对汽车四周的标定图像Ai进行畸变校正后,获得普通透视图像Bi;
1-4)根据普通透视图像Bi中棋盘格内角点的实际坐标、图像坐标及摄像头参数,计算透视图像Bi的单应性变换矩阵Hi,i=0,1,2,3;
1-5)根据确定的单应性变换矩阵Hi将透视图像Bi进行鸟瞰变换,得到鸟瞰图像Ci。
进一步地,所述步骤1)中确定旋转后鸟瞰图像中棋盘格内角点构成的矩形区域方法如下:
2-1)根据透视图像Bi中已经识别出的棋盘格内角点,确定这些内角点组成的矩形区域的左上、右上、左下和右下四个内角点的图像坐标,将其记为PQTij(xij,yij),其中j=0,1,2,3,利用单应性变换矩阵Hi,将PQTij按照公式(2)进行坐标变换,其中x′ij、y′ij分别是xij、yij坐标变换后对应的坐标值;
2-2)变换后内角点坐标对应于鸟瞰图像Ci中棋盘格内角点构成的矩形区域的四个顶点位置的坐标,这样能够确定鸟瞰图像Ci中棋盘格内角点构成的矩形区域R1i,将矩形区域R1i的四个顶点坐标记为PPTij(x′ij,y′ij);
2-3)根据拼接模板对鸟瞰图像Ci进行角度旋转操作,以鸟瞰图像Ci的左上点为旋转中心,若逆时针旋转角度为Agi度,根据公式(4)、公式(5)、公式(6)和公式(7)可以确定变换矩阵Mi,其中xim、yim指的是旋转后图像的横坐标x和纵坐标y的最小值;根据已经确定的旋转变换矩阵Mi、旋转角度和鸟瞰图像Ci旋转前图像中的棋盘格内角点构成的矩形区域R1i,利用公式(8)能够确定旋转后的鸟瞰图像Ci中的棋盘格内角点矩形区域R2i,矩形区域R2i的四个顶点坐标可记为PTij(x″ij,y″ij)
mi2=-xim (6)
mi5=-yim (7)
x″ij=mi0x′ij+mi1y′ij+mi2,y″ij=mi3x′ij+mi4y′ij+mi5 (8)
进一步地,所述步骤2)中对鸟瞰图像进行尺寸归一化处理的方法为:
根据确定的鸟瞰图像Ci中的棋盘格内角点矩形区域R2i,可以计算出鸟瞰图像Ci中单位棋盘方格的图像尺寸ui,若预先设定的单位棋盘方格的归一化尺寸为u,那么图像Ci的缩放因子根据si对鸟瞰图像Ci进行尺寸变换处理,根据缩放因子si和棋盘格内角点矩形区域R2i,能够确定在尺寸归一化处理后的鸟瞰图像Ci中的棋盘格内角点矩形区域R3i。
进一步地,所述步骤3)中提取图像骨架的方法为:
根据图像Ci中的棋盘格内角点矩形区域R3i,借助标定布上棋盘格、十字交叉线的尺寸和布局,能够确定图像Ci中的十字交叉线公共区域子图像R4iC1、R4iC2,将R4iC1、R4iC2分别作为感兴趣区域图像做如下的处理:
3-1)计算感兴趣区域图像的自适应阈值;
3-2)根据3-1)计算的阈值将感兴趣区域进行二值化处理;
3-3)对子图像中的目标像素点进行市街区距离变换;
3-4)将每个目标像素的市街区距离与该目标周围像素的市街区距离进行比较,若周围像素的市街区距离小于目标像素的市街区距离,将该目标像素留下作为骨架,若否,则消去为背景。
若R是一个区域,B是R的边界,对于R中的点p,找p在B上“最近”的邻点,如果有2个或以上的B中的点与p同时最近,则称点p是R的骨架点。若d(p,z)表示点p与点z之间的距离、ds(p,B)表示点p到点集B的最小距离,那么骨架的数学定义可以写成公式(9),其中距离量度可以是欧式的、城区的或者棋盘的。二值图像的市街区距离dA的定义如公式(10),其中(i1,j1)是图像中目标像素坐标值,(i2,j2)是距离目标像素最近的背景像素点的坐标。
dA=|i1-i2|+|j1-j2| (10)
进一步地,所述感兴趣区域图像的自适应阈值的计算方法如下:
3-1-1)计算感兴趣区域图像的灰度直方图H[k](其中k=0,1,2,…,255),H[k]表示灰度值为k的像素点有H[k]个,根据H[k]可以得到图像的最大灰度值fmax和最小灰度值fmin,若C表示图像中灰度值小于等于k的像素点个数,S表示图像中灰度值小于等于k的像素点的灰度值的和,令初始阈值nT=(fmax+fmin)/2,k=fmin,C=0,S=0;
3-1-2)根据公式(11)、公式(12)和公式(13)计算dL[k],这样计算的dL[k]表示图像中灰度值小于等于k的像素的灰度平均值,令k=k+1,若满足k≤fmax,则重复步骤(3-1-2)。同理可以计算出灰度值大于k的像素的灰度平均值dH[k];
C+=H[k] (11)
S+=H[k]·k (12)
3-1-3)令nOldT=nT,计算新的阈值如果满足nOldT≠nT,则重复步骤3-1-3),否则迭代结束。
进一步地,所述步骤4)中子图像的十字交叉线中心点的确定方法如下:
若f(x,y)为R4iC1的骨架图像,计算骨架图像中骨架点的横坐标统计直方图和纵坐标统计直方图,若(k,l)属于骨架点横坐标统计直方图,则表示横坐标为k的骨架点个数为l个,若(u,v)属于骨架点纵坐标统计直方图,则表示纵坐标为u的骨架点的个数为v个,分别统计骨架点的横坐标统计直方图和纵坐标统计直方图的波峰,若它们的峰值点分别为(k0,l0)和(u0,v0),那么(k0,u0)即为R4iC1的十字交叉线中心点,同理可计算出R4iC2的十字交叉线中心点。
进一步地,由于用于拼接的鱼眼图像是由4个安装位置不同的鱼眼摄像头获取到的,使得拼接后的全景图像亮度变化不自然,这将导致全景拼接图像拼接缝隙明显。因此,步骤4)中鸟瞰图像拼接为一幅全景拼接图像后,需要对两两摄像头公共覆盖区域进行亮度调整,亮度调整的方法如下:
确定两两相邻的组成全景拼接图像的鸟瞰图像Ci、Ck,在鸟瞰图像Ci、Ck中分别确定摄像头公共覆盖的矩形区域子图像IMSri、IMSrk,计算子图像IMSri和IMSrk的平均亮度值mi和mk,确定亮度差值msk=mi-mk,将子图像IMSrk在全景拼接图像中对应的三角形区域记为IMSsrk,IMSsrk由拼接缝隙和图像IMSrk的两条边组成,根据亮度差值msk对子图像IMSsrk亮度进行局部调整,像素点离拼接缝隙越近,要调整的亮度值越大。
本发明提供的第二方案是:
一种全景泊车系统的标定系统,包括以下模块:
摄像头输入模块,根据首次泊车时放置于地面的多个标定布,即在汽车的前后左右的地面上距离车身设定距离分别放置前标定布、后标定布、左标定布和右标定布,保证相邻标定布棋盘格矩形区域相互垂直,且保证标定布位于前后左右鱼眼摄像的可视范围内,根据放置于汽车前后左右四个方向的标定布,利用摄像头获取汽车四周的标定图像信息;
图像畸变校正模块,利用已知的摄像头内参、外参和失真矫正模型对标定图像进行去除失真处理;
鸟瞰变换模块,根据标定图像中棋盘格内角点计算标定图像的单应性变换矩阵,进而进行鸟瞰变换,得到标定图像的鸟瞰图像;
基于所述的自动拼接方法的图像拼接模块,通过对鸟瞰图像中的十字交叉线中心点的确定自动拼接标定图像,得到标定图像的全景拼接图像,对两两鸟瞰图像拼接缝隙处进行局部亮度调整,形成过渡自然无明显拼接缝隙的拼接图像;
图像融合模块,将两两摄像头获取的鸟瞰图像中的公共区域内的互补信息或显著信息融合到一副图像中,去除冗余信息。
进一步地,前标定布、后标定布、左标定布、右标定布上绘制有黑白棋盘格和十字交叉线,前标定布和后标定布中部绘制有黑白棋盘格,且两端部分绘制有黑色的十字交叉线,左标定布和右标定布上绘制有黑白棋盘格,所有标定布上的单个棋盘方格的尺寸均相同,并且涉及的四个十字交叉线的尺寸也相同,标定布上棋盘格和十字交叉线的尺寸与要标定的汽车的长宽尺寸相关,具体地要求在标定布铺好后,能够保证棋盘格区域位于前后左右鱼眼摄像头的可视范围内,同时保证十字交叉线区域在两两相邻的摄像头的视野的覆盖区域内。所述摄像头为鱼眼摄像头。
本发明提供的另一方案是:一种车辆,采用所述的一种全景泊车系统的标定系统,在汽车车身上固定好鱼眼摄像头后,来标定车辆上所使用的全景泊车系统,利用该全景泊车系统实现车辆的辅助泊车。
本发明的有益效果是:
本发明以汽车周围环境的鸟瞰图像为研究对象,实现自动地将这些鸟瞰图像拼接为一副亮度变化自然、无明显拼接缝隙的全景图像。使用本发明能够减少人工拼接的时间、提高全景拼接图像的质量。本发明结合全景辅助泊车产品开发中的实际需求,能够解决全景辅助泊车系统中的关键问题。本发明的成功应用,将有助于推进全景辅助泊车的应用推广,对于缓解我国日益严峻的交通安全形势具有重要的推动作用。
附图说明
图1拼接模板;
图2全景拼接算法流程。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。
首先需要确定鱼眼摄像头的径向畸变系数和切向畸变系数,这里采用手动标定方法,将鱼眼相机模型近似用针孔相机模型表示,采用张正友标定方法确定摄像头参数,具体实施时摄像头标定算法选用OpenCV(open source computer vision)来实现,利用要标定的摄像头拍摄25-30张棋盘格标定板图像,标定板图像太少误差太大,注意拍摄标定板图像的时候不要和成像面平行,而且角度和成像面不能太小,两幅标定板图像也不能平行,否则误差较大。
然后在汽车的前左后右方向固定好四个180°鱼眼摄像头并按规定铺好标定布,注意摄像头的正向朝向,其中标定布上的棋盘格区域放置在汽车的四周,十字交叉线区域放置在两两摄像头覆盖区域内,车前车后各空出30cm。利用鱼眼摄像头获取汽车前左后右方向的标定图像A0、A1、A2和A3,将其记为Ai,其中i=0,1,2,3,根据已经确定的摄像头参数,借助于OpenCV提供的函数计算形变和非形变图像的对应关系,从而确定数据映射表,根据该组数据映射表对图像进行几何变换实现对鱼眼图像Ai的畸变校正,畸变校正的结果为普通透视图像Bi。在透视图像Bi中识别棋盘格内角点,然后根据棋盘格内角点的实际坐标、图像坐标以及摄像头的参数,计算图像的单应性变换矩阵根据确定的单应性变换矩阵Hi将图像Bi进行鸟瞰变换,从而得到鸟瞰图像Ci。
全景拼接算法流程如图2所示,实现步骤描述如下:
(1)根据标定布中的棋盘格和十字交叉线的尺寸和布局,确定与之相对应的拼接模板,拼接模板由5部分组成,如图1所示,中心区域用于显示车体模型图像,将摄像头覆盖矩形区域的对角线设定为两两相邻的鸟瞰图像的拼接缝隙,前方、左方、后方和右方的不规则多边形区域分别用于显示相应方向的鸟瞰图像的子图像。
(2)根据透视图像Bi中已经识别出的棋盘格内角点,能够确定这些内角点组成的矩形区域中的左上、右上、左下和右下四个内角点的图像坐标,将其记为PQTij(xij,yij),其中j=0,1,2,3,利用已知的鸟瞰变换矩阵Hi,将PQTij按照公式(2)进行坐标变换,其中x′ij、y′ij分别是xij、yij坐标变换后对应的坐标值,变换后的内角点坐标对应于鸟瞰变换图像Ci中棋盘格内角点构成的矩形区域的四个顶点位置的坐标,这样能够确定鸟瞰图像Ci中棋盘格内角点矩形区域R1i,将矩形区域R1i的四个顶点坐标记为PPTij(x′ij,y′ij)。
(3)以鸟瞰图像的左上点为旋转中心,将前左后右方向的鸟瞰图像分别逆时针旋转,保证旋转后的鸟瞰图像的棋盘格方向与拼接方向一致。若逆时针旋转角度为Agi度,旋转变换矩阵为根据公式(4)、公式(5)、公式(6)和公式(7)可以确定变换矩阵Mi,借助于OpenCV提供的仿射变换函数可实现鸟瞰图像的旋转操作。根据已经确定的旋转变换矩阵Mi、旋转角度和鸟瞰图像Ci旋转前图像中的棋盘格内角点矩形区域R1i,利用公式(8)能够确定旋转后的鸟瞰图像Ci中的棋盘格内角点矩形区域R2i,将矩形区域R2i的四个顶点坐标记为PTij(x″ij,y″ij)。
mi2=-xim (6)
mi5=-yim (7)
x″ij=mi0x′ij+mi1y′ij+mi2,y″ij=mi3x′ij+mi4y′ij+mi5 (8)
(4)根据确定的鸟瞰图像Ci中的棋盘格内角点矩形区域R2i,可知图像Ci中单位棋盘方格的图像尺寸其中xri0、xri1分别是矩形区域R2i的横坐标的最小值和最大值、bwi是R2i中的水平方向棋盘格格子数,若预先设定的单位棋盘方格的归一化尺寸u=12,那么可以确定图像Ci的缩放因子根据si将图像Ci进行缩放处理,这样处理后所有鸟瞰图像的单位棋盘方格尺寸都是一致的,即为对鸟瞰图像进行了尺寸归一化处理。此外根据缩放因子si和棋盘格内角点矩形区域R2i,能够确定在尺寸归一化处理后的鸟瞰图像Ci中的棋盘格内角点矩形区域R3i。
(5)根据图像Ci中的棋盘格内角点矩形区域R3i,借助标定布的上棋盘格和十字交叉线的尺寸和布局,能够确定图像Ci中的十字交叉线公共区域子图像R4iC1、R4iC2。将R4iC1、R4iC2分别作为感兴趣区域图像做如下的处理:首先计算感兴趣区域图像的自适应阈值,根据该阈值将感兴趣区域进行二值化处理,然后计算二值化处理后图像的市街区距离,最后利用感兴趣区域图像的市街区距离提取图像的骨架。
所述的自适应阈值计算方法描述如下:
步骤1:计算感兴趣区域图像的灰度直方图H[k](其中k=0,1,2,…,255),H[k]表示灰度值为k的像素点有H[k]个,根据H[k]可以得到图像的最大灰度值fmax和最小灰度值fmin,若C表示图像中灰度值小于等于k的像素点个数,S表示图像中灰度值小于等于k的像素点的灰度值的和,令初始阈值nT=(fmax+fmin)/2,k=fmin,C=0,S=0;
步骤2:根据公式(9)、公式(10)和公式(11)计算dL[k],这样计算的dL[k]表示图像中灰度值小于等于k的像素的灰度平均值,令k=k+1,若满足k≤fmax,则重复步骤2。同理可以计算出灰度值大于k的像素的灰度平均值dH[k];
C+=H[k] (9)
S+=H[k]·k (10)
步骤3:令nOldT=nT,计算新的阈值如果满足nOldT≠nT,则重复步骤3,否则迭代结束。
所述的将二值图像进行市街区距离变换方法如下。
步骤1:如果当前处理的像素是目标,则将当前像素值和其四邻域像素值相比较,如果它们的像素值相同,则将当前处理的像素的市街区距离值加1,否则重复步骤1对下一个像素做处理,直到处理完感兴趣区域内的所有像素。
步骤2:如果当前像素是目标,则将当前像素的市街区距离和其四邻域像素的市街区距离相比较,如果它们的市街区距离一样,则标记该像素,否则重复步骤2对下一个像素做处理,直到处理完感兴趣区域内的所有像素。当将二值图像中所有像素都处理完后,检查是否有被标记的像素,如果有被标记的像素,则将所有被标记的像素的市街区距离值加1,重复步骤2。
步骤3:对二值图像中的像素依次做如下处理,如果当前像素的市街区距离比其四邻域市街区距离值都高,则将当前像素作为骨架,否则作为背景像素。
(6)分别根据图像Ci的十字交叉线公共区域子图像R4iC1、R4iC2的骨架图像确定十字交叉线中心点。若R4iC1的骨架图像为f(x,y),宽度和高度分别为w0和h0,骨架图像的横坐标x统计直方图为HX[kx]和纵坐标y统计直方图为HY[ky],其中0≤kx<w0,0≤ky<h0,令m=0、n=0,获取骨架图像f(x,y)的十字交叉线中心点具体方法描述如下:
步骤1:若f(m,n)=1,则HX[m]=HX[m]+1、HY[n]=HY[n]+1,令m=m+1,若m<w0,则重复步骤1。
步骤2:令n=n+1,若n<h0,则令m=0,同时跳转到步骤1。
步骤3:令m=0、xmax=0,若HX[m]>xmax,则xmax=HX[m],令m=m+1,若m<w0,则重复步骤3。
步骤4:令n=0、ymax=0,若HY[n]>ymax,则ymax=HY[n],令n=n+1,若n<h0,则重复步骤4。否则可知(xmax,ymax)即为图像R4iC1的十字交叉线中心点。
(7)当识别出前、后、左、右4个方向的鸟瞰图像中的所有十字交叉线中心点后,就可以将这4个方向的鸟瞰图像拼接为一副完整的汽车周围环境的全景俯视图像。
(8)由于采用上述拼接方法得到的全景拼接图像是由四个曝光度不同的摄像头获取到的,使得全景拼接后的图像往往亮度变化不均衡、存在较为明显的拼接缝隙,为此需要进行亮度调整处理。全景拼接图像的亮度调整实现步骤可描述为:
设Ci、Ck为两幅相邻的鸟瞰图像,其中k=(i+1)mod4,若Ci、Ck在全景拼接图像中所共同包含的公共矩形区域分别为IMSri、IMSrk,分别计算子图像IMSri和IMSrk的平均亮度mi和mk,令msk=mi-mk,将子图像IMSrk在全景拼接图像中对应的三角形区域记为IMSsrk,IMSsrk由拼接缝隙和图像IMSrk的两条边组成,若像素点p在图像IMSsrk内,过点p到拼接缝隙的垂直线段记为RQ,其中Q是拼接缝隙上的一点,R是三角形IMSsrk中除拼接缝隙之外的一条边上的一点,计算PQ的长度l1,计算PR的长度l2,根据公式(14)对三角形区域子图像IMSsrk的亮度进行加权调整;
由于受到成像环境的影响,在获取到汽车周围标定布的鸟瞰图像后,按照上述介绍的拼接方法将鸟瞰图像进行拼接后,仍然无法实现拼接部分图像的完全重合,为此还需要对这部分区域图像进行融合处理。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。