Print

发布时间: 2018-06-16
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.170490
2018 | Volume 23 | Number 6




    图像理解和计算机视觉    




  <<上一篇 




  下一篇>> 





点云下地平面检测的RGB-D相机外参自动标定
expand article info 孙士杰, 宋焕生, 张朝阳, 张文涛, 王璇
长安大学, 西安 710064

摘要

目的 RGB-D相机的外参数可以被用来将相机坐标系下的点云转换到世界坐标系的点云,可以应用在3维场景重建、3维测量、机器人、目标检测等领域。一般的标定方法利用标定物(比如棋盘)对RGB-D彩色相机的外参标定,但并未利用深度信息,故很难简化标定过程,因此,若充分利用深度信息,则极大地简化外参标定的流程。基于彩色图的标定方法,其标定的对象是深度传感器,然而,RGB-D相机大部分则应用基于深度传感器,而基于深度信息的标定方法则可以直接标定深度传感器的姿势。方法 首先将深度图转化为相机坐标系下的3维点云,利用MELSAC方法自动检测3维点云中的平面,根据地平面与世界坐标系的约束关系,遍历并筛选平面,直至得到地平面,利用地平面与相机坐标系的空间关系,最终计算出相机的外参数,即相机坐标系内的点与世界坐标系内的点的转换矩阵。结果 实验以棋盘的外参标定方法为基准,处理从PrimeSense相机所采集的RGB-D视频流,结果表明,外参标定平均侧倾角误差为-1.14°,平均俯仰角误差为4.57°,平均相机高度误差为3.96 cm。结论 该方法通过自动检测地平面,准确估计出相机的外参数,具有很强的自动化,此外,算法具有较高地并行性,进行并行优化后,具有实时性,可应用于自动估计机器人姿势。

关键词

RGB-D相机; 自动标定; 3维点云; 平面检测; 深度图

Automatic extrinsic calibration for RGB-D camera based on ground plane detection in point cloud
expand article info Sun Shijie, Song Huansheng, Zhang Chaoyang, Zhang Wentao, Wang Xuan
Chang'an University, Xi'an 710064, China
Supported by: National Natural Science Foundation of China(61572083); Fundamental Research Founds for the Central Universities(310824171003); Natural Science Foundation of Shaanxi Province, China(2017JQ6064)

Abstract

