自由度的理解

自由度

在 SLAM 算法里,我们会经常看到自由度这个概念,例如单应矩阵的自由度是8,基础矩阵的自由度是7,但是用旋转矩阵表达的旋转的自由度却是3。我一开始也很迷茫,什么是自由度啊?后面就慢慢理解了一点。

自由度,可以理解为独立信息的维度。下面是一个例子:

小明考了三门课程,语文、数学和英语,三门课程( n = 3 n = 3 n=3)的平均分是60分( x ˉ = 60 \bar{x} = 60 xˉ=60)。我们需要求三门课程的分数分别是多少。

在这个问题下,自由度 F 是多少?

3 吗?不是,是 2。为什么?

由于存在条件 x ˉ \bar{x} xˉ 的限制,在我们猜三门分数的时候,只能猜两门课程的分数。为什么?

因为有条件 x ˉ = 60 \bar{x} = 60 xˉ=60 的约束,我们固定两门分数时,第三门一定是也固定下来的。因此自由度 F = 2 F=2 F=2

一般的情况下,自由度等于变量个数减1, F = n − 1 F = n -1 F=n1

例如计算方差的公式:

S 2 = ∑ ( x i − x ˉ ) 2 n − 1 S^2 = \frac{\sum(x_i - \bar{x})^2}{n-1} S2=n1(xixˉ)2

右式的分母是自由度, F = n − 1 F = n - 1 F=n1

为什么是 n − 1 n - 1 n1 而不是 n n n?

因为分子存在平均值 x ˉ \bar{x} xˉ,已经用掉了一个自由度。因此,剩下的有用信息是n-1维,而不是n维。

单应矩阵

单应矩阵的推导以后写吧,这里直接给出矩阵形式的求解公式:

[ 0 0 0 − u 1 − v 1 − 1 u 1 v 2 v 1 v 2 v 2 u 1 v 1 1 0 0 0 − u 1 u 2 − v 1 u 2 − u 2 ] [ h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 ] = 0 \begin{bmatrix}0 & 0 & 0 & -u_1 & -v_1 & -1 & u_1v_2 & v_1v_2 & v_2 \\ u_1 & v_1 & 1 & 0 & 0 & 0 & -u_1u_2 & -v_1u_2 & -u_2 \end{bmatrix} \begin{bmatrix}h_1 \\ h_2 \\ h_3 \\ h_4 \\ h_5 \\ h_6 \\ h_7 \\ h_8 \\h_9 \end{bmatrix} = 0 [0u10v101u10v1010u1v2u1u2v1v2v1u2v2u2] h1h2h3h4h5h6h7h8h9 =0

单应矩阵 H 3 x 3 H_{3x3} H3x3 一共有 9 个元素,那么它的自由度是多少呢?

公式左右两边同时乘以一个不为 0 的数,公式都恒成立。这叫尺度等价性,这里固定了一个自由度,因此单应矩阵的自由度 F = 9 − 1 = 8 F = 9 - 1 = 8 F=91=8

自由度是 8,因此需要提供 8 个值进行解算,然后一对匹配点可以通过 2 个值,因此只需要 4 对匹配点就可以解算单应矩阵。见单应矩阵应用,就是用了 4 对点进行计算。

基础矩阵

基础矩阵的矩阵形式求解公式如下:

[ u 1 u 2 v 1 u 2 u 2 u 1 v 2 v 1 v 2 v 2 u 1 v 1 1 ] [ f 1 f 2 f 3 f 4 f 5 f 6 f 7 f 8 f 9 ] = 0 \begin{bmatrix} u_1u_2 & v_1u_2 & u_2 & u_1v_2 & v_1v_2 & v_2 & u_1 & v_1 & 1 \end{bmatrix} \begin{bmatrix} f_1 \\ f_2 \\ f_3 \\ f_4 \\ f_5 \\ f_6 \\ f_7 \\ f_8 \\f_9 \end{bmatrix} = 0 [u1u2v1u2u2u1v2v1v2v2u1v11] f1f2f3f4f5f6f7f8f9 =0

基础矩阵 F 3 x 3 F_{3x3} F3x3 一共有 9 个元素,但是它有两个约束:

  1. 尺度等价性
  2. 基础矩阵的秩为2

因此,基础矩阵的自由度为 9 − 2 = 7 9 - 2 = 7 92=7

因此,最少7对匹配点就可以算出基础矩阵,但是在ORB_SLAM里用了 8 对点。计算方法可见:基础矩阵计算

其他碎碎念

旋转矩阵表示的旋转,自由度是 3 ,但是旋转矩阵有 9 个元素,因此旋转矩阵是冗余的。

但是如果只用 3 个元素表达旋转,例如旋转向量和欧拉角,存在奇异性,有些时候会丢失一个自由度。

因此表达 3 个自由度的旋转,最少需要 4 个元素,SLAM里用的就是大名鼎鼎的 四元数

本质矩阵 E 3 x 3 E_{3x3} E3x3也有9个元素,但是它的自由度为5。为什么?

E = t × R E = t \times R E=t×R,其中平移有3个自由度,而旋转也有3个自由度,因此6个值便可以固定一个本质矩阵。

但是由于 P ~ c 1 T E P ~ c 2 = 0 \tilde{P}_{c1}^T E \tilde{P}_{c2} = 0 P~c1TEP~c2=0对极几何的约束,基础矩阵也存在尺度等价性,因此自由度等于3 + 3 - 1 = 5

大佬的笔记

大佬的网易云笔记
b站视频:自由度的解释

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值