> 文章列表 > 自由度的理解

自由度的理解

自由度的理解

自由度

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

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

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

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

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

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

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

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

例如计算方差的公式:

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

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

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

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

单应矩阵

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

[000−u1−v1−1u1v2v1v2v2u1v11000−u1u2−v1u2−u2][h1h2h3h4h5h6h7h8h9]=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

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

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

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

基础矩阵

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

[u1u2v1u2u2u1v2v1v2v2u1v11][f1f2f3f4f5f6f7f8f9]=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

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

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

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

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

其他碎碎念

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

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

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

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

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

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

大佬的笔记

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