Objective The extrinsic parameter of the RGB-D camera can be used to convert point cloud in camera coordinate to that in world coordinate. This parameter can be applied to 3D reconstruction, 3D measurement, robot gesture estimation, and target detection, among others. The RGB-D camera (e.g., Kinect, PrimeSense, and RealSense) consists of two sensors: RGB sensor and depth sensor. The former sensor retrieves the RGB image, whereas the latter retrieves depth image from the scene. To translate the 3D point cloud in the camera coordinate to the world coordinate, the extrinsic parameters of depth sensor have to be calibrated. The general calibration methods use calibration objects (such as chessboard) to obtain the extrinsic parameter of the RGB-D color sensor, which is regarded as the extrinsic parameter of the depth sensor approximately. These methods do not make full use of depth information, thereby causing difficulty in simplifying the calibration process. Moreover, lack of knowledge on the difference between the depth sensor and color sensor can cause large errors. Thus, to accurately estimate the extrinsic parameter of the depth sensor in the RGB-D camera, some methods have been proposed by using the extrinsic parameters of depth sensor relative to the color sensor. However, these methods complicate the calibration process. To simplify the calibration process of the extrinsic parameter of the depth sensor, the depth information should be fully utilized. Results of the methods are based on the color image with the parameter of the color sensor. However, the majority of applications on the RGB-D camera are based on the depth sensor. Moreover, parameters of the depth sensor should be directly calibrated. Method We build the spatial constraint relation between the ground plane and the camera, which can be used to select the ground plane from planes detected in the 3D point cloud. The ground plane should satisfy the following conditions: 1) The angle between the z axis of the camera and the ground plane is less than the specified threshold. 2) The z value of the ground plane in the world coordinate is larger than that of the other points, which are not in the ground plane. Moreover, we create the world coordinate based on the detected ground planes automatically. The origin point of the world coordinate is the projection of the origin point of the camera coordinate to the plane and the y axis of the world coordinate is the projection of the z axis of the camera coordinate to the plane. In addition, the direction of the z axis of the world coordinate is toward the origin point of the world coordinate from the origin point of the camera coordinate. We calibrate the extrinsic parameter of the RGB-D camera in the following steps. First, we reconstruct the 3D point cloud from the depth image retrieved from the depth sensor of the RGB-D camera. The reconstructed 3D point cloud is in the camera coordinate, whose subset forms a large number of planes. Second, planes in the 3D point cloud are detected by the MELSAC method. At most, one ground plane exists in the detected planes. Third, the spatial constraint rule between the ground plane and camera is built. The detected planes are filtered by the spatial constraint rule until the ground plane is found or all the planes are iterated. The process stops when a ground plane cannot be found. Finally, by using the relation between the ground plane and the camera, point sets are selected to calculate the extrinsic parameters. Result In the experiment, the benchmark is the result of checkerboard extrinsic calibration method only processing the RGB image of RGB-D information which is retrieved from the PrimeSense camera. We record an 89.4 s video and use it in the experiment. The videos contain two sub-videos: RGB video whose channel is 3 and depth video whose channel is 1. A 7x7 checkerboard is found in every frame of the RGB video, which is processed by the checkerboard-based method. The input of our proposed method is the frame of the depth video. The result shows that the average tilt angle error is -1.14°, the average pitch angle error is 4.57°, and the average camera height error is 3.96 cm. An experiment to test the robustness of the noise is also performed. The variance of the Gaussian noise in the depth frame is increased, and the result of each variance Gaussian noise is obtained. The stability of calibration decreases with the increase in the variance of Gaussian noise. The result shows that our method performs effectively when the variance of the Gaussian noise is below 0.01. Conclusion Our proposed method fully utilizes the depth information of the RGB-D camera, and simplifies the process of extrinsic calibration of the depth sensor. Thus, our method can be used in actual application. For convenience, the source code is also published. This method can automatically detect the ground plane and does not require other calibration objects. Therefore, the proposed method can calibrate each frame of the recorded video accurately, and it is not sensitive to the noise in the depth image. In addition, the algorithm has high parallelism. The process of estimating planes in the 3D point cloud and filtering these planes can be implemented in a parallel manner. The proposed method will have real-time performance based on this parallel implementation.

Key words

RGB-D camera; automatic extrinsic calibration; 3D point cloud; plane detection; depth map

0 引言

RGB-D相机, 比如Kinect[1-3]、PrimeSense、Asus Xtion Pro等, 是在传统的RGB相机的基础上增加了红外相机, 图 1是Kinect的结构图, 可见, 它内部包含:彩色相机、红外相机和红外照明器;彩色相机输出彩色图, 红外相机输出深度图, 红外照明器发射红外光, 用于深度图的计算.随着Kinect等低成本的RGB-D相机的出现, 它们越来越多地被应用在3维场景重建和导航[4-5]、目标识别和跟踪[6-7]、3维测量等应用中.这些应用往往需要对相机的外参进行标定。

图 1 Kinect的结构
Fig. 1 Structure of the Kinect

例如在目标检测和识别应用[7]中, 首先应标定出相机的外参, 然后对场景中的行人进行跟踪.如果能够获得相机的外参, 可以消除透视带来的负面影响, 统一检测算法, 简化识别过程, 提高识别速度。

但是, 目前针对RGB-D相机的标定, 往往研究的是彩色相机相对于红外相机的外参标定[8-9]。针对RGB-D相机本身外参往往近似与彩色相机的标定, 彩色相机标定一般采用棋盘标定的方法[10], Munaro等人[6]利用棋盘对多个相机外参进行标定, 然后在标定的基础上进行行人检测.这种标定方法一方面没有充分利用RGB-D相机所提供的深度信息, 另一方面标定的结果本质上是彩色相机的外参数, 如果直接用于深度图 3维重建, 会有较大误差。Shibo等人[11]设计一种专门针对RGB-D红外相机可以识别的标定板, 该标定板上有一定间隔的孔, 通过自动识别孔来对红外相机进行标定。虽然这是针对红外相机进行的标定, 但是需要设计专用的标定物, 增大了标定的难度。Liao等人[8]将标定划分为3类:1)需要标定物的标定, 2)需要人为干预的标定, 3)全自动的标定;按照这个分类, 本文说提出的方法属于其中的第3类。

