时间:2024-05-04
王连增
(中国空空导弹研究院,洛阳471009)
视觉导航技术是一种依靠光学成像技术进行导航的方法,它具有测量速度快、测量精度高、自主性强、隐蔽性好、低成本等优点。近30 年,伴随着光学成像技术及视觉导航技术新概念、新方法、新理论发展,视觉导航技术在飞机、无人飞行(Unmanned Air Vehicles,UAV)、火星探测车、航天器、巡航导弹以及自动驾驶等方面得到普遍的应用,同时,视觉导航技术与其他导航手段相结合成为近些年发展的新趋势,其能够在卫星拒止条件下实现对INS 误差的有效补偿,使其成为SINS/GPS 传统导航手段外的新的组合导航形式,并成功实现在国外空地导弹上的应用。
双目视觉是通过左右两个相机模拟人眼采集图像信息的过程,用专业的图像处理器替代人脑对图像的处理过程,通过对不同视角对同一图像拍摄两张二维图像来恢复图像三维信息的一种方法。双目视觉技术具有计算精度高、系统简单易于实现、操作过程简便、不过分依赖于硬件产品易于工程化实现等特点,是机器视觉重要研究方向。对于双目视觉成像过程,涉及到4 个坐标系,分别为:像素坐标系、图像坐标系、相机坐标系和世界坐标系。许威在基于MATLAB 和Open CV 的双目视觉测距系统的实现一文中完成了测距系统的搭建工作,并从实时性及测距精度方面完成了SGBM(Semi-Global Block Matching)算法与BM 算法的对比验证工作。汪珍珍在基于MATLAB 与OpenCV 相结合的双目立体视觉测距系统一文中完成了测距系统的搭建工作,并通过SAD 算法完成了图像匹配工作。
本文在Win10 操作环境下,用MATLAB 标定工具箱完成双目摄像头标定,采用VS2017 与OpenCV3.1 相结合的方法开发一种双目视觉定位测距系统,以PC 为中心,由双目摄像头、图像采集、处理等模块构成,实现双目图像的获取、矫正、匹配以及目标深度信息获取等功能。在系统实现过程中,通过Canny 边缘检测算法对匹配进行约束,以解决SGBM 算法匹配算法慢等问题。
图1 双目视觉定位测距系统及双目摄像头
由图2 可知,Ol和Or为双目摄像头左、右光学中心,其光轴与成像平面如图2 所示。 f 表示摄像机焦距,T 表示左、右摄像头光学中心之间的间隔。通过式(1)和(2)可以求得Z,也就获得了距离信息。
图2 平行双目视觉模型
根据相似三角形原理,有:
可得:
式(2)中:xl、xr分别为空间点P 在双目摄像头成像上平面的投影点Pl、Pr横坐标值。
由式(2)能够定量计算目标点P 在空间中的深度信息Z。式(2)中,焦距f 和基线T 可通过相机标定得到,在确定的双目视觉测距系统中,通常焦距f 和基线T 是固定不变的,因此,只要获得了视差d=xl-xr即可获得距离信息。上述三角测量法只是定量的描述双目立体测距的模型,在实际的算法实现中,为提高测距信息的精度,通常采用最小二乘法进行深度信息的精确求解。
如图1 平行双目视觉模型所示,空间中点P 在左右相机坐标系下的投影点为Pl和Pr,可以利用矩阵形式描述上述成像模型,其中左、右相机的投影矩阵可以由双目相机标定的过程获取,包括双目相机的内参数、旋转矩阵、畸变参数、平移向量等,记为M1、M2,此时有:
式中,( u1,v1,1) 和( u2,v2,1) 分别为Pl和Pr在双目相机各自图像坐标系下的齐次坐标表示,( X,Y,Z,1) 为其对应的点P 在世界坐标下的齐次坐标,则式(3)和(4)中的Zc1和Zc2可以得到:
将式(5)和(6)写成矩阵的形式有:
此时可以将式(7)写成:
式中,K 和U 已知,此时根据最小二乘法即可求解得到:
式(9)中的X 即为未知数向量的值,此时,可以得到Z 的精确值。
相机标定是视觉定位技术中的必要过程,是一种通过构建相机像素点和空间物体位置间的联系,最终求得相机成像模型并完成数学表达对三维位置确定。成像模型中所要求得的参数为像机的内、外参数。通过矩阵能够表征相机与放置环境位置和方向之间联系的参数称为相机外参数;相机焦距、镜头畸变系数等由几何光学特性影响的相机自身参数称为内参数,如果已经得知两个图片特征点立体匹配关系,那么通过简单的三角测量,通过上述的标定参数即可完成目标点的空间坐标重建过程。因此,标定是双目立体视觉的基础和必要过程,其结果好坏将决定对目标物体实现三维测量的精度值。
双目相机的标定工作,主要分为以下两个过程:先通过MATLAB 标定工具箱分别对左、右两个相机单目标定,求得其内部参数,其次再通过双目标定工作求解两个相机之间相对的位置关系。上述的求解过程均能够通过MATLAB 标定工具箱求解实现。在本标定实验中,选取8×12 格,15mm×15mm 组成的标准棋盘格,通过双目摄像头分别完成不同拍摄角度、不同拍摄距离20 张棋盘格照片的拍摄,且拍摄过程中应确保黑白棋盘格尽量处于图像的中心,且无遮挡。
具体标定流程如图3 所示。
图3 标定实现流程图
图4 双目摄像头标定结果
在双目视觉匹配中,为提高SGBM 算法匹配的精度及快速性,并减少系统的误匹配操作,在系统中通过Canny 边缘检测算法对匹配过程进行约束。Canny 提出高斯函数的一阶导数是受白噪声影响的阶跃边缘的最优逼近。通对称二维高斯函数对图像与做卷积处理后,再沿着梯度方向做微分处理,就可以形成一个方向算子。因此,Canny 边缘检测过程可以简单由两个过程实现,先设计高斯滤波器完成平滑处理,然后再进行梯度计算。其具体实现如下:
(1)通过建立高斯滤波器完成图像预处理工作,消除图像信息中的噪声干扰;图像f( x,y )与二维高斯函数G( x,y )做卷积运算。
(2)通过高斯算子一阶微分过程完成图像滤波工作,获得图像单点像素的梯度模值 ||G 以及方向θ;边缘强度为可描述,边缘方向描述为
(3)对图像单点像素梯度进行非极大抑制,完成其边缘细化处理工作;判断梯度值是否是图像局部极大值,把边缘细化为单像素。
(4)阈值化和图像边缘连接,提高检测准确度。
图5 Canny算法流程图
图6 Canny边缘检测算法结果
SGBM 匹配算法的核心是由双目图像的信息阈H1和H2及其联合信息阈H1,2来进行互信息MI1,2的定义,并以MI1,2作为基础,其定义如下:
图像信息阈H 用直方图描绘的概率分布计算。联合图像的信息阈H1,2可以通过对互匹配影像灰度的联合概率分布求解获得。
该算法的基本流程为:
(1)逐像素匹配计算。函数d( xi,yi,IL,IR)表征左、右双目图像中某两个点为同名像点的可能性。
式(12)中,xi和yi表示左、右双目图像中处于同一扫描线上的两个像点。将扫描线上左图像点x 的灰度信息表示为IL( x );扫描线上右图像点y 的灰度信息IR可以通过采样点线性内插差值获取。
(2)基于Canny 算法的图像边缘约束。对左目图像扫描线上的检测到边缘信息点,通过SGBM 算法在右图像扫描线上获取,将二维匹配运算通过目标点图像边缘约束实现扫描线上一维相关计算。
(3)视差计算。用迭代运算完成视差计算,首先,通过随机视差影像纠正右影像,然后进行左右图像对匹配,产成新的视差影像;也可通过分等级计算的方法进行视差计算,先在半分辨率情况下计算视差影像作为初值,然后对视差影像进行递归计算。
(4)误匹配的剔除。左、右视觉图像同名点匹配完成后,通过右视觉图像中的同名点反向匹配左视觉图像中的匹配点,与由左图像和右图像进行匹配得到的视差不同,则视之为误匹配,重复上述计算过程,从新进行匹配。
图7 SGBM算法双目匹配结果
Step1:图像读取。读取拍摄好的同一时刻左目、右目图像各一张;
图8
Step2:图像校正。运用Remap 函数进行图像校正。图像校正完成后,输出双目行对齐图像(双目图像能够自动行对齐说明双目标定结果基本正确);
图9
Step3:SGBM 算法双目图像匹配;
Step4:坐标系映射计算三维坐标。坐标系映射是运用ReprojectImageTo3D 功能将双目匹配得到的像素视差数据转化为世界坐标系的三维坐标;
Step5:像素视差图显示。像素视差值是以像素为单位的“距离值”,像素视差值与世界坐标系的三维坐标值直接相关;
图10
Step6:像素视差图上选定点的xyz 三维坐标值显示。运行程序后,鼠标点击上图所示像素视差图上的任意一点,则会从xyz 这个矩阵中自动读取被点击像素点对应的三维坐标值,并将结果显示在命令提示符界面窗口。
图11
三维坐标原点为左目图像光心点(即左目的ccpoint,该点可标定后获取)三维坐标单位:mm,像素视差图与校正后输出的左目图像一一对应。
本文主要设计了一种在Win10 操作系统的PC上,实现VS2017 与OpenCV3.1 相结合的双目视觉定位测距系统。基于双目测距基本原理,通过MATLAB标定工具箱完成双目摄像头标定,并将结果导入程序中。利用Canny 边缘检测算法实现对SGBM 算法中的匹配进行约束,完成平行双目测距功能,并以为左目图像光心点为三维坐标原点,输出目标点的三维坐标信息。通过双目测距实验可知,基于Win10+VS2017+OpenCV3.1 的双目视觉定位测距系统能够较好完成双目图像的立体匹配以及视差图获取工作,并能够获得图像中被选择点的三维位置信息,完成目标点的定位功能。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!