《武汉工程大学学报》  2016年4期 386-393   出版日期:2016-08-28   ISSN:1674-2869   CN:42-1779/TQ
双目实时目标三维测量实现方法的研究


1 引 言双目立体视觉的目标测距技术由于其在实施测量方法过程中具有效率高、精度合适、系统结构简单、成本低等优点而被广泛研究与应用. 它是基于视差原理,利用成像设备从不同的位置获取被测物体的两幅图像,通过各种匹配算法来确定两幅图像对应点间的位置偏差,进而求取物体三维几何信息的方法. 其中,匹配算法是实现双目立体视觉测距技术的关键[1-3]. 此类算法大致可分为基于区域的立体匹配算法、基于特征的立体匹配算法和基于相位的立体匹配算法三大类. 但这三类方法常常是因为计算量大、操作过于复杂等问题致使实时效果较差. 事实上,只需要对目标小区域内操作来确定目标匹配点就可以计算目标三维信息进而达到较好的实时效果,因此,本文提出一种在视图窗口内进行目标点匹配的方法,若误差最小即可认为是一对强匹配点. 2 摄像机成像原理2.1 摄像机模型通常把由两个光轴平行且内部参数一致的相机组成的双目视觉模型称之为标准双目视觉模型[4],如图1所示. 图1展示了空间实物点P(x,y,z)在两个透视平面上的投影点为P1(x1,y1)和P2(x2,y2). 由相似三角形得如下基本公式:d=x1-x2 (1)透视平面中的图像平面坐标y1=y2=Y,由空间坐标与摄像头成像原理得空间任意点P(x,y,z)坐标公式:[x1=fxzx2=fy-dzY=fyz] (2)其中:d为两摄像头视差[5];f为焦距;z为空间距离;[Δx]是两摄像头的光心距. 标准双目视觉模型中只要知道摄像机的内部参数及光心距,根据左右摄像机的视差就可以计算出空间任意点的坐标. 2.2 图像坐标系和世界坐标系与摄像机坐标系在二维平面图像上定义直角坐标系uov,坐标(u,v)代表该图像在数组中的行数与列数[6]. 坐标(u,v)是以像数为基本单位,这里需要再定义一个图像坐标系xo′y,如图2所示,o′是图像坐标系的原点.假设二维平面图像坐标(u,v)的每一个像素在x和y方向的尺寸大小分别为dx和dy,则与图像坐标建立的关系为: [u=xdx+u0v=ydy+v0] (3)用齐次坐标的矩阵方式表示式(3),以便后边的推导. [uv1=1/dx 0 u0 0 1/dy v0 0 0 1xy1] (4)摄像机几何成像原理图如图3所示,o是摄像机光心,oo′的距离是焦距f,Zc是光轴,与图像平面垂直. 点P([Xc],[Yc],[Zc])是摄像机坐标外一点,P′是P在图像坐标上的投影. 摄像机的摆放位置没有固定,可以随意扭曲. 这里必须需要选取一个基准坐标系来描述摄像机的相对位置,进而可以描述环境中的任何物体的位置,该坐标系称为世界坐标系. 它由[Xw],[Yw],[Zw]轴组成. 摄像机坐标系与世界坐标系之间的关系可以用旋转矩阵R与平移向量T来描述[7]. 用摄像机齐次坐标([Xc],[Yc],[Zc])T与世界坐标的齐次坐标([Xc],[Yc],[Zc],1)T建立如下关系:[XcYcZc1=RT01XwYwZw1] (5)图3中的P点通过图像坐标时认为是针孔原理,所以在空间中的任何一点P与光心的连线在图像坐标系xo′y平面上的交点即是空间点在图像坐标上的投影点. 图像坐标系上的投影点称为透视投影点. 根据图2和图3几何线性关系,存在如下比例式:[x=fxczc] (6)[y=fyczc] (7)将式(6)和式(7)用齐次坐标与矩阵表示为:[Zc=xy1=f0000f000010XcYcZc1] (8)将式(5)代入式(8)后再代入式(4)可以得到摄像机坐标([Xc],[Yc],[Zc])与二维平面图像坐标(u,v)之间的对应关系:[Zc=uv1=1/dx 0 u0 0 1/dy v0 0 0 1f0000f000010RT01XwYwZw1] (9)[Zc=uv1=fx0u000fyv000010RT01XwYwZw1=ABXwYwZw1=MXwYwZw1] (10)其中[fx=fdx],[fy=fdy]. [M]是3×4矩阵,被称为投影矩阵. [A]为摄像机内参数,[B]是摄像机外参数. 3 摄像机标定摄像机标定是为了获取相机参数,保证摄像机参数的精度可以进一步提高三维测量[8]. 3.1 张氏标定法张氏标定法是张正友经典的平面标定方法,该方法大体分为三个步骤. 步骤一:求取摄像机单应性矩阵. 公式(10)变形为:[A[r1r2r3t]XwYw01=A[r1r2t]XwYw1] (11)令[H=A[r1r2t]],[H=[h1h2h3]]即为单应性矩阵. 步骤二:求取摄像机内参数. 求取方法是利用两个约束条件,分别是r1r2=0和[r1]=[r2=1]. 最终可以化解为单应性矩阵和内参数之间的关系:[h1-TA-TA-1h2=0h1-TA-TA-1h1=h2TA-TA-1h2] (12)显然,当已知足够多的单应性矩阵时,内参数矩阵[A]里的未知数就可以被求解. 步骤三:从上面求出来的单应性矩阵和内参数矩阵自然就可以求解出摄像机外参数:[[h1h2h3]=λA[r1r2r3]] (13)其中,[λ=1/A-1h1=1/A-1h2]. 3.2 摄像机标定实验本实验环境是在WindowsXP操作系统下的visual studio 2010开发工具,所用摄像机规格是逐行扫描彩色CCD传感器,分辨率为1 024×768,像素尺寸为4.65 μm×4.65 μm. 标定板所使用其中的角点数是9×6,方格大小为30 mm×30 mm的棋盘格,如图4所示. 采集左、右摄像机标定板图像9对,并分别对其执行单目标定,标定后得到摄像机参数,如表1所示. 3.3 立体校正标准双目视觉模型的左、右图像按摄像机水平光轴严格对准. 严格前向平行对准在实际情况下是不存在的,图5为实际中未校正图像,但是可以通过数学方法计算重投影图像来达到理想视觉模型. 于是采用Bouguet算法[9]对双目视觉进行立体校正. 经过Bouguet算法立体校正后可以获得重投影数据和重投影矩阵. 利用重投影数据就可以重新对采集的图像进行像数点重排列,从而达到前向平行对准,如图6所示. 在获得重投影矩阵以及一对匹配点后即可计算三维坐标. [Qxyd1=XYZw] (14)其中,(x,y)是左图像上的某一点,d是视差. 三维坐标是(X/w,Y/w,Z/w). 立体校正之后得到的重投影矩阵[Q]数据:[Q=100-668.83010-341.050001 760.35000.0110] 4 目标检测采用一种Adaboost的迭代算法[10-11]来实现目标检测. Adaboost算法是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器). 其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值. 将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器融合起来,作为最后的决策分类器. 使用Adaboost分类器可以排除一些不必要的训练数据特征,并将特征点放在关键的训练数据上面. Adaboost目标检测效果好、速度快、鲁棒性好,适合对实时性要求较高的场合应用. 4.1 Adaboost算法流程给定一个训练数据集T={(x1,y1),(x2,y2)…(xN,yN)},其中实例[x?χ],而实例空间[x?Rn],yi属于标记集合{-1,+1},Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器. ?Adaboost的算法流程如下:步骤一:首先,初始化训练数据的权值分布. 每一个训练样本最开始时都被赋予相同的权重为[1N]. [D1=(W11,W12,…,W1N),W1i=1y,i=1,2,…,N] (15)步骤二:进行多轮迭代,用m=1,2,…,m表示迭代的第多少轮. 1)使用具有权值分布Dm的训练数据集学习,得到基本分类器:[Gm(x):x→{-1,+1}] (16)2)计算[Gm(x)]在训练数据集上的分类误差率[em=P(Gm(xi)≠yi)=i=1NWmiI(Gm(xi)≠yi)] (17)由式(16)~(17)可知,[Gm(x)]在训练数据集上的误差率[em]就是被[Gm(x)]误分类样本的权值之和. 3)计算[Gm(x)]的系数,[am]表示[Gm(x)]在最终分类器中的重要程度(目的:得到基本分类器在最终分类器中所占的权重):[am=12log1-emem] (18)由式(18)可知,[em]<=[12]时,[am>=0],且[am]随着[em]的减小而增大,意味着分类误差率越小的基本分类器在最终分类器中的作用越大. 4)更新训练数据集的权值分布(目的:得到样本的新的权值分布),用于下一轮迭代:[Dm+1=(Wm+1,1,Wm+1,2,…,Wm+1,N)Wm+1,i=Wmizmexp(-amyiGm(xi)) ] (19)[i=1,2,…,N] 使得被基本分类器[Gm(x)]误分类样本的权值增大,而被正确分类样本的权值减小. 通过这样的方式,Adaboost方法能聚焦于那些较难分的样本上. 其中,[zm]是规范化因子,使得[Dm+1]成为一个概率分布:[zm=i=1NWmiexp(-amyiGm(xi))] (20)步骤三:组合各个弱分类器[f(x)=m=1MamGm(x)] (21)从而得到最终分类器,如下:[G(x)=sign(f(x))=sign(m=1MamGm(x))] (22)4.2 训练行人检测器训练检测器分为3个步骤:a)样本的创建;b)训练分类器;c)利用训练好的分类器进行目标检测. 训练样本分为正例样本和反例样本,其中正例样本是指待检目标样本(本实验是行人),一个样本可以包含多个待检目标,所有的样本图片都被归一化为同样的尺寸大小(本实验为18×44). 将所有正样本存放在一个文件里,文件的每一行包含样本文件名、待检目标个数、待检目标位置以及样本尺寸. 负样本可以来自于任意的图片,但这些图片不能包含目标特征. 负样本由背景描述文件来描述. 背景描述文件是一个文本文件,每一行包含了一个负样本图片的文件名(描述文件的相对路径),该文件可通过手工创建. 训练分类器得到的检测器是一个xml文件,文件是区别于负样本的特征集,该特征集由不同级别构成,级别越高表示检测器越好. 将训练好的检测器应用于真实的环境场景,可以进行实时目标检测,检测结果如图7所示,使用一个方框来表示检测出目标. 5 目标三维测量系统实现5.1 CAEW算法原理CAEW(Calculate the Absolute Error Window)算法是基于窗口小领域内的数据操作,该算法是在左右视图重投影后为如何达到绝对强匹配点对而采取的一种策略. 执行算法步骤分三步:确立目标点、计算匹配点误差和选择匹配点. 5.1.1 确立目标点 目标点的确立是指程序在执行时能够自动选取目标上的某一点,而这一点正是要作为被匹配点. 被匹配点的选取是否合适将很大程度影响到匹配点是否可靠. 图8显示Ga、Gb两个领域,Ga领域表示检测器识别目标后的目标中点的3×3领域大小,Gb领域表示要对Ga领域内进行逐个值操作,每一次操作都如图9所示而进行函数匹配,也就是在允许的最大视差范围内计算匹配点对的误差. 最大视差可由用户设定,它避免了图像整行扫描操作,提高了匹配速度. 5.1.2 计算匹配点误差 计算匹配点误差前需要构建误差函数,CAEW算法服从如下公式:[e=(1-|Cov[fL(x,y)D(fR(x,y)]|D(fL(x,y)D(fR(x,y))))B|fL(x,y)-fR(x,y)|] (23)式(23)可化简为[e=(1-ρ)e] (24)式(23)~ (24)中,[e]是误差值,值越小表示左右视图的Gb领域匹配效果越好;ρ是相关系数;e表示Gb领域内左右视图对应点灰度值的误差累加. Ga领域内的每一个点都会有对应的一个最终误差值,在进行计算匹配点误差的同时也会记录极小误差值的目标点的位置,用于选择匹配点. 若为了能让匹配点的误差值最小化或能达到小于预期误差值,可以进行对Ga领域扩展增大. 但要注意控制好Ga领域大小,因为Ga领域越大,匹配速度越慢,而且过大的Ga领域会使匹配点偏离目标点. 5.1.3 选择匹配点 先对Gb领域进行自适应中值滤波[12]操作,这样做既可以降噪也可以减少图像失真,之后就可以实施图8的操作. 当Ga领域都经过Gb领域方法的操作后可以得到最小的误差匹配点,这一点即默认为强匹配点,用于三维测量. 5.2 CAEW和SURF算法实验SURF(Speeded-Up Robust Feature)算法与SIFT(Scale-invariant feature transform)算法是两个经典匹配算法,文献[13]通过实验对比了它们各自的优缺点,并确定了SURF算法更能满足实时性要求. 与摄像机标定同一实验环境下采集场景视频序列,然后分别用CAEW算法和SURF算法进行目标匹配与三维测量(如图10所示),如此统计前后共100帧的实验结果数据如表2所示. 其中,效果评估由匹配速度和匹配成功且正确帧数决定,计算公式如下:效果评估=[(200-s)+20×N2000+100×20×100%] (25)式(25)中s为匹配速度,N为匹配成功且正确帧数. 在进行CAEW算法和SURF算法匹配前需要先经过图像重投影及检测器检测目标,而重投影耗时约35 ms,检测目标耗时约2 ms. 实验结果显示:CAEW算法的速度远快于SURF算法,而且Gb领域窗口较小时也可以找到匹配点,但在匹配正确率上差于SURF算法. 因为SURF算法是针对于图像全局操作,而CAEW算法是图像局部操作,这样的区别使CAEW算法匹配速度更快,实验数据结果上已经充分体现它的优势. 实验说明了CAEW算法能够应用于实时目标的三维测量当中,具有较强的扩展性与实用性. 5.3 双目实时测距系统经过前面的讨论与实验,将设计出的具体实施方案如图11所示. 1)获取映射表与重投影矩阵系统标定步骤:先进行单目标定得到摄像机内部参数,然后用得到的两台摄像机内部参数,再用摄像机内部参数进行双目标定重投影标定棋盘得到映射表. 2)训练行人检测器调用OpenCV函数训练Haar特征,不断训练提高检测器的检测效果,采集场景视频验证之. 3)获取CAEW特征匹配点设定Gb领域窗口大小和最大可能视差值,用误差公式计算得到强匹配点. 4)计算三维坐标确定目标匹配点后利用投影矩阵计算其三维坐标,对比人为实测距离目标. 调试程序改进. 6 结 语以上针对双目立体视觉的目标三维信息测量研究中经常要解决的目标匹配困难、匹配效率低的现状,提出了一种新算法CAEW来解决上述问题. 其中,对匹配点的选取是基于窗口领域内的信息误差最小化,实验结果说明了它能够快速匹配目标点,对比SURF算法的全局图像处理,CAEW算法的匹配速度有明显优势. 从这一点说明,如果想要提高匹配速度,就需要尽量避免全局图像的处理或减少不必要的图像区域操作.