图 2 相机外参标定流程
Fig. 2 Process of camera extrinsic parameter calibration
图 3 相机坐标系
Fig. 3 Camera coordinate

参照Liao等人[8]所提出的标定分类, 本文将RGB-D相机外参标定的方法划分为3类:第1类标定出彩色相机的外参, 然后利用彩色相机和红外相机的外参$ T_{{\rm{C'}}}^{\rm{D}} $, 通过变换$ {T_{\rm{D}}} = T_{{\rm{C'}}}^{\rm{D}}{T_{{\rm{C'}}}}$, 得到红外相机外参$ {T_{\rm{D}}} $。该类方法的优点在于可以直接利用彩色图的标定方法, 但是缺点是需要彩色相机相对于红外相机的外参数, 而且没有利用深度图所提供的信息, 标定过程复杂。第2类标定方法是通过设计特定标定物, 在红外相机所提供的深度图上进行特征检测, 通过特征(比如棋盘角点)得到相机的外参数。这种类型的方法虽然是对红外相机进行的标定, 但是, 需要设计特定的标定物, 相对第1类标定方法而言, 并没有简化标定过程。第3类使用深度图对外参相机进行标定, 通过检测深度图上的目标, 利用目标的与世界坐标系之间关系, 进行标定, 这类标定方法直接利用深度信息, 可以大大简化标定的过程, 提高标定的效率。本文所提方法——基于地平面检测相机外参自动标定方法, 以下简称地平面标定方法, 属于第三类。地平面标定方法能够利用RGB-D相机的深度信息, 直接对RGB-D相机的红外相机进行标定。

1 外参标定过程

RGB-D相机包含彩色相机和红外相机, 本文主要针对红外相机的外参进行标定, 后文出现的外参标定默认指红外相机的外参标定。相机的外参为

$ \mathit{\boldsymbol{T}}_{\rm{C}}^{\rm{W}} = \left[ {\begin{array}{*{20}{c}} {\mathit{\boldsymbol{R}}_{\rm{C}}^{\rm{W}}}&0\\ {\mathit{\boldsymbol{t}}_{\rm{C}}^{\rm{W}}}&1 \end{array}} \right] $ (1)

式中, $ \mathit{\boldsymbol{T}}_{\text{C}}^{\text{W}}\subseteq {{\mathbb{R}}^{4\times 4}} $, $ \mathit{\boldsymbol{R}}_{\text{C}}^{\text{W}}\subseteq {{\mathbb{R}}^{3\times 3}} $为相机的旋转矩阵, $ \mathit{\boldsymbol{t}}_{\text{C}}^{\text{W}}\subseteq {{\mathbb{R}}^{1\times 3}} $为相机的平移矩阵, $ \left( \cdot \right)_{\text{C}}^{\text{W}} $表示由相机坐标系转换到世界坐标系。

图 2是外参标定的主要流程。建立世界坐标系后, 从RGB-D相机获得深度图像;利用红外相机的内参, 将深度图转换称相机坐标系下的3维点云;最后利用迭代求解点云中的地平面, 在得到地平面的同时计算出相机的外参。

1.1 相机坐标系和世界坐标系的建立

相机坐标是以红外相机为原点所建立3维坐标系, 如图 3, 红外相机为相机坐标系原点$ {{O}_{\text{C}}} $, $ {{X}_{\text{C}}} $轴沿着Kinect的横向方向, $ {{Z}_{\text{C}}}$轴垂直于Kinect, 指向拍摄的方向。

通常世界坐标可以任意建立, 但是为了方便计算相机的外参, 如图 4所示, 在建立世界坐标的时候, 应满足下面要求:

图 4 世界坐标系的位置
Fig. 4 The position of world coordinate

1) 世界坐标系的原点为相机坐标系原点在地平面的投影点;

2) 世界坐标系的$ {{Y}_{\text{W}}} $轴为相机坐标系$ {{Z}_{\text{C}}} $轴在地面的投影;

3) 世界坐标系的$ {{Z}_{\text{W}}} $轴垂直于地平面向下;

4) 建立的为右手坐标系。

以这种方式建立世界坐标系, 可以较为方便地寻找相机坐标与世界坐标对应的点组, 简化标定过程。

1.2 相机外参计算

