深度相机Kinect2.0三维点云拼接实验(三)

概要

  Kinect2.0是微软推出的一款RGB-D相机,它即支持普通相机的拍摄,也支持脉冲测量深度信息。本系列文章基于该传感器给出基本的环境搭建、原理讲解、点云数据捕捉、三维点云拼接等开发源码,当然也会总结经验帮大家排雷避坑。本小节介绍相机外部参数相关的理论,为后续文章打基础。

刚体空间旋转的描述

  在深度相机Kinect2.0三维点云拼接实验(一)的式(6)中, P P P是在相机坐标系下的坐标,由于拼接的两幅图像是相机不同的姿态进行获取的,所以在进行拼接的时候需要通过相机的姿态信息把图像变换到同一坐标系下进行处理,所以需要一种数据格式用来描述相机坐标系的变换。描述相机在三维空间运动的数据格式有很多种比如:旋转矩阵、旋转向量、欧拉角、四元数等。这里讨论计算机易于存储的四元数格式和易于计算的旋转矩阵格式以及它们之间的相互变换,为之后的点云拼接作铺垫。

旋转矩阵

  旋转矩阵是在乘以一个向量的时候有改变向量的方向但不改变大小的效果并保持了手性的矩阵。由于推导过程比较繁琐,这里我们直接给出三维空间内绕xyz三个轴旋转时的旋转矩阵,如下图所示:
三维旋转矩阵
如果是反向旋转,就是相应旋转矩阵的逆矩阵,由于旋转矩阵是正交矩阵,也就是相应的旋转矩阵的转置矩阵。坐标系的正向旋转实际就是该坐标系里的向量绕相应的轴做反向旋转,根据上面的结论,也就是三个向量的旋转矩阵的转置矩阵。坐标系的反向旋转时正向旋转下的转置,与向量绕轴正向旋转一样。

PS: 旋转矩阵的推导,推荐3维旋转矩阵推导与助记这篇文章讲的很棒!

欧拉角

欧拉角也是一种表示三维旋转的描述方法,欧拉角的计算需要借助旋转矩阵,它的描述方式是按照绕三个轴的旋转的角度进行表示,设绕 x , y , z x,y,z x,y,z轴的旋转角度分别为 α , β , γ \alpha,\beta,\gamma α,β,γ,假设描述一个刚体旋转按照 X Y Z XYZ XYZ次序的一组欧拉角为 ( α 0 , β 0 , γ 0 ) T (\alpha_{0}, \beta_{0}, \gamma_{0})^T (α0,β0,γ0)T,同理,别的次序也一样,一共有六种次序,即:XYX、XYZ、YXZ、YXY、ZXY、ZYX。一般我们确定下描述的次序,那么就可以用三个角度来描述刚体的旋转。

四元数

旋转矩阵用矩阵的方式描述旋转便于计算机运算,但是如果按照旋转矩阵存储则会显得冗余,考虑到单位复数可以描述二维平面的旋转,那么在三维空间中可以用类似于复数的形式描述旋转,即单位四元数,它只有四个数即可描述刚体的旋转信息,所以非常适合计算机存储。四元数的格式为:
q ⃗ = w + x i + y j + z k \vec{q} = w+xi+yj+zk q =w+xi+yj+zk

假设某个旋转绕单位向量 n ⃗ = ( x 0 , y 0 , z 0 ) T \vec{n}= (x_0,y_0,z_0)^T n =(x0,y0,z0)T进行了角度为 的旋转,那么用四元数可以表示为:

q ⃗ = ( c o s θ 2 , n x s i n θ 2 , n y s s i n θ 2 , n z s i n θ 2 ) T \vec{q} = (cos\frac{\theta}{2},n_xsin\frac{\theta}{2},n_yssin\frac{\theta}{2},n_zsin\frac{\theta}{2})^T q =(cos2θ,nxsin2θ,nyssin2θ,nzsin2θ)T

刚体空间平移的描述

刚体空间的平移可以用方向+距离的方式进行描述,在 O − x y z O-xyz Oxyz空间中,用一个向量 n ⃗ = ( x 0 , y 0 , z 0 ) \vec{n}= (x_0,y_0,z_0) n =(x0,y0,z0)的方向表示平移的方向,用它的模长表示平移的距离,即距离 L = x 0 2 + y 0 2 + z 0 2 L=\sqrt{{x_0}^2+{y_0}^2+{z_0}^2} L=x02+y02+z02

总结

   获取相机外部参数的传感器有很多,如里程计、陀螺仪等,只有获取相机外参我们才知道拍摄的角度,这在后面的图像拼接非常重要。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Kinect2.0获取点云的过程可以通过以下步骤实现。首先,需要搭建相应的开发环境,包括安装Windows系统和Visual Studio 2019等软件。可以参考\[2\]中提供的源码和项目模板进行环境搭建。接下来,需要使用Kinect2.0相机进行点云图像的捕获。Kinect2.0是一款RGB-D相机,支持普通相机的拍摄和脉冲测量深度信息。可以参考\[1\]中提供的开发源码,了解Kinect2.0的原理和使用方法。在代码中,可以通过调用相应的函数获取相机的深度信息和RGB图像。最后,可以根据需要对获取的点云数据进行处理和拼接,实现三维点云的应用。 #### 引用[.reference_title] - *1* *2* [深度相机Kinect2.0三维点云拼接实验(四)](https://blog.csdn.net/qq_42144047/article/details/123449528)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Kinect2.0点云数据获取](https://blog.csdn.net/weixin_42651748/article/details/112053649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值