APP下载

基于双目视觉的空间非合作目标尺度测量技术研究

2019-07-01庄奕琪蒋山平

航天器环境工程 2019年3期
关键词:双目标定立体

李 洁,彭 琪,庄奕琪,蒋山平

(1.西安电子科技大学 微电子学院,西安 710071; 2.北京卫星环境工程研究所,北京 100094)

0 引言

空间目标分为合作目标和非合作目标,后者包括失效或者发生故障的航天器、脱离轨道运行的航天器等。目前,在地球轨道中存在着已知信息的大型尺寸非合作目标约2.2万块,而运动状态与形状信息完全未知的非合作目标多达30多万块[1]。这些非合作目标的形态特征与结构尺寸难以快速准确测量,因此目前无法对它们实现动态追踪与捕获[2]。而它们长期占用空间轨道资源,对正常运行的现役航天器造成严重的威胁,故应尽快获得其相关信息,以便进行规避或予以清除。

对非合作目标的信息获取,目前国内和国际上采用较多的是视觉与激光的测量方法。采用视觉的方法能更直观地获得场景的立体信息,且计算复杂度较低。双目视觉测量系统目前主要应用在机器人导航、三维模型构建、高精度测量技术以及虚拟现实技术等领域,例如,利用双目视觉与机器人的动作姿态相结合,可根据拍摄到的场景图片进行障碍物检测,为机器人规划行走路线[3]。

本文基于双目视觉的测量系统,通过采集静止状态下任意姿态的非合作目标的左右图像,对2幅图像进行立体匹配获取被测目标的点云数据;并提出一种点云轮廓线的直接提取算法,其不需要对点云建立三角网格模型,从而降低了算法的复杂度;最终通过提取出的被测点云线性拟合得到被测目标的结构尺寸信息。

1 非合作目标的点云获取

1.1 双目立体视觉模型

双目立体视觉系统是基于视差的原理,通过对同一目标物拍摄2幅或多幅图像来重构该目标物的三维立体信息,也就是将被测物体的二维信息在相机平面上进行投影,从而获得被测物的结构参数[4-5]。常用的理想化立体视觉模型有会聚式双目立体视觉模型和平行双目立体视觉模型,后者计算精度更高,应用更广泛。

平行双目立体视觉模型的建立须首先选取2个参数一致、光轴平行的相机,放置在同一条直线上,且相机的成像面在同一平面内(参见图1)。

图1 平行双目立体视觉模型Fig.1 The parallel binocular visual model

图1中:两相机光心距离为T,也称为基线距离。空间点P在左、右成像面的投影点分别为Pl(xl,yl,zl)和Pr(xr,yr,zr),对应的像素坐标系坐标分别为 (ul,vl)和 (ur,vr);左、右相机中心点的像素坐标系坐标分别为Ol(ul0,vl0)和Or(ur0,vr0)。定义ku,kv为像素坐标系坐标轴方向上的尺度因子,mm/像素。根据相似三角形原理可知:

式中f为相机焦距。

如果将世界坐标系当做左相机坐标系,那么空间点的世界坐标(xw,yw,zw)可以表示为

将式(2)代入空间点的三维坐标计算公式可得:

现实中我们所用的双目相机的参数存在差异,不能直接按照理想化模型来处理,须通过相机标定得到相机焦距f、两相机光心距T、图像的主点坐标、镜头的畸变参数以及两个相机之间的外部参数等。若要得到空间点的三维坐标,还需要知道左、右图像的视差,最终通过计算得到三维场景信息。

1.2 基于双目立体视觉点云获取结构框架

双目立体视觉系统通过采集左、右相机的图像,获取相机的内外参数,进行立体校正,利用双目立体匹配算法获取视差图,以得到图像深度信息,最终获取目标点云数据。

1.3 非合作目标点云获取步骤

1.3.1 相机标定与极线校正

本文采用视觉平行的双目相机,利用MATLAB标定工具箱对相机进行标定。标定原理是基于张正友的标定法[6],标定步骤参见图2:采用8×9的黑白棋盘格,用左、右相机采集同一时间的棋盘格图像20张;用MATLAB进行左、右分别标定以及立体标定,获取左、右相机的内外参数、畸变参数以及相机之间的旋转平移矢量。相机内参数主要包括主点、实际焦距、尺度因子和畸变系数(径向和切向);相机外参数主要包括旋转矢量和平移矢量。表1为标定后得到的相机内、外参数。

