视觉SLAM笔记(8) 齐次坐标
1. 线性关系
视觉SLAM笔记(6) 欧氏变换 中
完整地表达了欧氏空间的旋转与平移
不过还存在一个小问题:这里的变换关系不是一个线性关系
假设进行了两次变换: R1,t1 和 R2,t2,满足:
但是从 a 到 c 的变换为:
这样的形式在变换多次之后会过于复杂
2. 齐次坐标和变换矩阵
因此,要引入齐次坐标和变换矩阵重写式:
这是一个数学技巧:把一个三维向量的末尾添加 1,变成了四维向量,称为齐次坐标
对于这个四维向量,可以把旋转和平移写在一个矩阵里面,使得整个关系变成了线性关系
该式中,矩阵 T 称为 变换矩阵(Transform Matrix)
暂时用
表示 a 的齐次坐标
2.1. 齐次坐标
稍微来说一下齐次坐标,它是 射影几何 里的概念
通过添加最后一维,用四个实数描述了一个三维向量
这显然多了一个自由度,但允许把变换写成线性的形式
在齐次坐标中,某个点 x 的每个分量同乘一个非零常数 k 后, 仍然表示的是同一个点
因此,一个点的具体坐标值不是唯一的
如 [1,1,1,1]T 和 [2,2,2,2]T 是同一个点
但当最后一项不为零时,总可以把所有坐标除以最后一项,强制最后一项为 1
从而得到一个点唯一的坐标表示(也就是转换成非齐次坐标):
这时,忽略掉最后一项,这个点的坐标和欧氏空间就是一样的
依靠齐次坐标和变换矩阵,两次变换的累加就可以有很好的形式:
但是区分齐次和非齐次坐标的符号挺厌烦的
在不引起歧义的情况下,以后就直接把它写成 b = T a 的样子
默认其中是齐次坐标了
2.2. 变换矩阵
关于变换矩阵 T,它具有比较特别的结构:
左上角为旋转矩阵,右侧为平移向量,左下角为 0 向量,右下角为 1
这种矩阵又称为 特殊欧氏群(Special Euclidean Group):
与 SO(3) 一样,求解该矩阵的逆表示一个反向的变换:
最后,为了保持符号的简洁,在不引起歧义的情况下,
以后不区别齐次坐标与普通的坐标的符号, 默认使用的是符合运算法则的那一种
例如,当写
时,使用的是齐次坐标(不然没法计算)
而写
时,使用的是非齐次坐标
如果写在一个等式中,就假设齐次坐标到普通坐标的转换,是已经做好了的
因为齐次坐标和非齐次坐标之间的转换事实上非常容易
回顾一下介绍的内容:
-
视觉SLAM笔记(6) 坐标系 说了向量和它的坐标表示,并介绍了向量间的运算
-
视觉SLAM笔记(7) 欧氏变换 说了坐标系之间的运动由欧氏变换描述,它由平移和旋转组成
旋转可以由旋转矩阵 (3) 描述,而平移直接由一个 3 向量描述 -
如果将平移和旋转放在一个矩阵中,就形成了变换矩阵 (3)
参考:
相关推荐:
视觉SLAM笔记(7) 欧氏变换
视觉SLAM笔记(6) 坐标系
视觉SLAM笔记(5) 编程基础
视觉SLAM笔记(4) SLAM的数学表述
视觉SLAM笔记(3) 视觉SLAM框架
谢谢!
转载:https://blog.csdn.net/qq_32618327/article/details/101020851