多台Azure Kinect配准与三维重建点云融合

文章介绍了如何同步多台AzureKinect设备,包括菊花链和星形配置,并强调了设备间正确通信的重要性。接着,详细讨论了设备的配准过程,特别是张正友标定法在多摄像头标定中的应用。最后,阐述了多设备3维空间信息重建的步骤,强调了点云融合和外参在三维重建中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文章讲解 多台Azure Kinect配准与三维重建点云融合 的相关理论及思路,相关代码将免费开源至github,敬请期待。


一、同步多台设备

在进行多相机或者双相机的数据采集时,为了使得各相机所捕获的每一帧数据都是同一时刻的场景,因此需要对各个相机间进行同步操作。当有多个Kinect Azure设备同时连接时,需将它们分成master属性(主设备)和subordinate属性(从属设备)两种,其中主设备有且只有一个,剩下的全部为从属设备。
每个 Azure Kinect DK 设备附带 3.5 毫米同步端口(输入同步和输出同步),可将多个设备链接在一起。 连接设备后,软件可以协调设备之间的触发定时。 需要注意的是,“同步输入”和“同步输出”插孔需要拆下Azure Kinect DK外部塑料盖才能看到。
同步的配置有两种,可使用以下任一方法来完成设备配置:
菊花链配置。 同步一个主设备以及最多八个从属设备。在菊花链配置中连接 Azure Kinect DK 设备步骤:

  1. 将每个 Azure Kinect DK 连接到电源。
  2. 将每个设备连接到其自身的主机。
  3. 选择一个设备充当主设备,并将 3.5 毫米音频线插入该设备输出同步端口。
  4. 将该线缆的另一端插入第一个从属设备的输入同步端口。
  5. 若要连接另一个设备,请将另一根线缆插入第一个从属设备的输出同步端口,以及下一个设备的输入同步端口。
  6. 重复上述步骤,直到所有设备都已连接。 最后一个设备应连接了一根线缆。 其输出同步端口应该是空的。
    在这里插入图片描述
    星形配置。 同步一个主设备以及最多两个从属设备。在星形配置中连接 Azure Kinect DK 设备步骤:
  7. 将每个 Azure Kinect DK 连接到电源。
  8. 将每个设备连接到其自身的主机。
  9. 选择一个设备充当主设备,将耳机分线器的单体端插入其输出同步端口。
  10. 将 3.5 毫米音频线连接到耳机分线器的“分接”端。
  11. 将每根线缆的另一端插入某个从属设备的输入同步端口。
    在这里插入图片描述
    触发器源必须使用 3.5 毫米音频线将信号传送到主设备的输入同步端口。线缆长度应小于 10 米,可以是立体声或单声道音频线。可以使用立体声或单声道音频线。 Azure Kinect DK 会将音频线连接器的所有套管和套环短接到一起,并将其接地。 如下图所示,设备只从连接器尖端接收同步信号。

在这里插入图片描述
实际采集场景可如下所示:
在这里插入图片描述每个Azure Kinect DK可以连接至不同的主机,也可以全部连接至同一台主机。可以根据设备的使用方式以及通过 USB 连接传输的数据量使用专用主机控制器。
注意:每个连接设备的软件必须配置为以主模式或从属模式运行。使用外部同步时,始终应先启动从属相机,然后再启动主相机,这样才能正常调整时间戳。
连接设备完成后简单地验证设备是否已连接并可通信,步骤如下:

  1. 打开 Azure Kinect 查看器的两个实例。
  2. 在“打开设备”下,选择要测试的从属设备的序列号。
  3. 在“外部同步”下,选择“从属设备”。选择“开始”。
  4. 启动从属设备后,使用 Azure Kinect 查看器的另一实例打开主设备。
  5. 在“外部同步”下,选择“主设备”。选择“开始”。
  6. Azure Kinect主设备启动后,Azure Kinect查看器两个实例应显示图像。
    除此之外,也可以自己编写代码完成多台设备的同步采集。

二、配准多台设备

验证设备可正确通信后,接下来可对其进行校准,以便在单个域中生成图像。
在单个设备中,深度相机和 RGB 相机已经过出厂校准,可以协同工作。 但是,如果必须一同使用多个设备,则必须对这些设备进行校准,以确定如何将图像从捕获它时所在的相机域转换为用于处理图像的相机域。
目的:多摄像机转移矩阵的标定可以将多摄像机人体姿态转移到同一空间坐标。多摄像头的标定是为了通过标定技术获取两个或更多摄像头的相机坐标之间的旋转平移矩阵。
方案:目前使用的比较多的标定方法是张正友标定法(黑白棋盘格标定)。对于单个传感器而言,该方法可以计算传感器的内参、畸变参数以及传感器坐标系和世界坐标系之间的外参。对于两个传感器而言,可以计算它们之间的外参。
简而言之,配准就是一个用各种方法寻找相机间的旋转矩阵的过程。
配准之前,需要了解以下知识:

2.1 四个坐标系

世界坐标系:即物体在真实的物理环境所在坐标系。
相机坐标系:即以相机的的中心点为原点而建立的坐标系。相机的光轴通过该原点,且为该坐标系的Z轴。
图像坐标系:即所获得的图像所在的坐标系,图像的中心即为该坐标系的原点。需要注意的是,相机的光轴也通过图像坐标系的原点。
像素坐标系:即以图像的左上角(或者左下角)为原点的坐标系举个例子,CCD传感上上面的8mm x 6mm,转换到像素大小是640x480. 假如dx表示像素坐标系中每个像素的物理大小就是1/80. 也就是说毫米与像素点的之间关系是piexl/mm.需要注意的是,像素坐标系中的点,以像素来表示,而非距离单位。像素坐标系与图像坐标系均在像平面上,范围与图片尺寸有关。
相机坐标系和图像物理坐标系:
在这里插入图片描述其中点X为相机坐标系下的现实世界中的点,XYZ为像机坐标系,xyz为图像坐标系,右图为正视图,f代表相机的焦距。
四个坐标系的叠加:
在这里插入图片描述

2.2 世界坐标系到相机坐标系

在这里插入图片描述

旋转变换:在这里插入图片描述
平移变换:
在这里插入图片描述

2.3 相机坐标系到图像物理坐标系

在这里插入图片描述

2.4 图像物理坐标系到像素坐标系

在这里插入图片描述
坐标系变换的总结

在这里插入图片描述

2.5 张正友标定

张正友相机标定法是张正友教授1998年提出的单平面棋盘格的相机标定方法。传统标定法的标定板是需要三维的,需要非常精确,这很难制作,而张正友教授提出的方法介于传统标定法和自标定法之间,但克服了传统标定法需要的高精度标定物的缺点,而仅需使用一个打印出来的棋盘格就可以。同时也相对于自标定而言,提高精度,便于操作。因此张氏标定法被广泛应用于计算机视觉方面。
在这里插入图片描述
已知相机的内参和外参,将他们重新表示为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
容易发现B是一个对称阵,所以B的有效元素就剩下6个,即

在这里插入图片描述
通过至少含一个棋盘格的三幅图像,应用上述公式我们就可以估算出B了。得到B后,我们通过cholesky分解 ,就可以得到摄相机机的内参阵A的六个自由度,即:
在这里插入图片描述
在这里插入图片描述且R具有正交性和归一性,所以

在这里插入图片描述
此处K等于上述的A,一个H矩阵可以提供两个方程,对于5自由度的A,至少需要三幅图片可以求解。但上述的推导结果是基于理想情况下的解,由于可能存在高斯噪声,所以使用最大似然估计进行优化。采用更多的图片(20幅有效图片),每幅图片有更多角点(8*6棋盘格)。
根据上述原理可以求得单个传感器的外参,分别求出两个设备的颜色传感器的外参,就可以计算出两个颜色传感器间的外参。

2.6 实际操作
可以通过opencv库实现相机标定。使用opencv库实现相机标定的步骤如下:

  1. 相机获取一帧图像,由图像格式转为Mat矩阵
  2. 利用findChessboardCorners()函数识别图像中的棋盘格角点位置drawChessboardCorners()函数可以查看识别的角点位置是否准确
  3. 当有足够多张图后,调用calibrateCamera()以获取单相机的内外参和畸变系数;调用stereoCalibrate()以获取双相机间的外参(R、t)。
    Microsoft 提供了使用 OpenCV 方法的 GitHub 绿屏代码示例。 此代码示例的自述文件提供了有关校准设备的更多详细信息和说明。
    在这里插入图片描述

三、多台设备3维空间信息重建

此处建议录制视频与生成点云是分开的。 这样做的好处有两点:一是在具体操作时发现如果二者并行,采集速度将会是龟速。二是这里的kinect即使替换为任意的RGB-D相机,该程序仍然可以运行。
Kinect Azure通过k4a_device_get_calibration函数可以获取各传感器的内参以及它们之间的外参,并存放在k4a_calibration_t数据类型中,方便使用者直接获取数据。在SDK提供的各函数接口中,会通过k4a_transformation_create函数将k4a_calibration_t数据类型转换成k4a_transformation_t类型后进行使用。换句话说,直接使用SDK提供的函数时用k4a_transformation_t类型,需要读取内外参具体数据时用k4a_calibration_t类型。
通过k4a_transformation_color_image_to_depth_camera函数可以获取到深度图像上每个像素对应的彩色值,并保存在同分辨率的transformation_color_image图像中。通过k4a_transformation_depth_image_to_point_cloud函数可以获取到深度图像上每个像素对应的点云坐标。最后遍历每个像素点,将对应的点云坐标和彩色数据写在构造的color_point_t结构体中作为一个彩色点,排除数据异常点后,所有被写在vector向量中的点即为单相机获得的单帧点云数据。可以使用PCL点云库生成点云。
得到单个相机的点云后,将所有点云进行融合,根据第二步配准得到的外参,我们可以将不同视角的点云融合至同一视角,达到三维重建的效果。
三维重建点云融合流程如下图:

在这里插入图片描述


总结

以上就是今天要讲的内容,本文章讲解 多台Azure Kinect配准与三维重建点云融合 的相关理论及思路,相关代码将免费开源至github,敬请期待。

<think>嗯,用户想了解联合标定在传感器融合或相机校中的应用。首先,我需要明确联合标定的定义,可能是指多个传感器之间的协同标定。根据提供的引用,传感器标定是自动驾驶的基础,尤其是多传感器融合需要确定坐标关系[^1]。那联合标定应该就是同时标定多个传感器的内外参数,确保它们的数据在统一坐标系下对齐。 接下来,用户可能想知道具体的实现方法。引用中提到LidarCamera的外参标定,这可能涉及到点云和图像的对齐[^2]。另外,在线标定在车辆运行时动态修正参数,不使用标定板,难度更大[^3]。所以联合标定可能分为离线和在线两种方式。 然后,应用场景方面,自动驾驶中的多传感器融合肯定需要联合标定,比如相机、雷达、IMU等。可能需要解释不同传感器之间标定的步骤,比如如何利用标定板或自然特征点,以及在线标定如何利用环境中的物体进行实时调整。 用户可能还关心技术难点,比如时间同步、数据、误差评估等。需要结合引用中的内容,比如在线标定因振动或碰撞导致参数变化,如何动态修正[^3]。此外,标定的数学方法,比如坐标变换矩阵、优化算法(如非线性最小二乘法)可能也是重点。 需要确保回答结构清晰,分点说明概念、方法、应用和挑战。同时,生成的相关问题要引导用户深入思考,比如联合标定单一标定的区别,在线标定的算法,或标定误差的影响。还要注意使用正确的中文术语和LaTeX格式,比如坐标变换矩阵用$$...$$表示,变量用$...$。 最后,检查引用是否正确插入,例如标定作为多传感器融合的基础,LidarCamera标定的参考链接,在线标定的挑战[^3]。确保回答真实可靠,不遗漏关键点。</think>### 联合标定的概念应用 **联合标定**指同时对多个传感器的内外参数进行标定,确保不同传感器(如相机、激光雷达、毫米波雷达等)的测量数据在统一坐标系下对齐,实现多模态数据融合。其在传感器融合和相机校中的核心作用包括: 1. **坐标系对齐**:确定传感器间的相对位姿(旋转矩阵 $R$ 和平移向量 $t$),例如激光雷达点云相机图像的像素坐标映射关系。 2. **数据融合基础**:消除因传感器安装位置或视角差异导致的误差,提升感知精度(如自动驾驶中的障碍物检测)[^3]。 3. **动态修正能力**:在线标定可实时调整参数,应对因振动、碰撞引起的传感器位姿变化。 --- ### 实现方法 #### 1. **离线联合标定** - **标定板法**: 使用棋盘格或ArUco码等标定板,通过多传感器同步采集标定板数据,解算外参。例如: - **相机激光雷达标定**:提取标定板角点的图像坐标和点云坐标,通过最小化重投影误差求解 $R$ 和 $t$。 - **多相机联合标定**:基于共视区域的特征匹,建立多相机间的几何约束。 - **自然特征法**: 利用环境中稳定特征(如建筑物边缘、地面平面)建立传感器间的关联,适用于无标定板场景。 #### 2. **在线联合标定** - **运动约束法**: 通过车辆运动轨迹(如IMU数据或轮速里程计)建立传感器间的运动一致性约束,动态优化外参。 - **环境特征跟踪**: 利用动态场景中的稳定物体(如车道线、静止障碍物)作为标定参考,实时更新外参。 #### 数学表达 传感器间的坐标变换可表示为: $$ P_{\text{target}} = R \cdot P_{\text{source}} + t $$ 其中 $P_{\text{source}}$ 和 $P_{\text{target}}$ 分别为同一物理点在两个传感器坐标系下的坐标。 --- ### 应用场景 1. **自动驾驶**: - 激光雷达相机融合:通过标定外参,将点云投影到图像辅助目标检测。 - 多雷达联合标定:消除盲区,提升360°感知能力。 2. **机器人导航**: - IMU相机标定:实现视觉惯性里程计(VIO)。 3. **工业检测**: - 多视角相机标定:用于三维重建或高精度测量。 --- ### 挑战优化 - **数据同步**:传感器采集频率差异需通过硬件同步或时间戳插值解决。 - **非线性优化**:外参标定常转化为非线性最小二乘问题,需使用Levenberg-Marquardt等算法。 - **鲁棒性**:在线标定需应对动态干扰(如移动物体遮挡标定特征)。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值