图2 相机标定步骤Fig.2 Steps for camera calibration

表1 相机内、外参数Table 1 Internal and external parameters of the cameras

在进行双极线校正之前要对左、右相机拍摄的2幅图进行去畸变。相机畸变分为径向畸变和切向畸变。径向畸变来源于透镜本身的工艺问题;切向畸变来源于透镜与图像平面不平行。本文采用公式法进行去畸变,坐标(x,y)由图像像素坐标系转换到相机坐标系。在相机标定这一步中我们得到径向畸变系数k1、k2、k3,切向畸变系数p1、p2,公式如下:

采用双极线校正的目的是使左、右两个相机的光轴平行,像点在左、右图像上的高度一致。双极线校正时采用OpenCV提供的算法,实现步骤如下:1)将2个相机通过标定得到的内参矩阵换算统一;2)将2个图像的像素坐标分别乘以步骤1得到的共同内参矩阵;3)对得到的新坐标左乘旋转矩阵R1和R2,其中R1和R2是对旋转矩阵的分解,R1×R2=R;4)对新坐标实现步骤2中的逆操作,得到新图像;5)用原左、右图像的像素值对步骤4中得到的新图像分别进行像素点插值。

1.3.2 基于特征点提取的 SIFT 立体匹配

SIFT(尺度不变特征转换)特征点提取算法的关键是在不同的尺度空间上查找图像的特征点,并计算出特征点的方向。该算法提取出的特征点对图像的旋转和尺度变化具有不变性,对三维视角变化和光照变化具有很强的适应性,局部特征在场景杂乱时仍保持不变,特征之间相互区分的能力强,有利于实现不同尺度空间特征点之间的匹配[7]。SIFT算法所查找到的特征点基本都是角点、边缘点等,不会因为光照变化、放射变换而变化,因此该算法常被用在立体匹配中。图3为SIFT算法的实现流程。

图3 SIFT 算法流程Fig.3 Flowchart of SIFT algorithm

1.3.3 视差与点云获取

视差的测量原理如图4所示,其中Cl、Cr表示左、右图像坐标系。根据相似三角形原理很容易推导出视差d=xl-xr与图像深度信息Z的关系。由图4可知:

可见深度Z与视差d成反比,因此,只有当目标与相机相距较近时才会有精度较高的深度Z。

图4 视差测量原理示意Fig.4 Principle of parallax measurement

要得到非合作目标的点云数据,须先计算出被测目标的空间三维坐标,并由双目立体视觉模型中的空间三维世界坐标计算公式(式(3))转换成视差和深度的形式:

2 非合作目标的特征结构测量

通过双目立体视觉获得的空间点云是散乱的稀疏点云,可以利用这些点的三维坐标来重构物体的表面模型。目前广泛采用的重构方法是三角剖分算法或者基于网格生长的三角剖分算法[8],其原理是:由初始的点云数据,按照一定的算法把这些点划分成一个个三角网格,再将这些网格连接起来,形成最终的目标物模型。其中,三角网格的生成是关键,它直接决定点云重建模型的质量。点云密度非常大时,三角剖分算法得到的模型曲面非常光滑,但是相应的计算量也非常大,如此进行目标物结构尺寸测量则实现速度较慢且计算复杂度高。而实际上,只需要获得目标的外形轮廓即可测量目标物的结构尺寸,没必要对目标物的表面进行完全重构。

因此,本文采用基于图形轮廓的点云线性拟合方法,先对立体匹配后的图像进行轮廓提取,然后将图像的轮廓与二维点云进行重叠,提取出重叠部分的点的坐标,再利用最小二乘法原理对边缘点云数据进行线性拟合。

2.1 采用 Canny 算法的图像轮廓提取

Canny算法用Canny边缘检测算子来实现对图像的边缘检测,是先平滑后求导数的方法,其原理[9]如下:

1)先将图像格式转化成灰度图像,再对灰度图像进行高斯滤波。滤波可以使用2个一维高斯核加权实现,也可以直接使用二维高斯核一次实现。

2)计算梯度的幅值和方向。对x、y求一阶偏导数,得到梯度幅值M[i,j]以及梯度方向θ[i,j]的计算公式

3)对梯度幅值进行非极大值抑制,即寻找像素点的局部最大值。为了排除掉非边缘点,将非极大值点所对应的灰度值设置为0。其工作原理是:选定一像素点C,判断其灰度值是否在8值邻域内为最大;求得C点的梯度方向,将其与C点邻域像素的交点再与C点进行灰度值比较——若C点灰度值小于其他两点,则判断C点非局部极大值点,即非边缘点。

4)分别设置高阈值TH和低阈值TL。图像中灰度值大于TH的点即为边缘点,可以连接成目标轮廓;而灰度值小于TL的点可以直接舍弃;对于灰度值介于TL与TH之间的点,则需在8值邻域内进行比较以确定其是否为边缘点。

2.2 点云轮廓的线性拟合

获得的点云数据中会存在一些噪声点或者误匹配点,为了剔除这些点,一般会通过构建点云模型来提取边缘轮廓,方法有2种:1)采用三角剖分算法构建三角网格,从而逼近目标物的模型;2)直接由点云进行空间线性拟合和曲面拟合。通过构建三角网格来提取轮廓的方法计算量非常大,而且凹边形的边缘上会存在狭长的三角形,进行边缘点提取时易产生较大误差[10]。而直接提取法需要对点云数据进行区域分割和曲率计算,计算复杂度较高,易增大误差。本文采用轮廓边缘提取法对点云数据的边缘进行提取,不仅可以有效排除这些噪声点,而且可有效降低计算复杂度。

将三维点云投影到xy平面,并与已提取的轮廓图像进行重叠,从中提取重叠部分的点云坐标。具体实现步骤如下:1)通过二值图像形态学处理将轮廓线图像的噪声点去除,并细化轮廓线;2)将点云坐标系转换到图像像素坐标系,将点云数据转化为二维点云;3)对转化后的二维点云数据进行插值;4)提取轮廓线上的拐点位置,将轮廓线图像上像素灰度值为255的点坐标提取出来与二维点云图像上的点进行匹配,若坐标点的灰度值小于阈值则将其提取出来。对于所有提取出来的点进行线性拟合时,需先结合提取到的拐点对轮廓点云数据进行区域分割,本文采用自适应阈值法进行分割。

采用最小二乘法进行直线拟合,对于已知的二维点云 (x1,y1)、(x2,y2)、···,要拟合的模型表达式为y=f(x),使误差最小;然后对误差公式求偏导,再将两点的坐标代入即得到方程f(x)的直线表达式。图5所示为Canny算子边缘检测结果;图6所示为轮廓点线性拟合结果。

图5 Canny 算子边缘检测结果Fig.5 Edge detection of Canny operator

图6 轮廓点线性拟合结果Fig.6 Linear fitting of contour points

3 实验结果

搭建双目视觉立体测量实验平台如图7所示,包括三维旋转平台、控制箱、双目相机和计算机。利用三维旋转平台和控制箱来模拟非合作目标在空间中的翻转运动状态,双目相机的最高有效像素为2560×960。本文采用一个立方体模拟非合作目标模型进行测量,所有算法的仿真均在MATLAB软件平台进行,对立方体的外形轮廓尺寸测量结果与其实际尺寸的对比见表2。

图7 双目视觉立体测量实验平台Fig.7 Hardware platform for binocular stereo vision measurement

表2中的关键尺寸用颜色来表示,以与图6中拟合出来的不同颜色的直线相对应,并依次对应立方体的左上横边、右上横边、中间竖边、右竖边、左竖边、左下横边、右下横边。根据表中的结果可预估目标物为体积约为 1 187.625 9 cm3的立方体。根据表2的对比结果可知,本文设计的双目视觉立体测量系统对非合作目标的关键结构特征尺寸的测量误差达到百μm级。

4 结束语

本文提出一种点云轮廓线的直接提取算法应用于非合作目标的结构尺寸测量,打破了需先进行目标物的三维重构再提取其轮廓的常规,在保持测量精度的同时降低了算法的实现复杂度,提高了测量效率。在对被测目标模型完全未知的情况下,采用视觉获取点云数据的方法也可进行目标的位姿测量,从而为实现非合作目标的动态追踪与捕获奠定基础。

猜你喜欢

双目标定立体
念个立体咒
使用朗仁H6 Pro标定北汽绅宝转向角传感器
基于双目测距的卡尔曼滤波船舶轨迹跟踪
立体登陆
基于匀速率26位置法的iIMU-FSAS光纤陀螺仪标定
炫酷立体卡
船载高精度星敏感器安装角的标定
基于双目视觉图像的长度测量方法
基于Harris-张正友平面标定法的摄像机标定算法
基于双目视觉的接触线几何参数测量方法