基于极线约束的红外图像校正研究
2020-08-19于广段紫媛苏培涵
于广,段紫媛,苏培涵
(电子科技大学中山学院机电工程学院,中山528400)
0 引言
红外摄像机标定指的是通过特征点图像二维坐标和特征点空间三维坐标之间的关系求解摄像机的模型参数,现在已经逐渐成为计算机视觉领域中的一个热点研究内容[1]。在工业、医学、航空军事等领域,都发挥着必不可少的作用。例如为了提高打击海上大型战舰的精确度,我国研制出东风系列导弹,并进行反弹道导弹系统的试验。而对于探月工程以及神州系列的研究,我国在太空领域处于领先的地位并为世界做出了杰出的贡献。同时因为这些大型项目的存在,使得摄像机标定技术在实际应用中得到了很大的发展空间[2]。
摄像机标定过程中的一个核心步骤是角点检测,在对物理学,图像处理学进行全面研究后,麻省理工大学的教授在世纪年代初第一次提出了比较完整的视觉系统框架。如图1 所示,通过此框图,可知道如何提取图像特征点的原理[3]。
图1 Marr框架的视觉三阶段
不同于其他的图像特征点,角点有两个优点,第一个是旋转不变性,另外一个是不会随着光照条件改变而发生变化。与此同时,标定角点不但不会把图像里的灰度信息丢失,还可以明显的减少运算量。因而标定角点既能提升速率,还可以提高标定精度[4]。由此可知,图像匹配的准确性和标定参数的精确性与角点检测性能有着直接的影响。
本文通过对红外摄像机进行标定,并在两红外图像之间增加极线约束关系实现校正处理,为后续的红外立体视觉检测奠定良好基础。
1 红外摄像机标定实验
本文的红外摄像机标定方法是在张正友自标定法的基础上,结合了角点的亚像素级提取。摄像机测量模型选择双目立体视觉测量。实验中,利用两台红外摄像机采集标定板图像(每个红外摄像机取二十幅图像)。标定模板是镂空的棋盘格模板。采集图像时,把标定模板靠近发热管,模板中的镂空区域和非镂空区域会因为温度不同出现明显的色差。转换成灰度图像时,可以取灰度变化极大值作为特征点。红外摄像机在光学导轨两侧保持不动,然后改变标定模板的位置。标定实验使用的计算软件是MATLAB,其标定工具箱可准确地计算实验结果。红外摄像机标定实验使用的硬件设备分别是:光学精密导轨、红外摄像机两台、计算机一台、红外摄像机实验标定板。
MATLAB 是美国MathWorks 公司开发的一款数学软件,在图像处理及矩阵运算等方面有着强大的功能[5]。可在MATLAB 中编写张正友自标定法并进行红外摄像机的标定实验。而在图像去噪,图相匹配等环节,函数集中都有对应的程序,只需根据实际情况调用修改便可。
红外摄像机标定过程归纳如下:
(1)数据初始化。即内存空间的划分,把特征点的坐标以及红外摄像机标定的内参外参所需空间进行划分。
(2)红外摄像机图像采集并确定角点位置。红外摄像机在实验中总共采集二十组不同方向上的图片。标定模板使用的是镂空棋盘格模板,以灰度变化极大值作为角点。提取角点时,如果检测成功,则返回非零数值,并把角点数据储存。如果检测失败,则返回0值,程序出错,终止程序。红外摄像机拍摄的模板图像,每幅图像可以提取18 个特征点。
(3)对上一步获得的角点进行亚像素级提取,然后绘制亚像素级别的角点,获得直观的角点提取图像。
(4)角点坐标的保存。对角点亚像素级提取完毕后,坐标信息保存至第一步分配的内存中。
(5)把20 幅红外图像的亚像素级角点坐标全部提取完毕,并将所有数据保存。
(6)角点坐标数据采集完毕后,将图像坐标点和空间坐标点的坐标代入线性约束条件中进行计算,利用张正友自标定法计算红外摄像机的内外参数。
(7)误差的测量。把其中一个角点的三维空间坐标进行转换,得到其二维图像上的理想坐标,然后该数值与二维图像中的实际坐标对比。
红外摄像机标定流程如图2 所示。
红外摄像机的标定实验是在MATLAB 系统中编写完成的,最终得到红外摄像机的内外参数及镜头畸变系数。标定时,摄像机对不同位置的红外模板进行拍摄,然后通过MATLAB 函数库中的程序计算参数。因此,每次标定模板的改变,都会得到一个新的外参。每次移动造成的R、T 间的平均差,可通过统计学的方法进行处理,即通过每次实验测得的数据期望值作为标定实验的实际测量结果。红外摄像机标定实验角点提取结果如图3 所示。
图2 标定流程模块图
图3 红外标定板不同位置的角点提取效果图
两台红外摄像机的参数计算结果如下所示。
主光轴左侧摄像机参数计算结果:
主光轴右侧摄像机参数计算结果:
标定结束后,使用平均误差投影法判断标定结果的精度。角点的平均误差投影图如图4 所示。通过计算可以看出,左右两台红外摄像机的标定参数误差分别为0.13617 像素和0.13751 像素。通过查阅相关文献可知,该测量精度比传统的直接线性法和Tsai 两步法分别提高了17%和11%。
图4 提取特征点的反投影误差图
红外摄像机的内、外参数标定结束后,可对两台摄像机的相互位置进行标定,从而确定两者之间的空间位置。设主光轴左侧红外摄像机的平移向量和旋转矩阵分别为R1、T1,主光轴右侧红外摄像机的平移向量和旋转矩阵分别为R2、T2。取三维空间坐标系中的任意一点,设其横坐标为xw,该点在左右两台红外摄像机中的图像横坐标分别为x1,x2,三者的关系可由式(1)表示。
通过计算,两台红外摄像机的外参关系如式(2)所示。
两台红外摄像机在空间中的相对位置标定结果如下所示:
2 红外图像校正实验
对红外图像进行匹配前,首先要对两台红外摄像机采集的图像进行立体校正。最准确有效的方法是在两红外图像之间增加极线约束关系,即通过校正处理后,两红外图像之间的极线严格规范。如果对每个点单独做极限约束,然后进行点的匹配,会极大地增加计算量,降低运算效率。所以,对两红外图像进行整体校正,即所有对应点的连线都水平平行。该方式在一定程度上提升了匹配的准确率,共面行对准示意图如图5 所示。
图5 共面行对准示意图
通过红外摄像机标定实验,已求取两台红外摄像机的相对关系,即R 和T。所以在进行立体校正实验时,可使用Bouguet 方法。该方法随机选择两幅红外图像中的其中一幅,通过最大程度地减小重新投影数,使得被测物在图像中的占有比例最大化。
由于图像重新投影会造成信息失真,可通过图像之间的旋转,把两摄像机的旋转矩阵R 进行分解。设分解的两摄像机之间的旋转矩阵为γl、γr。旋转两台红外摄像机,使其主光轴皆平行于原测量系统摄像机的主光轴。从而两红外摄像机的相对位置保证共面,而采集的图像行不相同。然后,建立旋转矩阵Rrect。该矩阵描述的是把其中一个红外摄像机的极点,从原来的位置移动到无穷远处,并且极线处于水平方向。设主点坐标(cx,cy)为其中一台摄像机采集的图像原点,两红外摄像机投影中点为极点e1,e1可通过式(3)表示。
设与摄像机主光轴方向正交的向量为e2,该向量没有界限,并且e2与e1正交。通过e1与主光轴的关系求取e2的值,然后对e2进行归一化处理,如式(4)所示。
设 e3与 e1、e2成正交关系,则 e3可由式(5)表示。
把其中一台摄像机的极值点由初始位置转移至无穷远处,需要一个变换矩阵,该变换矩阵可由式(6)表示。
式(4)中,变换矩阵使得其中一幅红外图像围绕其中点旋转,直到极线方向转动至水平,该图像对应的摄像机极点在无穷远处。对左右两台红外摄像机采集的图像进行行对准处理,如式(7)所示。
经过校对后,可计算两台红外摄像机的变换矩阵,设其为 Mrect_l和 Mrect_r,通过该值可求取 Pl和 Pr,结果如式(8)所示。
式(15)中,αl与αr表示两台红外摄像机的畸变系数。由于摄像机精度较高,为了计算方便,设该值为0。P 为投影矩阵,二维图像坐标转换为三维空间坐标的关系如式(9)所示。
设图像坐标为(x/w,y/w),计算图像中某个点的二维坐标,结合摄像机的内部参数,便可还原该点的三维空间坐标,还原矩阵如式(10)所示。在本文的设置中,其中一台红外摄像机的图像坐标由该摄像机确定,而其余的参数都由另一台摄像机采集的图像确定。如果主光轴在无穷远处有交点,则的值为0。
通过某测量点的二维图像坐标及视觉差d 还原该点的三维空间坐标,该坐标用(X/W,Y/W,Z/W)表示。结果如式(11)所示。
使用MATLAB 进行图像校正的过程中,需要启动函数集中的图像行对准处理算法。通过计算可获得还原矩阵Q,投影矩阵Pl和Pr以及分解后的旋转矩阵Rl和Rr。计算完毕后,启动结果显示,可得到校正处理后的红外图像。在立体校正实验中,红外图像的投影矩阵计算结果如式(12)所示。
对红外图像进行校正实验,校正前后的图像对比如图5 所示。
图5 立体校正实验
立体校正前的红外图像如图5(a)所示,两相邻图像在横坐标方向上并未对齐。图5(b)为校正后的图像,从实验结果可知,校正后左右两图出现明显的行对准,校正效果良好。为后续的红外立体视觉检测奠定良好基础。
3 结语
本文使用MATLAB 软件完成左、右两台红外摄像机的标定,对获得的标定参数进行重投影误差处理。经过计算,其平均误差约为0.1 像素,标定准确度较高。同时,对红外电缆图像进行立体校正处理,图像中的对应点实现严格的共面行对准,