相机坐标系到世界坐标系的变换矩阵, 即相机的外参$T_{\text{C}}^{\text{W}} $, 为4×4的矩阵, 有12个未知参数, 见式(1)。首先计算世界坐标系到相机坐标系的变换矩阵$ T_{\text{W}}^{\text{C}} $, 得到相机的外参,即

$ \mathit{\boldsymbol{T}}_{\rm{C}}^{\rm{W}} = \mathit{\boldsymbol{T}}_{\rm{W}}^{{\rm{C}} - 1} $ (2)

记相机坐标系的点为$ \mathit{\boldsymbol{P}}_{\text{C}}^{(i)} $, 与之对应的世界坐标系的点为$ \mathit{\boldsymbol{P}}_{\text{W}}^{(i)} $, 如图 5, 在世界坐标系下选择4个特殊的点,即

$ \left\{ \begin{array}{l} \mathit{\boldsymbol{P}}_{\rm{W}}^{\left( 0 \right)} = \left[ {000} \right]\\ \mathit{\boldsymbol{P}}_{\rm{W}}^{\left( 1 \right)} = \left[ {100} \right]\\ \mathit{\boldsymbol{P}}_{\rm{W}}^{\left( 2 \right)} = \left[ {010} \right]\\ \mathit{\boldsymbol{P}}_{\rm{W}}^{\left( 3 \right)} = \left[ {001} \right] \end{array} \right. $ (3)

图 5 在世界坐标系下选中的点
Fig. 5 Selected points in world coordinate

通过计算对应的相机坐标系下的点, 即$ \mathit{\boldsymbol{P}}_{\text{C}}^{(0)} $, $ \mathit{\boldsymbol{P}}_{\text{C}}^{(1)} $, $ \mathit{\boldsymbol{P}}_{\text{C}}^{(2)} $, $ \mathit{\boldsymbol{P}}_{\text{C}}^{(3)} $, 便可求出$ \mathit{\boldsymbol{T}}_{\text{W}}^{\text{C}} $, 即

$ \mathit{\boldsymbol{T}}_{\rm{W}}^{\rm{C}} = \left[ \begin{array}{l} \frac{{\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 1 \right)}} \right) - {{\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}} \right)}^{\rm{T}}}}}{{{{\left\| {\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 1 \right)}} \right) - {{\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}} \right)}^{\rm{T}}}} \right\|}_2}}}\;\;\;\;\frac{{\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 2 \right)}} \right) - {{\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}} \right)}^{\rm{T}}}}}{{{{\left\| {\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 2 \right)}} \right) - {{\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}} \right)}^{\rm{T}}}} \right\|}_2}}}\;\;\;\;\frac{{\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 3 \right)}} \right) - {{\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}} \right)}^{\rm{T}}}}}{{{{\left\| {\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 3 \right)}} \right) - {{\left( {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}} \right)}^{\rm{T}}}} \right\|}_2}}}\;\;\;\;\;{\bf{0}}\\ \frac{{\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}}}{{{{\left\| {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}} \right\|}_2}}}\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;1 \end{array} \right] $ (4)

已知相机坐标系下的平面方程: $ ax+by+cz+d=0 $, 其垂直于地面向下的法向量为:$ {{\mathit{\boldsymbol{n}}}_{\text{C}}}=\left[ abc \right] $$ {{\left\| {{\mathit{\boldsymbol{n}}}_{\text{C}}} \right\|}_{2}}=1 $。由世界坐标系原点为相机坐标系原点在平面上的投影, 可知世界坐标的原点$ \mathit{\boldsymbol{P}}_{\text{W}}^{(0)} $在相机坐标系下的坐标为

$ \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)} = \frac{{\left| d \right|}}{{\sqrt {{a^2} + {b^2} + {c^2}} }}{\mathit{\boldsymbol{n}}_{\rm{C}}} $ (5)

$\mathit{\boldsymbol{P}}_\text{W}^{(3)}=\left[ 001 \right] $在世界坐标系$ Z $轴上, 由$ {{O}_{\text{C}}} $, $ \mathit{\boldsymbol{P}}_{\text{C}}^{(0)} $, $ \mathit{\boldsymbol{P}}_{\text{C}}^{(3)} $共线, 那么有

$ \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 3 \right)} = \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)} + {\mathit{\boldsymbol{n}}_{\rm{C}}} $ (6)

