概要
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

本文探讨了Kinect2.0相机的外部参数如何通过旋转矩阵、欧拉角和四元数进行描述,重点介绍了这些数据格式在三维点云拼接中的应用,以及它们之间的转换。理解这些概念对于相机姿态估计和图像融合至关重要。
&spm=1001.2101.3001.5002&articleId=121891732&d=1&t=3&u=c36e1bd01a7c4d45be995c3c9eb6ca53)
6899

被折叠的 条评论
为什么被折叠?



