本节详细介绍KITTI从图像坐标系到激光雷达坐标系的变换原理、过程和代码。
Kitti数据集的Tr_velo_to_cam矩阵是将激光雷达点云坐标变换到图像坐标系。Tr是一个3x4的矩阵,直接左乘激光雷达坐标即可得到图像坐标系中的坐标。
Tr可以认为是由旋转矩阵R和平移矩阵T组成,即表示为增广矩阵R|T。旋转矩阵R的维度是3x3,T的维度为1x3。将图像坐标系中的坐标变回激光雷达坐标系中需要用到Tr的逆矩阵。Tr逆矩阵求解方法主要有分步求解和直接求解两种。
1 分步求解
Tr矩阵的变换过程相当于:(1)用R对坐标系进行变换,将原坐标变换到新的坐标系下,R的列向量就是新的坐标系的坐标轴向量;(2)用T对变换后的坐标进行平移,平移尺度由变换后的坐标系决定。
Tr的逆矩阵相当于反向操作:(1)用R的逆矩阵进行反向变换;(2)对反向变换的坐标进行平移,平移尺度由变换后的坐标系决定,此时变换后的坐标系相当于最原始的坐标系。
因此,Tr的逆矩阵可以表示为:
根据上述分析可知,Tr的逆矩阵先通过R的逆矩阵求得反变换坐标系,然后用R^{-1}T来求得平移尺度,加上一个负号进行反向平移即可。
注意到:用于变换前后坐标系是正交的,那么R一定也是一个正交矩阵。正交矩阵的逆矩阵为其转置矩阵。因此第一种求逆方法如下:
def inverse_rigid_trans(Tr):
''' Inverse a rigid body transform matrix (3x4 as [R|t])
[R'|-R't; 0|1]
'''
inv_Tr = np.zeros_like(Tr) # 3x4
inv_Tr[0:3, 0:3] = np.transpose(Tr[0:3, 0:3])
inv_Tr[0:3, 3] = np.dot(-np.transpose(Tr[0:3, 0:3]), Tr[0:3, 3])
return inv_Tr
2 直接求解
直接求解是指直接对矩阵进行求逆运算,但是这种运算一般对应方阵。因此,在进行求逆运算时,需要把Tr矩阵增加一行[0, 0, 0, 1],进而变成4x4方阵。方法如下所示:
Tr = np.concatenate((Tr, np.array([0, 0, 0, 1]).reshape(1, 4)))
inv_Tr = np.linalg.inv()
3 结果对比
假设输入为:
array([[ 7.533745e-03, -9.999714e-01, -6.166020e-04, -4.069766e-03],
[ 1.480249e-02, 7.280733e-04, -9.998902e-01, -7.631618e-02],
[ 9.998621e-01, 7.523790e-03, 1.480755e-02, -2.717806e-01]],
dtype=float32)
分步求解的结果为:
array([[ 7.5337449e-03, 1.4802490e-02, 9.9986207e-01, 2.7290344e-01],
[-9.9997139e-01, 7.2807330e-04, 7.5237900e-03, -1.9692658e-03],
[-6.1660202e-04, -9.9989021e-01, 1.4807550e-02, -7.2285905e-02]],
dtype=float32)
直接求解的结果为:
array([[ 7.53374482e-03, 1.48024872e-02, 9.99862035e-01,
2.72903444e-01],
[-9.99971472e-01, 7.28073268e-04, 7.52379041e-03,
-1.96926581e-03],
[-6.16602039e-04, -9.99890136e-01, 1.48075518e-02,
-7.22858974e-02],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
1.00000000e+00]])
通过对比可以看到,直接求解的结果的前三行与分步求解的结果一致。文章来源:https://www.toymoban.com/news/detail-423063.html
4 python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_python三维点云重建从三维基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。https://blog.csdn.net/suiyingy/category_11740467.htmlhttps://blog.csdn.net/suiyingy/category_11740467.html1、点云格式介绍(已完成)常见点云存储方式有pcd、ply、bin、txt文件。open3d读写pcd和plhttps://blog.csdn.net/suiyingy/article/details/124017716
更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。文章来源地址https://www.toymoban.com/news/detail-423063.html
到了这里,关于【KITTI】Kitti数据集 Tr(旋转平移)矩阵求逆的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!