$ {{Y}_{\text{W}}} $轴为$ {{Z}_{\text{C}}} $轴在平面上的投影, 故

$ \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 2 \right)} = \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)} + {\mathit{\boldsymbol{n}}_{\rm{y}}} $ (7)

式中, $ {{\mathit{\boldsymbol{n}}}_{\text{y}}} $$\mathit{\boldsymbol{P}}_{\text{C}}^{(0)}\mathit{\boldsymbol{P}}_{\text{C}}^{(2)} $的单位向量, 有

$ {\mathit{\boldsymbol{n}}_{\rm{y}}} = \frac{{{\mathit{\boldsymbol{P}}_{{{\rm{Z}}_{\rm{c}}}}} - \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}}}{{{{\left\| {{\mathit{\boldsymbol{P}}_{{{\rm{Z}}_{\rm{c}}}}} - \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}} \right\|}_2}}} $ (8)

$ {{\mathit{\boldsymbol{P}}}_{{{\text{Z}}_{\text{c}}}}} $为相机坐标系的[001]点到平面的投影。通过解方程, 可得投影点。

$ \left\{ \begin{array}{l} ax + by + cz + d = 0\\ \frac{{x - {x_0}}}{a} = \frac{{y - {y_0}}}{b} = \frac{{z - {z_0}}}{c} \end{array} \right. $ (9)

式中, $ a $, $ b $, $ c $, $ d $为平面方程的参数, $({{x}_{0}}, {{y}_{0}}, {{z}_{0}}) $为平面上任一点。

当求出$ \mathit{\boldsymbol{P}}_{\text{C}}^{(0)}, \mathit{\boldsymbol{P}}_{\text{C}}^{(2)}, \mathit{\boldsymbol{P}}_{\text{C}}^{(3)} $后, 通过向量叉乘可以求得$ P_{\text{C}}^{(1)}$, 即

$ \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 1 \right)} = \frac{{\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 2 \right)} - \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)} \times \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 3 \right)} - \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}}}{{{{\left\| {\mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 2 \right)} - \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)} \times \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 3 \right)} - \mathit{\boldsymbol{P}}_{\rm{C}}^{\left( 0 \right)}} \right\|}_2}}} $ (10)

通过式(5)—式(7), 式(10), 求出从世界坐标系下选出的4个点在相机坐标系下的坐标, 然后利用式(4)得到世界坐标点到相机坐标点的转换矩阵, 最后利用式(2)的到红外相机的外参矩阵。

2 地平面估计过程

为了利于平面检测, 首先利用内参将深度图转化为相机坐标系下的3维点云, 利用MLESAC (maximum likelihood estimation sample consensus)方法[12]提取平面, 迭代遍历平面, 求出外参, 利用外参和点云来判断平面是否为地平面, 最终得到相机外参, 见图 7

图 6 相机的成像模型
Fig. 6 The model of camera
图 7 地平面估计的流程图
Fig. 7 The process of ground plane estimation

2.1 将深度图转换为相机坐标系下的3维点云

图 6, 是相机的成像模型, 像平面的坐标轴分别用$ {{X}_{\text{I}}} $$ {{Y}_{\text{I}}} $来表示, 相机坐标系下的点$ {{P}_{\text{C}}}=({{X}_{\text{C}}}, {{Y}_{\text{C}}}, {{Z}_{\text{C}}}) $在像平面上的成像点为$ {{p}_{\text{I}}}=({{u}_{\text{I}}}, {{v}_{\text{I}}}) $, 相机的焦距为$ f $, 光轴与像平面交点坐标为$ {{c}_{\text{x}}} $$ {{c}_{\text{y}}} $, 像素的长宽分别为:$ {{d}_{\text{x}}} $$ {{d}_{\text{y}}} $, 像素值为$ {{d}_{\text{p}}} $, 像素值在相机坐标系下对应的点的Z坐标值的比例为$ s $。那么可将$ (u, v, {{d}_{\text{p}}}) $转换为$ ({{X}_{\text{C}}}, {{Y}_{\text{C}}}, {{Z}_{\text{C}}}) $,计算公式为

