双目视觉目标深度的估计和实现

首先,按照双目立体视觉深度估计的一般步骤,得到左右两幅图像中对应特征点的水平视差。 然后依据三角测量原理估计出空间物体与相机光心深度信息。选用张正友相机标定法、Harris 和 FAST 角点检测、SIFT/SURF 特征描述等嵌入式系统设计与实现。

  • 视觉模型

摄像机的基本成像模型通常称为基本针孔模型,也称为线性模型,它由三维空间到平面的中心射影变换所描述。如图 1(a) 所示,令Oc 是投影中心,它与平面π的间距是f。平面π叫做摄像机的像平面,Oc 点称作相机的光心,f 是相机的焦距。空间中任一点Xc 在平面π上所成的像(投影), m是投影中心 Oc 和该空间点 Xc 间的连线与π平面的交点。主轴或光轴是以Oc 为端点且正交于像平面的射线,相机的主点是主轴与像平面的交点 p。

双目视觉目标深度的估计和实现

图 1 表述了图像物理坐标系与图像像素坐标系间的关系。在不考虑镜头畸变的情况下,假设光心的像素坐标为 (u0,v0),每一个像素在 u 轴与 v 轴方向上的实际物理长度分别记为dx 和 dy,则图像上任意一个像素的像素坐标与其在图像物理坐标系下的坐标转换关系是


双目视觉目标深度的估计和实现


用矩阵表示是


双目视觉目标深度的估计和实现


图 1 也描述了世界坐标系与相机坐 标系之间的变换关系,即可以用旋转矩 阵 R 与平移向量T 来表示。因此,若已知 某空间点在世界坐标系下和在相机坐标系 下的齐次坐标表示分别为(Xw,Yw,Zw,1)T 和(Xc,Yc,Zc,1)T,那么


双目视觉目标深度的估计和实现


对于任一空间点 P,其在像平面上的物理坐标可以写作


双目视觉目标深度的估计和实现


由式 (2)~(4) 可得

双目视觉目标深度的估计和实现

其中,P被称作投影矩阵, 是一个3×4矩阵; s 叫做轴间扭转因子,一般可以忽略不计; ku=f / dx;ku=f / dy。显然,K完全由ku、 kv、s、u0、v0 决定,且只与相机本身的物理 性能有关,它是内在的和“主观的”,因 此称其为相机的内参数矩阵;[R T] 称为相 机的外参数矩阵,因为它表达了相机相对于世界坐标系的摆放姿态。

相机标定与校正

采用线性标定的方法,通过在不同视角下获得多组平面标定板的图像,进而建立多个方程,并由最小二乘估计,实现相机参数的标定。将某三维空间点在世界坐标系下的坐标M=[X Y Z] 所对应的齐次坐标写为M=[X Y Z 1]T,其在图像素坐标系下的坐标 m=[u v],对应的齐次表示为 =[u v 1]T,那么由式 (5) 可得


双目视觉目标深度的估计和实现


这里ri 表示旋转矩阵R 的第i列;A 是相机的内参数矩阵,可以写成


双目视觉目标深度的估计和实现


其中,(u0,v0) 是主点的像素坐标值;α 和 β 分别表示相机在u轴、 v轴方向上的焦距(单 位为像素);γ 表示u 轴和v 轴的倾斜程度。

单目相机标定的主要目的是估计内参 数矩阵 A 和外参数矩阵 [r1 r2 r3 t]。

特征检测与描述

角点常作为图像中的点特征,一般是 图像中区分度明显且具有代表性的位置。 它可以是两条边的交叉点,或是其邻域内 的灰度变化较为强烈的点等。角点的定义 在不同应用场合可能会不一致。本设计中 主要利用了 SIFT 特征提取的算法。

  • 方向分配

为了使描述子具有旋转不变性,需要 首先给每一个兴趣点分配基本的参考方向。

Lowe 的做法是首先计算关键点邻域内各像素点的梯度信息,计算公式为

双目视觉目标深度的估计和实现

然后使用直方图统计邻域内各像素梯度的模值和方向信息,直方图将 0°~360°的方向范围分成36 个柱,每柱跨度是10°,柱的高度由梯度的模决定,最后直方图峰值所对应的角度即为该关键点的主方向;还可以将直方图中高度为主峰高度80% 以上的次最大峰所对应的方向作为辅助方向, 以增强算法的稳健性。

  • 关键点的特征描述

首先根据关键点的尺度值计算描述子 所需的区域大小,然后将以该关键点为原 点的区域坐标系旋转至主方向,如图2所示。

双目视觉目标深度的估计和实现

