发明内容
本发明从相机安装场景出发,提出一种基于成像原理和数据回归建模的图像测距技术,从纵向和横向两个方向进行图像测距。即利用相机成像原理得到纵向距离的计算公式,然后结合车道等宽特性,利用数据回归建模的方法,计算出增益函数和横向距离,以计算出纵向距离。该算法横向和纵向测量误差分别在10.1%和14.5%以内,并且只需要事先测量相机安装高度和车道线宽度,即可对场景中的长度距离进行测量,测量过程方便快捷。
具体来说,本发明采用了以下技术方案:
一种基于成像原理及数据回归模型的图像测距方法,其特征在于,所述方法包括:1)获取车道宽度D;2)基于由实际场景映射的图像建立图像坐标系,其中沿道路方向为x轴,沿垂直方向为y轴;3)确定增益函数y=f(x),其中确定增益的过程包括根据确定在x轴上至少四个点处的增益值,其中ya为点x轴上a点处的增益值,sum(a)为x轴上a点处车道宽度所占的像素数,然后利用拟合函数f(x)=ax3+bx2+cx+d对横坐标x及增益y进行拟合,获得它们之间的函数关系;4)根据步骤3)中确定的增益函数求取待测距离。
优选地,在步骤2)中,确定在x轴上4-10个点处的增益值,然后进行拟合。
在以上方法中,步骤4)求取待测距离的步骤包括:求取横向距离,即车道宽度上点E、F之间的距离,其中该过程包括首先确定图像上与车道宽度上待测点E、F对应的两点e、f所对应的横坐标XA,然后将XA代入增益函数f(x)中,获得该横坐标下的增益f(XA),再获得图像上待测两点纵坐标之差绝对值|ye-yf|,即待测两点之间的像素个数与传感器像素元尺寸的乘积,则对应两点在三维空间中横向距离为DEF=|ye-yf|*f(xA)。
在以上方法中,步骤4)求取待测距离的步骤包括:求取纵向距离,即沿车道长度方向上A、B点之间的距离,该过程包括获取相机高度h,获得A、B点在图像上映射点a、b在图像坐标系x轴上的横坐标,根据步骤3)的增益函数获得该两个点处的增益值N1=f(a)、N2=f(b),再获得图像上待测两点之间的距离|ab|,根据公式计算出纵向距离。
在以上方法中,步骤4)求取待测距离的步骤包括:求取道路上任意两点间的距离,该过程包括根据以上所述的横向测距方法计算该两点在横向上的距离,并根据以上所述的纵向测距方法计算该两点在纵向上的距离,最后根据勾股定理得出该两点之间的实际距离。
优选地,求取任意两点之间的距离的过程还包括首先确定该两点之间的中点,然后再根据以上所述的横向测距方法计算该两点在横向上的距离,并根据以上所述的纵向测距方法计算该两点在纵向上的距离,最后根据勾股定理得出该两点之间的实际距离。
在以上方法中,步骤4)求取待测距离的步骤包括:求取道路上任意两点间的距离,该过程包括首先在图像上分别过该两点映射点作平行于车道和平行于y轴的直线围成四边形,其中平行于y的轴的边代表两点之间的横向距离,平行于车道的边代表纵向距离,然后根据以上所述的横向测距方法计算该两点在横向上的距离,并根据以上所述的纵向测距方法计算该两点在纵向上的距离,最后根据勾股定理得出该两点之间的实际距离。
在一个更优选实施方案中,计算该两点在横向上的距离包括计算四边形上过该两点中任意一点的横向距离,计算该两点在纵向上的距离包括计算四边形上过该两点中任意一点的纵向距离。或者,计算该两点在横向上的距离包括计算四边形上过该两点的两条边的横向距离,计算该两点在纵向上的距离包括计算四边形上过该两点的两条边的纵向距离,然后分别取平均值作为横向距离和纵向距离。
在另一个更优选的实施方案中,计算任意两点的距离的过程还包括,在计算横向距离和纵向距离之前先取该两点之间线段的中点,基于该中点对应的横坐标和该两点的纵坐标计算横向距离,并根据该两点的纵坐标计算纵向距离,然后根据勾股定理计算出实际距离。
或者,在另一个更优选实施方案中,计算任意两点的距离过程还包括,在计算横向距离和纵向距离之前先取该两点之间线段的中点,过该中点分别作平行于车道和y轴的直线分别与四边形的四条边相交形成平行于车道的线段和平行于y轴的线段,其中过该中点的平行于y轴的线段代表该两点之间的横向距离,平行于车道的线段代表该两点之间的纵向距离,然后分别计算该两点在横向上的距离和在纵向上的距离。
有益效果:本发明从相机安装场景出发,提出一种基于成像原理和数据回归建模的图像测距技术,从纵向和横向两个方向进行图像测距。即利用相机成像原理得到纵向距离的计算公式,然后结合车道等宽特性,利用数据回归建模的方法,计算出增益函数和横向距离,以计算出纵向距离。该算法横向和纵向测量误差分别在10.1%和14.5%以内,并且只需要事先测量相机安装高度和车道线宽度,即可对场景中的长度距离进行测量,测量过程方便快捷。
具体实施方式
目前图像测距算法通常需要事先测量多个物理量,或者进行复杂标定,操作不便,并且在交通现场进行复杂的测量带来的安全隐患大。本发明的目的就是为了解决上述的问题。
本发明从相机安装场景出发,提出一种基于成像原理和数据回归建模的图像测距技术,从纵向和横向两个方向进行图像测距。即利用相机成像原理得到纵向距离的计算公式,然后结合车道等宽特性,利用数据回归建模的方法,计算出增益函数和横向距离,以计算出纵向距离。该算法横向和纵向测量误差分别在10.1%和14.5%以内,并且只需要事先测量相机安装高度和车道线宽度,即可对场景中的长度距离进行测量,测量过程方便快捷。
本发明的基于成像原理及数据回归建模的图像测距方法,只需要已知相机安装高度及车道宽度,即可对实际场景中的横向距离和纵向距离进行测量。参见图1和图2,分别示出了相机安装场景及相机成像中所建立的坐标系。
根据本发明的基于成像原理及数据回归建模的图像测距方法,对实际场景中待测两点间距离的测定步骤如下:
(1)针对由实际场景映射的图像建立图像坐标系(沿道路方向为x轴,沿垂直方向为y轴,但应了解此仅为示例明确说明,也可以反过来,沿道路方向为y轴,沿垂直方向为x轴);
(2)根据横向成像方法,利用车道等宽线进行数据回归建模,得到增益函数和横向距离;
(3)根据相机安装高度、横向成像方法及纵向成像方法,即可得到纵向距离。
下面将详细介绍以上所述的横向距离和纵向距离的测算方法。
1、基于数据回归模型的横向测距
(1)横向测距即测量垂直于道路方向的距离,即y轴方向的距离。在横向上的实际距离和图像上的距离成正比,因此只需要求解在不同x坐标下实际距离和图像距离的比值即可,即寻找一个增益函数
y=f(x)
当x取图像上不同的x坐标值时,y表示在该处单个像素对应的实际宽度距离(单位:cm/像素)。
(2)我们通过对大量交通场景的观察和统计,发现在监控范围内,所有场景的道路宽度或者车道宽度都是相同的,并且随着x坐标的不同,道路宽度或者车道宽度的实际距离并不会发生变化。利用这个特点,通过对车道宽度的一次实际测量,然后统计在某个x坐标处车道宽度所占像素个数,两者相比即为该处的增益值。
其中ya表示点a处的增益值,D为车道宽度,sum(a)为在a点x坐标处车道宽度所占的像素个数。测量多个x坐标与其对应的增益值,并将这些数据进行回归建模(我们使用f(x)=ax3+bx2+cx+d这个模型对x坐标与其对应的增益进行拟合),即可得到增益函数f(x)。
(3)接着,根据横向成像方法即可求得实际横向距离。
参见图3,其中ef表示成像平面的y轴方向,EF表示垂直于路面方向的实际道路(即横向距离),O为光心,A和a分别是EF、ef的中点。
EF两点之间的距离,即横向距离,可以通过以下计算公式得到:
DEF=|ye-yf|*f(xA)
其中|ye-yf|表示图像上这两点在y轴方向的像素个数,f(xA)表示对应的增益函数在A点横坐标处的增益值(单位:cm/像素)。
2、基于成像原理的纵向测距
如图4所示,mn表示成像平面x轴方向,MN表示平行于路面方向的实际道路。a为mn中点,A为a的实际位置;B和C为需要测量的纵向距离,b和c为图像上对应的两点;h为相机安装高度。
(1)根据横向成像方法,使AO/Oa=N1=EF/ef,其中EF、ef分别表示在A点处对应于y轴方向上的实际宽度和图像宽度,N1表示在A点处,单位像素代表的实际距离;同理,对于点B处,存在BO/Ob=N2=E'F'/e'f',其中E'F'、e'f'分别表示在B点处对应于y轴方向上的实际宽度和图像宽度,N2表示在B点处,单位像素代表的实际距离。
(2)过待测点B存在一点D,使A、D、O三点在同一直线上,此时ΔODB~ΔOab,得到OD/Oa=DB/ab=OB/ob;假设相机所在位置O与实际场景A点所成直线,与x轴的夹角为θ,且O距离路面的垂直高度为h,则在ΔADB中,存在如下关系:tanθ=BD/AD,sinθ=h/AO,由勾股定理可得,
通过计算化简,可以得到:
其中ab为实际距离AB在图像传感器CCD上所成的像,通过ab像素个数以及CCD的像元尺寸即可计算得到|ab|。N1、N2可以通过将A、B两点的横坐标代入增益函数f(x)获得。
过A点存在一点D',使C、D'、O三点在同一直线上,同理可以得到AC。
(3)A点为图像上a点在x轴中点处对应的实际位置,因此,对于沿道路方向的任意距离BC来说,通过图像上bc两点的x坐标相对于a点x坐标来进行计算,如下式:
3、对于道路上任意两点间的测距
对于道路上任意两点间的测距,即两点间的连线既不平行于x轴也不平行于y轴的情况,可以根据如上所述的横向测距方法和纵向测距方法,分别测量了横向和纵向距离后,通过勾股定理计算获得。参见图5,即对于该两点之间的连线,以该连线为对角线,以平行于x轴和y轴的线为边可获得矩形,分别测量横向距离和纵向距离,根据勾股定理即可获得点AB之间的实际距离。反映到图像上,参见图6,分别平行于车道线和y轴过AB两点作直线,得到一个四边形ACBD,根据计算纵向距离的方法计算出AC或BD的距离,再根据计算横向距离的方法计算出AD或BC的距离,然后根据勾股定理即可得到AB之间的实际距离。
但是如前文所述,如图6所示,由于地面上的矩形反映到图像上,由于视角关系,并不是一个与地面上的矩形相对应的矩形,而是一个不规则的四边形,而对应的两条边的误差较大。因此在一个实施方案中,优选分别计算出AC和BD的距离并取平均值作为纵向距离,并分别计算出AD和BC的距离并取平均值作为横向距离。在另一个优选实施方案中,为简化计算,取AB连线中点O,中点O在坐标系上的值为xo,在图像上,y轴上AB两点对应的值分别为ya和yb,则如下计算AB之间的横向距离
DAB=|ya-yb|*f(x0),
并且根据图像上a、b横坐标之差绝对值(即a、b之间像素个数)及像元尺寸,可以得到图像距离|ab|,通过公式
计算得到a,b对应纵向距离。将以上获得的横向距离和纵向距离通过勾股定理即可获得AB之间的实际距离。
下面以具体实施例对本发明做进一步详细说明。
本发明的测距方法如下:
(1)获取相机高度h及车道宽度D
(2)根据需要,若要获得交通监控场景中的横向距离信息,则进行横向测距;若要获得交通监控场景中的纵向距离信息,则进行纵向测距。
(3)假设需要横向距离信息,则进行横向测距:
①根据车道宽度D,并统计在某个x1坐标处车道宽度所占像素个数n1,获得该x坐标下的增益y1。
②重复①中操作,获得9个不同x2~x10坐标车道宽度所占像素个数n2~n10,获得9个不同x坐标下的增益y2~y10。
③利用拟合函数f(x)=ax3+bx2+cx+d对横坐标x及增益y进行拟合,获得它们之间的函数关系。
④确定待测两点中点A,其横坐标为XA,将XA代入增益函数f(x)中,获得该横坐标下的增益f(XA)。
⑤获得图像上待测两点纵坐标之差绝对值|ye-yf|,则对应两点在三维空间中横向距离为DEF=|ye-yf|*f(xA)。
(4)假设需要纵向距离信息,则进行纵向测距:
①确定图像上待测两点为bc,沿bc方向(与x轴平行),取图像横轴中点a。
②将横坐标a,b,c分别代入增益函数f(x)中,获得这三个横坐标下的增益:
N1=f(a)、N2=f(b)、N3=f(c)
③获取图像传感器CCD的像元尺寸,图像上a、b横坐标之差绝对值(即a、b之间像素个数)及图像上a、c横坐标之差绝对值。像元尺寸乘以像素个数,可以得到图像距离|ab|、|ac|。
④通过公式
计算得到a,b对应实际距离,同理可以得到a,c对应实际距离AC。
⑤判断a是否在bc内,若是,则实际距离BC=AB+AC;否则BC=|AB-AC|。
上面结合附图和具体实施例对本发明的实施方式作了详细的说明,但是本发明不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。