$ \left\{ \begin{array}{l} {f_{\rm{x}}} = \frac{f}{{{d_{\rm{x}}}}}\\ {f_{\rm{y}}} = \frac{f}{{{d_{\rm{y}}}}}\\ {Z_{\rm{C}}} = {d_{\rm{p}}} * s\\ {X_{\rm{C}}} = \frac{{\left( {{u_I} - {c_{\rm{x}}}} \right) \cdot {Z_{\rm{C}}}}}{{{f_{\rm{x}}}}}\\ {Y_{\rm{C}}} = \frac{{\left( {{v_{\rm{I}}} - {c_{\rm{y}}}} \right) \cdot {Z_{\rm{C}}}}}{{{f_{\rm{y}}}}} \end{array} \right. $ (11)

2.2 地平面估计

地平面估计是后序相机外参计算的基础, 它的准确度, 决定了相机外参的准确度。在一个场景中, 会拟合出多个平面, 那么通过下面条件来判断平面是否为地平面

$ \left\{ \begin{array}{l} \theta < \frac{{\rm{ \mathsf{ π} }}}{4}\\ median\;P_{{{\rm{W}}_{\rm{I}}}}^{\rm{Z}} > \min \;P_{{{\rm{C}}_{\rm{O}}}}^{\rm{Z}} + \varepsilon \end{array} \right. $ (12)

式中, $ \theta $为相机的$ {{X}_{\text{C}}} $轴与平面的夹角, $median $是取中值的操作, $ P_{{{\text{W}}_{\text{I}}}}^{\text{Z}}$为拟合平面模型的内点$ Z $值集合, $P_{{{\text{C}}_{\text{O}}}}^{\text{Z}} $为拟合平面模型的外点$ Z $值集合, $ \varepsilon $为设定的容差值。式(12)表示两个条件:1)相机相对于平面的倾斜角不超过45°;2)根据平面计算出外参后, 将点云转换至世界坐标系下, 平面上的点集的$ Z $值最大。

根据该定义, 本文通过筛选平面, 来计算符合条件的地平面, 本文方法的流程如图 7所示。

首先输入相机坐标系下的3维点云, 利用MLESAC方法, 计算平面, 并记录满足该平面的内点集合, 利用此平面和2.2节的方法, 计算出相机的外参数, 结合相机的内参数, 将相机坐标系下的3维点云转换为世界坐标系下的3维点云, 判断此时是否满足条件式(12), 若不满足, 从点云中除去记录的内点集合, 继续拟合平面, 否则此平面为地平面, 停止, 输出相机的外参。

3 实验

3.1 实验过程

本实验使用PrimeSense相机采集视频数据, 利用Matlab平台进行仿真, 对本文算法进行验证。为了便于精度对比, 实验将彩色相机的棋盘标定结果作为基准数据。由于矩阵不宜进行比较, 实验过程中, 将外参转化为相机的高度($ H $)、侧倾角($\theta $), 通过对比3个参数来衡量标定的精度。实验按照以下步骤进行:

1) 使用PrimeSense相机采集视频数据(视频的每帧都有清晰的棋盘), 视频数据包含彩色视频和深度视频;

2) 从彩色视频中随机选择$ N\left( N>20 \right)$帧视频帧, 作为张正友相机标定方法[14]的输入, 估计出相机的内参;

3) 遍历彩色视频的每帧, 利用内参和当前帧所检测的棋盘角点估计出相机外参, 得到每帧彩色视频的相机姿势($ {{H}_{\text{chessboard}}} $, $ {{\phi }_{\text{chessboard}}}$$ {{\theta }_{\text{chessboard}}}$);

4) 遍历深度视频的每帧, 利用本文所述方法检测地平面, 并估计出相机的外参, 得到每帧深度视频的相机姿势(${{H}_{\text{plane}}} $$ {{\phi }_{\text{plane}}} $$ {{\theta }_{\text{plane}}} $), 计算每帧视频的相机高度差($ \Delta H$)、侧倾角差($ \Delta \theta $)、偏航角差($ \Delta \phi $), 计算公式为

$ \left\{ \begin{array}{l} \Delta H = {H_{{\rm{chessboard}}}} - {H_{{\rm{plane}}}}\\ \Delta \phi = {\phi _{{\rm{chessboard}}}} - {\phi _{{\rm{plane}}}}\\ \Delta \theta = {\theta _{{\rm{chessboard}}}} - {\theta _{{\rm{plane}}}} \end{array} \right. $ (13)

在实验步骤1)中, 所采集的视频格式如表 1所示。

表 1 视频参数
Table 1 Parameters of video

下载CSV
彩色视频 深度视频
视频大小/像素 320×240 320×240
帧速率/(帧/s) 30 30
时长/s 89.400 89.400
像素字节/byte 24 16
视频格式 RGB24 Mono16

视频的的每帧都含有棋盘, 如图 8, 在实验过程中, 使用棋盘估计相机外参作为基准数据, 由于在利用张正友标定方法计算相机内参的时候, 不同的棋盘, 对应着不同的内参, 因此, 重复步骤1)-3)共86次, 每幅视频帧可以估计出86种相机外参, 以其中值作为基准数据。

图 8 包含棋盘的彩色视频帧
Fig. 8 Color video frame comprising chessboard

采用的棋盘的大小是7×9, 每个棋盘长和宽均为40 mm, 利用棋盘标定相机外参的结果如图 8所示。

图 9中, $ {{\theta }_{\text{chessboard}}} $, $ {{\phi }_{\text{chessboard}}} $, $ {{H}_{\text{chessboard}}} $分别为棋盘方法所测得的相机俯仰角、侧倾角、高度的中位数;$ {{\theta }_{\text{plane}}} $, $ {{\phi }_{\text{plane}}}$, $ {{H}_{\text{plane}}} $为本文所提出的方法测得的相机俯仰角、侧倾角和高度的中位数。

图 9 棋盘标定方法结果
Fig. 9 The result of checkboard calibration method

图 10为实验所得到的误差, 表 2为最终所测得的结果。

图 10 测试结果
Fig. 10 Test result

表 2 相机外参误差统计表
Table 2 Table of extrinsic parameters error of camera

下载CSV
θ ϕ H
最大 7.48 4.89 15.22
最小 -0.75 -9.62 -1.14
平均 15.22 -3.86 3.96

3.2 误差分析

在实验中, 由于没有高精度的仪器来衡量相机的外参, 所以使用棋盘标定方法测出来的相机外参作为基准数据来衡量本方法的精度。影响本实验精度的因素有以下几点:

1) 角点检测的量化误差。由于使用的视频帧是240×320像素, 因此在计算相机内参和外参的时候, 因角点检测的量化误差较为严重的;

2) 棋盘方法测量的RGB-D相机的彩色传感器的外参, 而本方法测量则是RGB-D相机的红外相机的外参;

3) RGB-D相机扫描场景数据的噪声, 会影响地平面的检测, 进而影响相机外参的精度;

4) 地平面检测中MLESAC迭代停止的参数也会影响本实验的结果。

3.3 场景噪声对地平面检测的影响分析

RGB-D相机有诸多噪声来源(如:温度、环境光入射角度和光强、纹理等[13]), 本文采用的MLESAC可以处理微小噪声, 但不能够处理噪声过多或者数据缺失过多的场景:

1) 强阳光会造成地平面噪声点过多, 导致平面参数估计不准确, 相机的高度、侧倾角产生轻微影响;

2) 地面的反射率过高(比如:地面上放置一个镜子), 会造成该区域的数据缺失, 若缺失数据过多, 则会引起无法检测地平面, 导致无法估计出相机的外参。

为了验证噪音对相机姿势的影响, 图 11是在第929帧, 随着高斯噪音方差的增加, 相机姿势的误差变化.高斯噪声的均值为0, 方差为${{\delta }_{\text{g}}} $, 可见, 随着噪声方差的增大, 高度的误差增加, 俯仰角和侧倾角的稳定性降低, 此外, 当方差大于0.25, 则无法估计出正确的平面。

图 11 高斯噪声结果的影响
Fig. 11 The effect of noise on the result

4 结论

本文自动标定方法的原因是, 在进行基于RGB-D相机的行人检测时, 由于环境震动影响, RGB-D相机会偏移原来的位置, 外参数会发生很大变化, 直接影响检测精度;利用此种自动外参标定方法, 可以在无行人出现时自动进行外参的重新矫正, 从而解决上述提到的问题。

本文方法可适用于3D相机(散斑相机, TOF相机, 双目相机)的外参自动调整, 具有很高的可并行性, 并行实现后, 具有实时性, 可以用于移动机器人上的3D相机的外参自动标定。

本文方法从3维点云中提取平面, 利用平面与世界坐标的位置关系, 得到相机外参, 通过外参判断当前的平面是否为地平面, 如果不为地平面, 则继续使用下一平面计算外参, 直到寻找到地平面, 得到外参, 红外相机的外参数。本文给出了地平面的条件, 从而能够保证所建立的世界坐标系的正确性, 创新性地将平面检测和外参估计结合在一起, 从而达到自动外参标定的目的。本方法不需要额外的标定物, 同时是针对红外相机的标定, 标定结果可信, 并且提供本文方法的源码(https://github.com/shijieS/RGBDCameraExtrinsicCalibration.git)。

目前方法的局限性是需要场景中存在地平面, 若检测不到地平面, 则不能正常地进行标定。未来需要解决两个问题:1)提高标定的精度, 利用场景中的行人等目标, 进行精细标定;2)多个相机的外参标定, 根据多个相机拍摄的相同区域进行自动标定, 若两个相机无公共区域, 则通过设计简单的标定物, 根据标定物的几何尺寸进行自动标定。

参考文献

  • [1] Microsoft. Kinect for X-box 360[EB/OL]. 2017-01-01[2017-10-12]. http://www.xbox.com/en-US/xbox-one/accessories/kinect.
  • [2] WikiPedia. Kinect[EB/OL]. 2018-01-12[2017-08-29]. https://en.wikipedia.org/wiki/Kinect.
  • [3] Barak F, Alexander S, Meir M, et al. Depth mapping using projected patterns: US, US8493496B2[P]. 2013-07-23.
  • [4] Endres F, Hess J, Sturm J, et al. 3-D mapping with an RGB-D camera[J]. IEEE Transactions on Robotics, 2014, 30(1): 177–187. [DOI:10.1109/TRO.2013.2279412]
  • [5] Labbé M, Michaud F. Online global loop closure detection for large-scale multi-session graph-based SLAM[C]//Proceedings of 2014 IEEE/RSJ International Conference on Intelligent Robots and Systems. Chicago, IL, USA: IEEE, 2014: 2661-2666. [DOI:10.1109/IROS.2014.6942926]
  • [6] Munaro M, Basso F, Menegatti E. OpenPTrack:Open source multi-camera calibration and people tracking for RGB-D camera networks[J]. Robotics and Autonomous Systems, 2016, 75: 525–538. [DOI:10.1016/j.robot.2015.10.004]
  • [7] Munaro M, Menegatti E. Fast RGB-D people tracking for service robots[J]. Autonomous Robots, 2014, 37(3): 227–242. [DOI:10.1007/s10514-014-9385-0]
  • [8] Liao Q H, Liu M, Tai L, et al. Extrinsic calibration of 3D range finder and camera without auxiliary object or human intervention[J]. arXiv: 1703.04391, 2017. http://arxiv.org/abs/1703.04391
  • [9] Basso F, Menegatti E, Pretto A. Robust intrinsic and extrinsic calibration of RGB-D cameras[J]. arXiv: 1701.05748, 2017. http://arxiv.org/abs/1701.05748
  • [10] Zhang Z. A flexible new technique for camera calibration[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22(11): 1330–1334. [DOI:10.1109/34.888718]
  • [11] Li S B, Zhuo Q. A new approach to calibrate range image and color image from Kinect[C]//Proceedings of the 4th International Conference on Intelligent Human-Machine Systems and Cybernetics. Nanchang, Jiangxi, China: IEEE, 2012, 2(24): 252-255. [DOI:10.1109/IHMSC.2012.156]
  • [12] Torr P H S, Zisserman A. MLESAC:a new robust estimator with application to estimating image geometry[J]. Computer Vision and Image Understanding, 2000, 78(1): 138–156. [DOI:10.1006/cviu.1999.0832]
  • [13] Belhedi A, Bartoli A, Bourgeois S, et al. Noise modelling in time-of-flight sensors with application to depth noise removal and uncertainty estimation in three-dimensional measurement[J]. IET Computer Vision, 2015, 9(6): 967–977. [DOI:10.1049/iet-cvi.2014.0135]
  • [14] Zhang Z. A flexible new technique for camera calibration[J]. IEEE Transactions on pattern analysis and machine intelligence, 2000, 22(11): 1330–4. [DOI:10.1109/34.888718]