Lowe 建议将关键点附近的区域再细分成 4×4 个子区域,然后再分别统计每一子区域在8 个方向的梯度信息,如图 3 所示。 由于进行了旋转,所以子区域(方格)的中心坐标将由整型变成非整型,可以通过线性插值,由每一像素和与之邻近的周围 4个种子点(旋转后的区域方格的中心点)的距离确定各像素对这 4个种子点的贡献因子。 在统计方向时,因为只有8个离散的方向,为了平滑,把计算得到的梯度方向作用到邻近的两个方向上。最终还要结合高斯滤波器在对应位置的滤波系数,确定各像素对附近的 4 个种子点和 2 个方向上的作用权重。这样在遍历累加完整个大区域中的所有像素作用权重之后,最终就可以统计出各子区域在 8 个方向上的梯度分布。

双目视觉目标深度的估计和实现

  • 立体匹配与深度信息的估计

如下采用基于特征点的匹配,属于稀疏型匹配。其中的相似性度量选择的是匹配间距的度量,即最邻近的两个特征向量将被视为是匹配的。设计中,直接使用了OpenCV 中的FLANN 库,该库实现了机器学习中可用于寻找高维数据特征最近邻的一些算法。在找到特征点的稀疏匹配之后,就可以对特征点的深度信息进行估计。

一个无畸变、对准、已标定的理想标准双目立体成像系统如图4 所示。其中, Ol、Or 分别是左右相机的光心;b 为基线长度;f 为摄像机焦距;世界坐标系为O-XYZ, Y轴方向为垂直纸面向内,坐标原点到两光心的距离相等。

双目视觉目标深度的估计和实现

假设空间中的某点 P(X,Y,Z),在左右两 成像平面上的坐标(各自的相机坐标系下) 分别是pl=(xl, yl) 和 pr=(xr, yr),根据相似三角形的关系可得


双目视觉目标深度的估计和实现


将式 (8) 中的前两个等式相减消去可以得到


双目视觉目标深度的估计和实现


定义 d=xl-xr 为水平视差,则有


双目视觉目标深度的估计和实现


以此得到空间点距离相机的深度估计。

  • NanoPi 双目视觉系统及验证结果
  • 系统设计

系统的硬件连接如图5 (a) 所示,其中 双目摄像机与NanoPi 直接通过有线连接,以完成双目视觉任务中的第一步,即数字图像的采集。对视觉图像的运算处理是在远端的 NanoPi 上进行的,它具4 核1.2 GHz 的 CPU、512 MB 的 DDR3 RAM 且内置了UbuntuCore 系统。考虑到 NanoPi 没有桌面系统,所以首先选择通过SSH 协议让本地PC与NanoPi建立远程连接。建立连接之后,再利用 X Windows 协议使NanoPi 产生的图形结果显示在本地主机上。图5 (b) 是系统的简化流程框图。

双目视觉目标深度的估计和实现


  • 验证结果与分析

实验中所用的相机是分辨率为640×480 的视频聊天摄像头,两个单独的相机直接 经胶带固定后用作双目摄像机。在计算出匹配点对应的视差后,通过三角测量原理, 即可估计得到匹配点处距摄像机的大致深 度值。图 6 所示即是估得的结果。

双目视觉目标深度的估计和实现

表 1 所示为分别在两种不同光照条件 下各进行了四组重复性的实验结果。

双目视觉目标深度的估计和实现

因为摄像头本身的厚度未知,所以这 里通过只比较平面间的间距,而不去直接 比较各平面到相机光心的深度距离,来尽可能地消除该影响。由表1 中统计的实验 数据,经简单计算可得平面间的深度,如 表 2、表 3 和图 7、图 8 所示。

双目视觉目标深度的估计和实现

可见,在不同的光照环境下所估计得到 的各平面平均间距与实际的测量值之间的误差均在以10 mm内,且结果的方差(标准差) 也较小,这表明本设计的估计精度是可以满足一定要求的。此外,可以看到在自然光照 环境下测量结果的标准差更小,说明在自然光照的环境下所产生的噪声更加稳定。

实现的程序中涉及了三个可调阈值参 数,分别作用于去除匹配点匹配距离过大 的点对、三个平面与相机成像平面不共面 的容忍度,以及属于不同平面的视差最小 间隔。其中,前两个阈值主要是为了在三 个平面中(看成是共面的)筛选出好的匹 配点对,它依据的是所有匹配点对间的匹 配距离和重投影误差;第三个阈值参数是 为了辨别出三个不同的平面。由于每次实 验都很难确保每本书与相机间的相对位置 始终不变,所以可能需要不断地调节上述 三个阈值参数,以找到满意的估计结果。


分享到:


相關文章: