我是靠谱客的博主 务实含羞草,最近开发中收集的这篇文章主要介绍三维重建中旋转矩阵与平移矩阵思想误区(转载),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_34346607/article/details/52988221

三维重建中通常要解决这样一个问题,通过设备采集系统得到一个物体不同角度下的深度数据,假设深度数据已经转换为X,Y,Z坐标,那么需要通过两帧之间的坐标计算这两帧对应的设备旋转的角度与平移量。但计算得到的旋转矩阵与平移矩阵与计算机图形学上所说的旋转与平移矩阵有一点区别。
假设第一帧中点坐标为(x1,y1,z1),第二帧中对应点坐标为(x2,y2,z2),那么他们的坐标变换公式为:

                       (x2,y2,z2)=(x1,y1,z1)* R + T 

    
    
  • 1

这里的R和T并不是从第一个坐标系C1到第二个坐标系C2的过渡矩阵C(通常是一个旋转矩阵),而是C的逆,T也不是从C1的原点到C2的原点对应的平移向量。为了更好的说清楚这件事,以二维的情况为例:

这里写图片描述

如图所示,点A是要采集的点,它在XOY坐标系下采集到的坐标为(x0,y0),当采集设备换一个角度进行采集时,在X1O1Y1下的坐标为(x1,y1),那么最后通过重建之后算出来的从(x0,y0)到(x1,y1)的转换为:

             (x1,y1)=(x0,y0)* R + T 

    
    
  • 1

这里我想说明的一点就是,计算结果里的R是从坐标系XOY到坐标系X1O1Y1的对应的旋转矩阵P的逆的转置(记为C),而T并不是直接的从O平移到O1的向量(u,v),而是 -(u,v)* C 。
事实上这件事的原理很简单,从线性代数的角度来看,O1A向量在X1O1Y1下的坐标为(x1,y1),在XOY下的坐标是OB向量对应的坐标,即(x0-u,y0-v),那么就是找同一个向量在不同基下的坐标变换,翻下书就知道:

                      (x1,y1)=(x0-u,y0-v)* C = (x0,y0)* C - (u,v)* C

    
    
  • 1

其中的C是从XOY到X1O1Y1对应的基变换的逆的转置,对应的就是上面的R,而T对应的其实是上面的式子的后面的一部分,而不是我们传统的理解上的平移向量(u,v)。

思想误区:为什么很多人会理解错误T的含义,是因为计算机图形学上提到的平移与旋转都是在同一个坐标系下进行的,也就是点A经过旋转和平移之后得到的对应点还应该在该坐标系下(也就是它的坐标值是在原坐标系下的值),而三维重建中得到两帧数据并不是在同一个坐标系下的表示,它其实是矩阵论中的线性变换,是同一个点在不同基下的表示


转载自:https://blog.csdn.net/weixin_34346607/article/details/52988221



最后

以上就是务实含羞草为你收集整理的三维重建中旋转矩阵与平移矩阵思想误区(转载)的全部内容,希望文章能够帮你解决三维重建中旋转矩阵与平移矩阵思想误区(转载)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部