三维重建中旋转矩阵与平移矩阵思想误区


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

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

这里的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 

这里我想说明的一点就是,计算结果里的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

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

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

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值