谭广通,程国民,李长春
(中国人民解放军 91245部队,辽宁 葫芦岛 125000)
计算机视觉测量方法是近20年逐步发展并应用于测量领域的,计算机视觉测量主要分为多目视觉、双目视觉及单目视觉。其中双目和多目测量需要利用两个或者多个视觉传感器来完成测量任务。这两种测量方法对相机的位置布置、视场大小、传感器尺寸、相机相对姿态等要求较高,同时存在视场范围小、测量距离短等缺点,并且在实际应用中系统结构复杂,数据处理量大。因此,在很多测量领域被结构简单、速度快、稳定性好的单目视觉测量系统所代替。
单目视觉测量是指仅利用一台视觉传感器采集图像,对物体的几何尺寸及物体在空间的位置、姿态等进行测量。单目视觉测量方法具有系统结构简单、标定步骤少、视场范围广等优点。
几何相似法属于单目视觉测量方法中的一种,基于几何相似法的单相机测量方法是在几何相似法的基础上进行了改进,无需按照几何相似法要求相机镜头光轴垂直于测量平面,布站方法更加简单。通过基于几何相似法的单相机测量方法能够对弹丸类快速目标初速度进行测量,经过后期的图像处理和计算,给出有效的测量结果。
目前,弹丸类目标速度测量方法一般分为两种,一种是利用多普勒测速仪,一种是利用截取装置获得飞行距离和时间,从而计算得出速度。第一种方法对系统要求高,导致造价昂贵;第二种方法系统相对要求简单,适用性较高。但二者均只能计算测量出速度,不能得到目标的飞行状态图像。随着高速相机拍摄能力的发展,计算机视觉测量领域也突飞猛进,提出一种单相机弹丸类高速目标的初速度的测量方法,不仅可以得到弹丸类高速目标的出筒时刻速度,还能够采集到目标飞行图像。
为了重建运动目标的运动轨迹,获得目标的三维空间位置信息,单目视觉测量系统使用一台摄像机采集目标图像,在获得的图像序列中,利用景物中的一些自然或者人造的特征,应用预先设计好的算法解算并输出运动目标的相关信息。单目视觉测量是计算机视觉研究的一个重要内容,涉及计算机图像处理、模式识别、人工智能及自动控制等诸多学科。单目视觉测量结构简单、标定步骤少等优点,同时还避免了立体视觉中的视场小、立体匹配难的不足,因而近年来这方面的研究比较活跃。利用单目视觉来对运动目标进行测量的方法有很多,主要可以概括为几何相似法、几何光学法、特征靶标测量法、激光测距仪辅助测量法等。其中几何相似法相比于其它测量方法具有测量场景布置简单、计算快捷、已知条件需求少等优点,在单目视觉测量领域得到广泛应用。
单目视觉测量系统所拍摄图像中的每个像素点与实际三维环境中的物体对应位置是与相机成像系统存在某种几何关系,这种几何关系主要与相机的探测器尺寸、分辨率、镜头焦距、光轴位置、镜头畸变等参数相关,这些参数称为相机参数,参数的准确性决定了几何计算模型的计算结果精确度。相机参数一般来源于实验计算,这个过程称为相机标定。
相机标定分为内部参数标定和外部参数标定,相机标定一般是对相机镜头的标定。内部参数简称内参,外部参数简称外参。内参主要包括镜头的像素焦距、主点位置、镜头径向畸变、镜头切向畸变等,外参主要为相机在空间坐标系中的位置转换关系,包含了角度转换矩阵和位置转换矩阵。目标物体的测量须通过相机内参和外参建立几何计算模型。因此,在单目视觉测量系统中,必须对相机系统进行标定,得到相机标定参数。
相机参数标定算法可分为线性标定算法和非线性标定算法。由于线性标定只考虑线性成像模型(针孔模型),不考虑像差,通过线性变换直接求解。线性模型不能精准地描述相机的成像几何关系,因而精度较差,在测量领域一般不予采用。非线性标定利用线性变换方法并且考虑成像系统的畸变因素得到相机参数的精确值。由于测量弹丸出筒初速度对图像判读要求较高,因此需对相机镜头进行非线性标定。
镜头畸变是指光学镜头在成像过程中造成所固有的成像失真情况总称,使得整个光学系统在整个视场范围内成像与实物之间的关系不能严格满足小孔成像原理。镜头畸变主要包括径向畸变和切向畸变,径向畸变表现为桶形畸变和枕型畸变,切向畸变表现为角度方向上的变化。在机器视觉检测中,尤其是高精度机器视觉检测中,镜头畸变则是影响精度的一个主要因素。因此,在现行使用的视觉检测系统中,加入了对相机镜头的畸变校正,大大降低了镜头畸变对图像的影响,从而提高测量精度。镜头畸变校正主要通过非线性标定计算畸变参数,畸变校正方法主要有Tsai的基于径向畸变的RAC两步标定算法,Zhang提出的基于2D标定板的相机镜头标定。通过对镜头的标定,能够给出相机内参矩阵和畸变参数矩阵,相机内参包含像素焦距、主点坐标、坐标轴倾斜参数和其他系统误差参数,畸变参数矩阵包含镜头径向畸变系数和切向畸变系数。
根据几何相似法测量要求,在测量拍摄图像时需要将相机镜头光轴(相机拍摄方向)垂直于测量平面,再根据视场中的标志物体实际大小、标志物体图像成像尺寸、测量目标成像尺寸进行计算测量,得到测量目标实际尺寸或其他测量数据。几何相似法因为需将相机拍摄方向垂直于测量平面从而在实际应用中限制了相机布站,对于某些无法将相机拍摄方向垂直于测量平面的场景,几何相似法将无法使用。为了更加方便测量,减少测量方法场景限制,在几何相似法的基础上进行了一定的改进,改进之后无需保证相机拍摄方向垂直测量平面,极大降低了相机布置难度,提高了测量方法场景适应能力。
改进后的测量方法无需将相机拍摄方向垂直于测量平面,只需将相机放置于测量平面一侧,相机视场覆盖标志物和测量目标,标定好位置关系参数和相机及镜头参数供后续判读计算使用。位置关系参数包括相机拍摄方向与测量平面之间的夹角、标志物的实际物理尺寸、相机拍摄仰角,相机及镜头参数包括相机分辨率、像元尺寸、焦距、主点坐标、镜头畸变系数等。
以测量某型火炮弹丸出筒初速度为例,对基于几何相似法的单目相机测速方法进行布站,将相机布置于火炮侧方,相机视场覆盖火炮发射管和发射方向弹丸飞行部分轨迹,测速弹丸飞行速度只需设定标志物为火炮发射管。布站方案需要的已知条件包括:相机拍摄方向与弹丸飞行方向(即射向)水平投影方向夹角α
,相机仰角E
,炮管长度L
。相机布置方案如图1所示。图1 相机布置方案
具体测量方法如下。
1)首先计算弹丸飞行轨迹在经过相机光心水平面上的投影距离公式:
试验前通过全站仪标定位置关系,得到相机拍摄仰角E
,火炮发射仰角e
,使用量具测量标记炮管长度为L
。相机及镜头参数试验前后标定均可,已知的必要参数包括机分辨率、像元尺寸、焦距、主点坐标、镜头畸变系数。经过相机光心建立一个平面S
(水平面),见图2。弹丸在空中飞行只受重力和空气阻力作用,在发射初始段短时间内可以视为匀速直线运动,因此弹丸飞行轨迹在水平面投影为一直线。如图,A
点为炮管根部位置在S
平面内投影,M
为炮管口位置在S
平面内投影,B
为弹丸出筒后空间某一点位置在S
平面内投影,AB
为炮管及弹丸飞行轨迹在该平面上的投影,ab
为炮管及弹丸在相机探测器上成像轨迹在该平面上的投影。O
为相机光心,AM
为标记炮管在该平面上的投影,B
点为某时刻弹丸在该平面上的投影,α
为弹丸射向与相机拍摄方向在水平面S
投影的夹角,am
为炮管在相机探测器上成像在该平面上的投影,b
为弹丸成像在该平面投影。图2 平面坐标系计算
在S
平面内,以光心O
为原点,光轴在S
平面上的投影为y
轴,过光心O
在该平面内与y
轴垂直的线为x
轴,如图2建立平面直角坐标系。已知:发射仰角为e
,则炮管投影长度为L
*cose,拍摄方向与射向在平面S
投影夹角为α
,ab
与光心O
点间距离为k
,a
点坐标为(x
,k
),m
坐标(x
,k
),b
坐标(x
,k
)。计算得出:
(1)
公式(1)中:|MB
|为弹丸出筒至B
点的距离;L
为标记的炮管长度;e
为火炮发射仰角;x
为相机探测器上炮管根部成像点在S
平面上的投影点坐标;x
为相机探测器上炮管口成像点在S
平面上的投影点坐标;x
为相机探测器上弹丸成像点在S
平面上的投影点坐标;k
为S
平面内ab
与光心O
点间距离;α
为拍摄方向与射向在平面S
投影夹角。2)根据探测器所在平面成像位置对公式进一步推导:
平面P
为相机探测器所在平面,相机拍摄仰角为E
时(即∠qOo
=E
,平面P
与平面S
相交于直线ab
,既a
、m
、q
、b
、O
所在平面为S
平面,Oq
为光轴Oo
所在直线在S
平面内投影),成像系统关系如图3所示,O
为相机镜头光心,o
为相机探测器成像主点位置(需通过相机标定得到,一般在图像中心点附近),其中Oo
距离为成像的像距,在平面P
中,a
m
为炮管成像,弹丸飞行轨迹成像为a
b
。在P
平面中,以o
为原点,水平为x
轴,垂直x
轴方向为y
轴,在平面P
内建立平面直角坐标系,设a
、m
、b
点坐标分别为a
(x
,y
)、m
(x
,y
)、b
(x
,y
)。图3 相机仰角为E时成像系统与光轴关系
根据平面P
内的已知条件计算,对公式(1)进一步推导计算得出:(2)
公式(2)中:f
为相机焦距(需通过相机标定得到);E
为相机拍摄仰角;x
为a
点横坐标;x
为m
点横坐标;x
为b
点横坐标。3)计算弹丸实际飞行距离:
如图4,已知弹丸实际飞行轨迹为A
B
,OQ
为光轴方向(相机拍摄方向),C
、A
、M
、Z
、B
、V
、O
点所在平面为水平面S
,直线CV
为水平面S
与弹丸飞行轨迹所在铅锤面相交直线,OZ
为光轴OQ
在水平面S
内的投影,AB
为弹丸飞行轨迹在水平面S
平面投影,AB
与OZ
交与Z
点,弹丸射向与拍摄方向在S
平面内投影夹角为α
,即∠AZO
=α
,弹丸发射仰角为e
,即∠B
CB
=e
。图4 相机仰角为E时弹丸轨迹与光轴关系
根据图4已知条件以及公式(2)进行计算,弹丸实际飞行距离M
B
为:(3)
由公式(3)可知,根据标记的炮管长度L
、弹丸射向与拍摄方向在水平面S
平面内投影夹角α
、相机焦距f
、相机拍摄仰角E
、炮管根部成像横坐标x
、炮口成像横坐标x
以及弹丸成像横坐标x
,可以计算出所拍摄任意一帧火炮弹丸与炮口间的距离。由此可通过判读炮管出口处某一帧图像弹丸B
与任意其他帧图像弹丸B
点位置,分别计算弹丸与炮口间的距离M
B
及M
B
。为了进一步验证方法的可行性,利用高速相机结合某型火炮试验进行了试验验证。根据测量方法要求进行布站,单台高速摄像机布置于火炮发射右侧方,相机与火炮位置关系见图5。
图5 火炮测量布站方案
如图5所示,相机位于C
点,拍摄方向与射向在水平面投影夹角为α
。使用全站仪进行标定,α
=65°,相机拍摄仰角E
=1.6°。相机参数:
分辨率:1024×1024;
灰度等级:8 bit;
工作频率:500 fps;
焦距:29 mm;
像元尺寸:12 μm。
为了便于后续判读计算,在火炮发射管上做标记,将火炮发射管作为参考标志物。布站时,需将炮管放置在相机拍摄视场内。将相机放置在离弹丸飞行方向右侧方约40米处,采用固定拍摄方法。
在得到拍摄图像后,需对相机镜头内参数进行标定,内参数主要包括镜头的像素焦距、主点坐标、镜头畸变系数等,已知相机像元尺寸可反算出相机镜头焦距值。相机镜头在小焦距宽视场情况下畸变较大,若不进行畸变校正,则在测量应用上会带来较大测量误差,因此需对采集的图像进行畸变校正之后再进行判读,降低判读误差。
采用2D棋盘格标定板对相机镜头进行标定,2D棋盘格标定方法简单快捷并且技术成熟,在相机镜头标定中应用广泛。
在Matlab2014以上版本,使用棋盘格进行相机标定已经集成为内部工具箱,可以直接使用,且方法简单。这里以Matlab2019版本为例,进行相机标定,标定方法如下。
1)选用专用相机黑白棋盘格标定板,规格为22×14,50 mm。黑白棋盘格标定板如图6所示。
图6 黑白棋盘格标定板
2)用相机从不同角度对标定板进行图像采集,采集数量一般多于9张,图像数量越多标定精度越高。
3)如图7所示,程序完成标定后,在右侧窗口显示单张图像的重投影误差,并显示相对于靶板在空间中的位置。如图8所示,在Matlab中可查看保存的相机标定参数。包括相机像素焦距、主点坐标、镜头畸变系数、外参数旋转和平移矩阵等。
图7 Matlab标定程序
图8 相机标定结果
4)标定结果解释:
图8中PrincipalPoints为主点坐标,即光轴与相机探测器交点位置坐标。RadialDistortion为径向畸变系数,包括k
、k
、k
。TangentialDistortion为切向畸变系数,包括p
、p
。可以根据径向畸变系数k
、k
、k
和切向畸变系数p
、p
对图像进行畸变矫正。Matlab提供了去畸变语句undistortImage,可对原始图像进行畸变校正,得到精确图像,靶板的畸变校正图像对比如图9。图9 畸变校正前后对比图像(左为校正前图像,右为校正后图像)
通过Matlab计算可以得到镜头的内参数,供后续判读计算。根据所标定的畸变参数对试验图像进行畸变校正,再进行判读。
选取部分火炮发射管作为参考标志物,标记长度经测量为L
=3 935 mm,根据图像判读的点位像素值、发射管长度L
、相机镜头焦距f
、像元尺寸、拍摄方向与发射方向夹角α
、两帧图像之间时间间隔t
,利用基于几何相似法的弹丸类目标测量方法,可以算出炮弹飞行速度v
。将判读的像素坐标、标志物长度以及相机的关键参数、角度关系等数据代入公式(3)中进行计算,高速相机拍摄帧频为500 Hz,为方便计算,分别计算第一帧和第十一帧弹丸位置,算出初速度。试验共发射5枚弹丸,最后测量数据处理结果见表1。
该测量方法在测量弹丸类目标时,因为目标会受空气阻力以及重力加速度的影响,目标不是匀速直线运动,并且在后期的图像数据处理过程中会引入一些人为操作的误差。综合各种情况,主要的误差来源有空气阻力、重力加速度、像距、判读、镜头标定、角度标定以及时间精度带来的误差。
在试验任务中,采用的相机拍摄频率为500 fps,测量10帧间隔图像,弹丸飞行时间为20 ms,根据空气阻力公式(F
为空气阻力;C
为空气阻力系数;ρ
为空气密度;S
为物体迎风面积;v
为物体与空气相对速度),计算得出空气阻力造成的误差影响在1 m/s左右,对精度影响为0.01%。重力加速度在水平方向上对速度没有影响,重力加速度一般取g=9.8 m/s,根据加速度公式可得,在垂直方向上20 ms将会产生0.2 m/s的速度差,对弹丸初速度影响可以忽略。
公式中的焦距f
实为像距,与相机焦距f
值存在一定的误差。相机焦距经过相机标定得到为29 mm,物距为相机与目标之间的距离大于40 m,根据透镜成像公式(f
为相机焦距,u
为物距,v
为像距),可以计算得出像距小于29.021 mm,给计算结果带来的误差小于0.07%,该误差可以后期根据目标测量位置进行修正,像距带来的误差在修正后可以基本消除。表1 测量结果
判读图像内容包括标志物和弹丸,判读图像所使用软件可以达到亚像素判读,判读误差一般取0.5像素。对于标志物炮管,0.5像素带来的速度测量误差为0.4%。对于弹丸的位置判读,飞行方向上0.5像素带来的速度测量误差为0.2%。
镜头标定误差主要为镜头焦距标定,误差一般在0.1 mm以内,带来的速度测量误差为0.05%。
角度标定主要为弹丸射向和拍摄方向之见的夹角,标定误差小于0.1°,结果误差小于0.06%。
时间精度取决于相机同步精度和相机外接时码钟授时精度,目前高速相机时间同步精度以及时码钟授时精度均优于1 μs,时间精度带来的误差小于0.001%,可以忽略不计。
综合上述误差来源,对测量误差影响较大的主要为判读误差,其中标志物判读误差大于弹丸判读误差。因此,为了提高测量精度应在试验之前,提前对标志物进行标记处理,提高标志物成像质量,另外可以选择更高分辨率的相机,减小判读误差。
高速弹丸类目标的可视化测量与高速相机密切相关,随着高速相机性能的发展,高速可视化测量领域也同步快速发展,着眼弹丸类快速目标的可视化测量,在几何相似法的基础上研究一种单目相机弹丸类目标初速度测量方法,并根据该测量方法进行实际测量试验,得到测量图像数据。采用Matlab镜头参数标定程序计算得出镜头的内参数,并对高速相机采集的图像进行畸变校正,输出满足判读要求的图像,应用基于几何相似法的单目相机测量原理计算得到测量结果,测量结果误差在1%以内,同时对试验的结果进行了误差分析,验证了采用单相机进行弹丸类出筒初速度测量方法可行性。
该方法简化了几何相似法测量原理中相机布置的限制要求,使得单目视觉测量更加灵活方便,增强了单相机测量能力,丰富了单目视觉测量领域的内容。随着超高拍摄帧频、高像素分辨率相机的发展,单目视觉测量精度将会越来越高,单目视觉测量应用也会越来越广泛。