在进行单应矩阵求解等任务时,SVD 分解几乎无处不在。但很多人套完公式后仍会困惑:为什么取 V 的最后一列就能作为最终解?为了回答这个问题,本文梳理了从行列式、特征值到 SVD 解线性方程的一系列基础知识点。同时也要注意,SVD 得到的结果有时只是初始值,若想获得更高精度,通常还需借助非线性优化------这在相机内外参标定、多目相机优化、运动恢复结构、机械臂手眼标定中都非常常见。
一、行列式(Determinant)
1.1 定义与几何意义
- 2×2 矩阵:
A=abcd A = \begin{bmatrix}a & b\\c & d\end{bmatrix} A=acbd
det(A)=ad−bc \det(A) = ad - bc det(A)=ad−bc
几何意义:两个列向量张成的平行四边形的有向面积。
- 3×3 矩阵:
A=abcdefghi A = \begin{bmatrix} a & b & c\\ d & e & f\\ g & h & i \end{bmatrix} A= adgbehcfi
det(A)=a(ei−fh)−b(di−fg)+c(dh−eg) \det(A) = a(ei - fh) - b(di - fg) + c(dh - eg) det(A)=a(ei−fh)−b(di−fg)+c(dh−eg)
这是按第一行展开的结果,几何意义是三个列向量张成的平行六面体的有向体积。
1.2 关键性质
- det(A)=0\det(A) = 0det(A)=0 ⇔\Leftrightarrow⇔ 矩阵不可逆(不满秩)⇔\Leftrightarrow⇔ 列向量线性相关。
- det(A)≠0\det(A) \neq 0det(A)=0 ⇔\Leftrightarrow⇔ 矩阵可逆(满秩)。
- det(AB)=det(A)det(B)\det(AB) = \det(A)\det(B)det(AB)=det(A)det(B),det(I)=1\det(I) = 1det(I)=1,det(AT)=det(A)\det(A^T) = \det(A)det(AT)=det(A)。
1.3 为什么 det(A−λI)=0\det(A - \lambda I) = 0det(A−λI)=0 能求特征值?
特征值定义:存在非零向量 v\mathbf{v}v,使得 Av=λvA\mathbf{v} = \lambda \mathbf{v}Av=λv。
移项得 (A−λI)v=0(A - \lambda I)\mathbf{v} = 0(A−λI)v=0。
齐次方程有非零解的充要条件是系数矩阵不可逆,即:
det(A−λI)=0 \det(A - \lambda I) = 0 det(A−λI)=0
这就是特征方程。
二、特征值与特征向量
2.1 定义
对矩阵 AAA,如果存在非零向量 v\mathbf{v}v 和标量 λ\lambdaλ,使得:
Av=λv A\mathbf{v} = \lambda \mathbf{v} Av=λv
则 v\mathbf{v}v 是特征向量 ,λ\lambdaλ 是特征值(标量)。
几何意义:矩阵 AAA 作用在特征向量上,方向不变 ,长度缩放 λ\lambdaλ 倍。
2.2 求解步骤(以 2×2 为例)
A=2112 A = \begin{bmatrix}2 & 1\\1 & 2\end{bmatrix} A=2112
- 求特征值 :解 det(A−λI)=0\det(A - \lambda I) = 0det(A−λI)=0
det2−λ112−λ=(2−λ)2−1=0 \det\begin{bmatrix}2-\lambda & 1\\1 & 2-\lambda\end{bmatrix} = (2-\lambda)^2 - 1 = 0 det2−λ112−λ=(2−λ)2−1=0
(2−λ)2=1 ⟹ 2−λ=±1 ⟹ λ1=3,λ2=1 (2-\lambda)^2 = 1 \implies 2-\lambda = \pm 1 \implies \lambda_1 = 3, \lambda_2 = 1 (2−λ)2=1⟹2−λ=±1⟹λ1=3,λ2=1
- 求特征向量 :对每个 λ\lambdaλ,解 (A−λI)v=0(A - \lambda I)\mathbf{v} = 0(A−λI)v=0
对 λ1=3\lambda_1 = 3λ1=3:
−111−1v=0 ⟹ v1=v2 \begin{bmatrix}-1 & 1\\1 & -1\end{bmatrix}\mathbf{v} = 0 \implies v_1 = v_2 −111−1v=0⟹v1=v2
单位化:v1=1211\mathbf{v}_1 = \frac{1}{\sqrt{2}}\begin{bmatrix}1\\1\end{bmatrix}v1=2 111
对 λ2=1\lambda_2 = 1λ2=1:
1111v=0 ⟹ v1=−v2 \begin{bmatrix}1 & 1\\1 & 1\end{bmatrix}\mathbf{v} = 0 \implies v_1 = -v_2 1111v=0⟹v1=−v2
单位化:v2=121−1\mathbf{v}_2 = \frac{1}{\sqrt{2}}\begin{bmatrix}1\\-1\end{bmatrix}v2=2 11−1
2.3 特征值个数与维度
- n×nn \times nn×n 矩阵在复数域中恰好有 nnn 个特征值(计重数)。
- 互异特征值个数 ≤ nnn。
- 线性无关特征向量个数 ≤ nnn,等于 nnn 当且仅当可对角化。
2.4 复特征值
实矩阵可能有复特征值,总是共轭成对出现。例如旋转矩阵:
R=0−110,λ=±i R = \begin{bmatrix}0 & -1\\1 & 0\end{bmatrix}, \quad \lambda = \pm i R=01−10,λ=±i
复特征值对应旋转+缩放,在动力系统中表示振荡。
2.5 应用
- 矩阵幂 :Ak=VΛkV−1A^k = V\Lambda^k V^{-1}Ak=VΛkV−1,大特征值方向主导长期行为。
- PCA:协方差矩阵的特征值表示方差,大特征值方向保留,小特征值方向丢弃。
- 振动:特征值 = 固有频率平方。
- 稳定性:特征值实部符号决定系统稳定与否。
三、矩阵范数与条件数
3.1 向量范数
向量 y\mathbf{y}y 的欧几里得范数:
∥y∥=∑iyi2 \|\mathbf{y}\| = \sqrt{\sum_i y_i^2} ∥y∥=i∑yi2
∥y∥2=yTy=∑iyi2\|\mathbf{y}\|^2 = \mathbf{y}^T\mathbf{y} = \sum_i y_i^2∥y∥2=yTy=∑iyi2。
3.2 矩阵范数
| 范数 | 计算 | 含义 |
|---|---|---|
| ∣A∣1|A|_1∣A∣1 | 最大绝对列和 | 列方向最大放大 |
| ∣A∣∞|A|_\infty∣A∣∞ | 最大绝对行和 | 行方向最大放大 |
| ∣A∣2|A|_2∣A∣2 | 最大奇异值 σmax\sigma_{\max}σmax | 最大拉伸倍数 |
| ∣A∣F|A|_F∣A∣F | ∑aij2\sqrt{\sum a_{ij}^2}∑aij2 | 整体能量 |
3.3 条件数
κ(A)=σmaxσmin=∥A∥2⋅∥A−1∥2 \kappa(A) = \frac{\sigma_{\max}}{\sigma_{\min}} = \|A\|_2 \cdot \|A^{-1}\|_2 κ(A)=σminσmax=∥A∥2⋅∥A−1∥2
- 条件数小:良态,误差不放大。
- 条件数大:病态,误差被放大。
- 条件数 = ∞:奇异,不可逆。
几何意义:单位圆变换为椭圆,条件数 = 长轴 / 短轴。
3.4 误差放大不等式
解 Ax=bA\mathbf{x} = \mathbf{b}Ax=b,若 b\mathbf{b}b 有误差 Δb\Delta\mathbf{b}Δb,则:
∥Δx∥∥x∥≤κ(A)⋅∥Δb∥∥b∥ \frac{\|\Delta\mathbf{x}\|}{\|\mathbf{x}\|} \leq \kappa(A) \cdot \frac{\|\Delta\mathbf{b}\|}{\|\mathbf{b}\|} ∥x∥∥Δx∥≤κ(A)⋅∥b∥∥Δb∥
解的相对误差 ≤ 条件数 × 输入的相对误差。
3.5 为什么 ATAA^T AATA 的条件数是 AAA 的平方?
ATAA^T AATA 的特征值是 AAA 奇异值的平方:
κ(ATA)=σmax2σmin2=κ(A)2 \kappa(A^T A) = \frac{\sigma_{\max}^2}{\sigma_{\min}^2} = \kappa(A)^2 κ(ATA)=σmin2σmax2=κ(A)2
所以正规方程 ATAx=ATbA^T A \mathbf{x} = A^T \mathbf{b}ATAx=ATb 病态时极不稳定。
四、SVD 奇异值分解
4.1 定义
对任意 m×nm \times nm×n 矩阵 AAA:
A=UΣVT A = U \Sigma V^T A=UΣVT
- UUU:m×mm \times mm×m 正交矩阵,列向量 ui\mathbf{u}_iui 是左奇异向量。
- VVV:n×nn \times nn×n 正交矩阵,列向量 vi\mathbf{v}_ivi 是右奇异向量。
- Σ\SigmaΣ:m×nm \times nm×n 对角矩阵,对角线是奇异值 σ1≥σ2≥⋯≥0\sigma_1 \ge \sigma_2 \ge \dots \ge 0σ1≥σ2≥⋯≥0。
4.2 几何意义:转-拉-转
Ax=UΣVTx A\mathbf{x} = U \Sigma V^T \mathbf{x} Ax=UΣVTx
从右往左作用:
- VTxV^T \mathbf{x}VTx:旋转到标准方向。
- Σ\SigmaΣ:沿标准方向拉伸/压缩。
- UUU:旋转到最终方向。
4.3 核心关系 Avi=σiuiA\mathbf{v}_i = \sigma_i \mathbf{u}_iAvi=σiui 的推导
这个关系不是凭空定义的,而是从 SVD 定义 A=UΣVTA = U\Sigma V^TA=UΣVT 直接推出来的。
步骤:
从 A=UΣVTA = U \Sigma V^TA=UΣVT 出发,两边右乘 vi\mathbf{v}_ivi:
Avi=UΣVTvi A \mathbf{v}_i = U \Sigma V^T \mathbf{v}_i Avi=UΣVTvi
- 因为 VVV 是正交矩阵,VTV=IV^T V = IVTV=I,所以 VTvi=eiV^T \mathbf{v}_i = \mathbf{e}_iVTvi=ei(第 iii 个标准基向量)。
- Σ\SigmaΣ 是对角矩阵,Σei=σiei(m)\Sigma \mathbf{e}_i = \sigma_i \mathbf{e}_i^{(m)}Σei=σiei(m)(mmm 维标准基向量)。
- Uei(m)=uiU \mathbf{e}_i^{(m)} = \mathbf{u}_iUei(m)=ui(UUU 的第 iii 列)。
合并:
Avi=UΣei=U(σiei(m))=σiui A \mathbf{v}_i = U \Sigma \mathbf{e}_i = U (\sigma_i \mathbf{e}_i^{(m)}) = \sigma_i \mathbf{u}_i Avi=UΣei=U(σiei(m))=σiui
所以:
Avi=σiui \boxed{A \mathbf{v}_i = \sigma_i \mathbf{u}_i} Avi=σiui
几何意义 :矩阵 AAA 作用在右奇异向量 vi\mathbf{v}_ivi 上,方向变成左奇异向量 ui\mathbf{u}_iui,长度缩放 σi\sigma_iσi 倍。
注意 :ui\mathbf{u}_iui 是 UUU 的列向量,vi\mathbf{v}_ivi 是 VVV 的列向量。若 AAA 对称且特征值非负,则 ui=vi\mathbf{u}_i = \mathbf{v}_iui=vi。
4.4 如何求 SVD
- 计算 ATAA^T AATA(n×nn \times nn×n 对称半正定)。
- 对 ATAA^T AATA 做特征值分解:ATA=VΛVTA^T A = V \Lambda V^TATA=VΛVT。
- VVV 的列 = 右奇异向量 vi\mathbf{v}_ivi。
- 特征值 λi=σi2\lambda_i = \sigma_i^2λi=σi2。
- 奇异值 σi=λi\sigma_i = \sqrt{\lambda_i}σi=λi 。
- 左奇异向量:ui=1σiAvi\mathbf{u}_i = \frac{1}{\sigma_i} A \mathbf{v}_iui=σi1Avi。
4.5 伪逆
A+=VΣ+UT A^+ = V \Sigma^+ U^T A+=VΣ+UT
Σ+\Sigma^+Σ+ 是把非零奇异值取倒数再转置。
4.6 解线性方程
4.6.1 非齐次方程 Ax=bA\mathbf{x} = \mathbf{b}Ax=b(b≠0\mathbf{b} \neq 0b=0)
x=A+b=∑i=1ruiTbσivi \mathbf{x} = A^+ \mathbf{b} = \sum_{i=1}^r \frac{\mathbf{u}_i^T \mathbf{b}}{\sigma_i} \mathbf{v}_i x=A+b=i=1∑rσiuiTbvi
其中 rrr 是非零奇异值个数。
4.6.2 齐次方程 Ax=0A\mathbf{x} = 0Ax=0
把 x\mathbf{x}x 用右奇异向量展开:
x=c1v1+c2v2+⋯+cnvn \mathbf{x} = c_1\mathbf{v}_1 + c_2\mathbf{v}_2 + \dots + c_n\mathbf{v}_n x=c1v1+c2v2+⋯+cnvn
代入 Ax=0A\mathbf{x} = 0Ax=0,利用 Avi=σiuiA\mathbf{v}_i = \sigma_i \mathbf{u}_iAvi=σiui:
Ax=∑i=1nciσiui=0 A\mathbf{x} = \sum_{i=1}^n c_i \sigma_i \mathbf{u}_i = 0 Ax=i=1∑nciσiui=0
因为 ui\mathbf{u}_iui 是正交基,线性无关,所以每一项系数必须为零:
ciσi=0∀i c_i \sigma_i = 0 \quad \forall i ciσi=0∀i
- 若 σi≠0\sigma_i \neq 0σi=0,则 ci=0c_i = 0ci=0。
- 若 σi=0\sigma_i = 0σi=0,则 cic_ici 可任意。
所以只有零奇异值对应的系数可以非零。取最小奇异值对应的右奇异向量(即 VVV 的最后一列)作为解:
x=vn \mathbf{x} = \mathbf{v}_n x=vn
若没有零奇异值 ,则所有 ci=0c_i = 0ci=0,只有零解。但实际中取最小奇异值 对应的右奇异向量 vn\mathbf{v}_nvn,它使 ∥Ax∥=σn\|A\mathbf{x}\| = \sigma_n∥Ax∥=σn 在所有单位向量中最小,是"最接近零空间"的解。
验证 :Avn=σnunA\mathbf{v}_n = \sigma_n \mathbf{u}_nAvn=σnun。若 σn=0\sigma_n = 0σn=0,则精确为零;若 σn\sigma_nσn 很小,则近似为零。
五、线性方程求解与 SVD 应用
5.1 超定、欠定、秩亏
| 情况 | 条件 | SVD 解 |
|---|---|---|
| 方阵满秩 | m=nm=nm=n,满秩 | 精确解 |
| 超定 | m>nm > nm>n,无精确解 | 最小二乘解 |
| 欠定 | m<nm < nm<n,无穷多解 | 最小范数解 |
| 秩亏 | 不满秩 | 最小范数最小二乘解 |
5.2 具体例子:3×2 矩阵
A=100111,b=124 A = \begin{bmatrix}1 & 0\\0 & 1\\1 & 1\end{bmatrix}, \quad \mathbf{b} = \begin{bmatrix}1\\2\\4\end{bmatrix} A= 101011 ,b= 124
无精确解。SVD 求得最小二乘解:
x=4/37/3 \mathbf{x} = \begin{bmatrix}4/3\\7/3\end{bmatrix} x=4/37/3
残差 ∥Ax−b∥2=1/3\|A\mathbf{x} - \mathbf{b}\|^2 = 1/3∥Ax−b∥2=1/3。
5.3 正规方程 vs SVD
- 正规方程:ATAx=ATbA^T A \mathbf{x} = A^T \mathbf{b}ATAx=ATb,条件数平方,病态时不稳定。
- SVD:直接处理 AAA,条件数不变,稳定,可截断小奇异值。
5.4 非线性优化初值
线性方法(如 DLT)用 SVD 得到粗略解,作为非线性优化(如 Levenberg-Marquardt)的初值,最小化重投影误差。
六、非齐次方程与齐次方程的应用场景区别
6.1 数学含义的区别
-
非齐次方程 Ax=bA\mathbf{x} = \mathbf{b}Ax=b,b≠0\mathbf{b} \neq 0b=0:
- 几何上:x\mathbf{x}x 经过 AAA 变换后,要等于一个已知的非零向量。
- 目标:找到 x\mathbf{x}x,使 AxA\mathbf{x}Ax 尽可能接近 b\mathbf{b}b。
- 解的情况:可能有精确解、最小二乘解、最小范数解。
-
齐次方程 Ax=0A\mathbf{x} = 0Ax=0:
- 几何上:寻找那些被 AAA 变换后变成零的向量。
- 目标:找到 AAA 的零空间(Null Space)。
- 解的情况:如果 AAA 满秩,只有零解;如果 AAA 不满秩,有无穷多非零解,构成一个子空间。
6.2 解的性质对比
| 方面 | 非齐次 Ax=bA\mathbf{x} = \mathbf{b}Ax=b | 齐次 Ax=0A\mathbf{x} = 0Ax=0 |
|---|---|---|
| 右端项 | b≠0\mathbf{b} \neq 0b=0 | 000 |
| 解的存在性 | 可能无解、有唯一解、无穷多解 | 总有零解;有非零解当且仅当 AAA 不满秩 |
| 解的结构 | 特解 + 齐次解 | 一个线性子空间(零空间) |
| 尺度 | 解是固定的,不能任意缩放 | 解可以任意缩放(若 x\mathbf{x}x 是解,cxc\mathbf{x}cx 也是解) |
| 求解方法 | SVD 伪逆 x=∑uiTbσivi\mathbf{x} = \sum \frac{\mathbf{u}_i^T\mathbf{b}}{\sigma_i}\mathbf{v}_ix=∑σiuiTbvi | SVD 取 VVV 的最后一列 x=vn\mathbf{x} = \mathbf{v}_nx=vn |
关键区别:
- 非齐次方程的解是具体的、有尺度的。
- 齐次方程的解是方向性的、可以缩放的。所以通常需要额外约束(如 ∥x∥=1\|\mathbf{x}\|=1∥x∥=1)来确定唯一解。
6.3 应用场景的区别
6.3.1 非齐次方程的应用场景
核心特征:已知观测结果,反推系统状态或参数。
- 最小二乘拟合 :已知数据点,拟合直线 y=kx+by = kx + by=kx+b,写成 Ax=bA\mathbf{x} = \mathbf{b}Ax=b,超定,求最小二乘解。应用:线性回归、曲线拟合、信号处理。
- 图像恢复 :已知模糊图像 b\mathbf{b}b 和模糊核矩阵 AAA,求原始图像 x\mathbf{x}x,Ax=bA\mathbf{x} = \mathbf{b}Ax=b。应用:去模糊、去噪、超分辨率。
- 机器人逆运动学 :已知末端执行器的目标位置 b\mathbf{b}b,求关节角度 x\mathbf{x}x,J(x)=bJ(\mathbf{x}) = \mathbf{b}J(x)=b。应用:机械臂控制、无人机导航。
- PnP 精化:已知 3D 点和 2D 像素,求相机位姿。线性解用 DLT 得到初值后,非线性优化最小化重投影误差,每一步迭代都在解非齐次方程。应用:SLAM、AR/VR、视觉里程计。
6.3.2 齐次方程的应用场景
核心特征:寻找某种"不变性"、"内在结构"或"零空间"。
- 特征值/特征向量 :(A−λI)x=0(A - \lambda I)\mathbf{x} = 0(A−λI)x=0,给定 λ\lambdaλ,求 x\mathbf{x}x。应用:PCA、振动分析、稳定性分析。
- 计算机视觉中的 DLT :求投影矩阵 PPP 或单应矩阵 HHH 时,方程形式是 Ap=0A\mathbf{p} = 0Ap=0。应用:相机标定、单应矩阵估计、基础矩阵估计、PnP 的 DLT 阶段。
- 8 点法求基础矩阵 :Af=0A\mathbf{f} = 0Af=0,其中 f\mathbf{f}f 是基础矩阵 FFF 的 9 个元素。取 VVV 的最后一列作为解。应用:立体视觉、三维重建。
- 马尔可夫链稳态分布 :πP=π\pi P = \piπP=π,即 (PT−I)π=0(P^T - I)\pi = 0(PT−I)π=0,齐次方程,解是稳态分布。应用:PageRank、排队论、经济均衡。
- 图拉普拉斯零空间 :Lx=0L\mathbf{x} = 0Lx=0,拉普拉斯矩阵 LLL 的零空间维度等于图的连通分量个数。应用:谱聚类、图分割、社区发现。
- 零空间投影 :求与某组向量正交的方向,Ax=0A\mathbf{x} = 0Ax=0。应用:约束满足、零空间控制、冗余机器人。
6.4 为什么有时要把非齐次问题转化成齐次问题?
有时候,非齐次问题很难直接解,但可以转化成齐次问题。
- 投影矩阵求解 :原始投影关系 sp=PXs\mathbf{p} = P\mathbf{X}sp=PX 是非齐次的(因为 sss 未知),但通过交叉相乘消去 sss:p×(PX)=0\mathbf{p} \times (P\mathbf{X}) = 0p×(PX)=0,变成齐次方程 Ap=0A\mathbf{p} = 0Ap=0。
- 单应矩阵求解 :p2=Hp1\mathbf{p}_2 = H\mathbf{p}_1p2=Hp1,齐次坐标下尺度不定,交叉相乘消去尺度:p2×(Hp1)=0\mathbf{p}_2 \times (H\mathbf{p}_1) = 0p2×(Hp1)=0,变成齐次方程。
- 为什么转化:齐次方程可以用 SVD 直接求解,取最小奇异值对应的右奇异向量;非齐次方程需要知道尺度,或者需要额外约束;齐次形式统一处理尺度不确定性。
6.5 总结对比表
| 方面 | 非齐次 Ax=bA\mathbf{x} = \mathbf{b}Ax=b | 齐次 Ax=0A\mathbf{x} = 0Ax=0 |
|---|---|---|
| 右端项 | 非零 | 零 |
| 几何意义 | 已知变换结果,反推输入 | 寻找被消灭的方向 |
| 解的性质 | 具体、有尺度 | 方向性、可缩放 |
| 解的结构 | 特解 + 齐次解 | 零空间 |
| 求解方法 | SVD 伪逆求和 | SVD 最后一列 |
| 典型应用 | 最小二乘拟合、图像恢复、逆运动学、PnP 精化 | 特征值、DLT、8 点法、稳态分布、谱聚类 |
| 是否需要归一化 | 不需要 | 通常需要(如 ∣x∣=1|\mathbf{x}|=1∣x∣=1) |
| 条件数影响 | 直接放大误差 | 最小奇异值决定解的质量 |
一句话总结:
非齐次方程是"已知结果找原因",解是具体的、有尺度的;齐次方程是"找矩阵看不见的方向",解是方向性的、可缩放的。
计算机视觉中经常把非齐次问题转化成齐次问题,是为了用 SVD 统一处理尺度不确定性。两者在 SLAM、三维重建、机器学习中各有不可替代的作用。
七、单应矩阵与 8 点法:齐次方程与秩亏
7.1 单应矩阵求解
问题 :已知两组点对应 p1↔p2\mathbf{p}_1 \leftrightarrow \mathbf{p}_2p1↔p2,求 3×33\times33×3 单应矩阵 HHH:
p2∼Hp1 \mathbf{p}_2 \sim H\mathbf{p}_1 p2∼Hp1
齐次坐标下尺度不确定,交叉相乘消去尺度:
p2×(Hp1)=0 \mathbf{p}_2 \times (H\mathbf{p}_1) = 0 p2×(Hp1)=0
每对点给出 2 个方程,整理成:
Ah=0 A\mathbf{h} = 0 Ah=0
其中 h\mathbf{h}h 是 HHH 的 9 个元素组成的向量。
矩阵形状与秩:
- AAA 的大小:2n×92n \times 92n×9,nnn 为点对数。
- HHH 有 8 个自由度(9 个元素,尺度不确定减 1)。
- 至少需要 4 对点(2×4=82\times4=82×4=8 个方程)。
- 若 n=4n=4n=4,AAA 是 8×98 \times 98×9,行数 < 列数,必然不满秩。
- 若 n>4n>4n>4,理想无噪声时 AAA 的秩为 8,零空间维度为 1,仍然不满秩。
解 :取 AAA 的 SVD,最小奇异值对应的右奇异向量 v9\mathbf{v}_9v9 就是 h\mathbf{h}h,重塑成 3×33\times33×3 即 HHH。
7.2 8 点法求基础矩阵
问题 :已知两组点对应 p1↔p2\mathbf{p}_1 \leftrightarrow \mathbf{p}_2p1↔p2,求 3×33\times33×3 基础矩阵 FFF:
p2TFp1=0 \mathbf{p}_2^T F \mathbf{p}_1 = 0 p2TFp1=0
每对点给出 1 个方程,整理成:
Af=0 A\mathbf{f} = 0 Af=0
其中 f\mathbf{f}f 是 FFF 的 9 个元素组成的向量。
矩阵形状与秩:
- AAA 的大小:n×9n \times 9n×9,nnn 为点对数。
- FFF 有 7 个自由度(9 个元素,尺度不确定减 1,det(F)=0\det(F)=0det(F)=0 减 1)。
- 8 点法用 8 对点:AAA 是 8×98 \times 98×9,行数 < 列数,必然不满秩。
- 若 n>8n>8n>8,理想无噪声时 AAA 的秩为 8,零空间维度为 1,仍然不满秩。
解 :取 AAA 的 SVD,最小奇异值对应的右奇异向量 v9\mathbf{v}_9v9 就是 f\mathbf{f}f,重塑成 3×33\times33×3 即 FFF。之后强制 det(F)=0\det(F)=0det(F)=0:对 FFF 再做 SVD,最小奇异值置零,重新组合。
7.3 对比总结
| 方面 | 单应矩阵 | 基础矩阵(8 点法) |
|---|---|---|
| 方程类型 | 齐次 Ah=0A\mathbf{h}=0Ah=0 | 齐次 Af=0A\mathbf{f}=0Af=0 |
| 未知量个数 | 9(HHH 的元素) | 9(FFF 的元素) |
| 自由度 | 8 | 7 |
| 最少点对数 | 4 | 8 |
| AAA 的形状(最少点) | 8×98\times98×9 | 8×98\times98×9 |
| AAA 的秩 | 8(不满秩) | 8(不满秩) |
| 零空间维度 | 1 | 1 |
| 解 | VVV 的最后一列 | VVV 的最后一列 |
| 后处理 | 无 | 强制 det(F)=0\det(F)=0det(F)=0 |
7.4 为什么必须不满秩?
齐次方程 Ax=0A\mathbf{x}=0Ax=0 要有非零解,AAA 必须不满秩。
如果 AAA 满秩,只有零解 x=0\mathbf{x}=0x=0,没有意义。
在单应矩阵和 8 点法中:
- 未知量有 9 个,但实际自由度只有 8 或 7 个。
- 尺度不确定性导致零空间至少有一维。
- 所以 AAA 一定不满秩,零空间至少一维。
这也是为什么用 SVD 取最小奇异值对应的右奇异向量作为解。
一句话总结:
单应矩阵和 8 点法都属于齐次方程 Ax=0A\mathbf{x}=0Ax=0 的情况,AAA 都是秩亏的(不满秩),零空间维度为 1,取 VVV 的最后一列作为解。单应矩阵有 8 个自由度,8 点法的基础矩阵有 7 个自由度,都需要 SVD 求解。
八、常见疑点解答
| 疑点 | 解答 |
|---|---|
| det(A−λI)=0\det(A-\lambda I)=0det(A−λI)=0 说明 AAA 不满秩? | 只说明 A−λIA-\lambda IA−λI 不满秩,不是 AAA。 |
| λ\lambdaλ 是常数还是向量? | 标量。 |
| 特征值个数? | n×nn \times nn×n 矩阵有 nnn 个(计重数),互异≤nnn。 |
| 复特征值怎么办? | 表示旋转+缩放,成对共轭,用实 Schur 分解处理。 |
| 条件数大时哪个方向敏感? | 最小奇异值方向,除以小奇异值放大噪声。 |
| 为什么取 VVV 最后一列? | 齐次方程 Ax=0A\mathbf{x}=0Ax=0,只有零奇异值对应的系数可非零,故取最小奇异值对应的右奇异向量。 |
| ui\mathbf{u}_iui 是行还是列? | 是 UUU 的列向量。 |
| 对称矩阵为什么 ui=vi\mathbf{u}_i = \mathbf{v}_iui=vi? | 对称矩阵的 SVD 与特征值分解一致,U=VU=VU=V。 |
| 特征向量符号影响奇异值吗? | 不影响,奇异值只取决于特征值大小。 |
| Avi=σiuiA\mathbf{v}_i = \sigma_i \mathbf{u}_iAvi=σiui 怎么来的? | 从 A=UΣVTA = U\Sigma V^TA=UΣVT 右乘 vi\mathbf{v}_ivi,利用 VTvi=eiV^T\mathbf{v}_i=\mathbf{e}_iVTvi=ei、Σei=σiei\Sigma\mathbf{e}_i=\sigma_i\mathbf{e}_iΣei=σiei、Uei=uiU\mathbf{e}_i=\mathbf{u}_iUei=ui 得到。 |
| 齐次方程为什么取最小奇异值对应的右奇异向量? | 展开 x\mathbf{x}x 后,只有零奇异值对应系数可非零;若无零奇异值,取最小奇异值方向使 ∣Ax∣|A\mathbf{x}|∣Ax∣ 最小。 |
九、核心公式速查
| 概念 | 公式 |
|---|---|
| 行列式 2×2 | det(A)=ad−bc\det(A) = ad - bcdet(A)=ad−bc |
| 行列式 3×3 | det(A)=a(ei−fh)−b(di−fg)+c(dh−eg)\det(A) = a(ei-fh) - b(di-fg) + c(dh-eg)det(A)=a(ei−fh)−b(di−fg)+c(dh−eg) |
| 特征方程 | det(A−λI)=0\det(A-\lambda I) = 0det(A−λI)=0 |
| 特征值分解 | A=VΛV−1A = V\Lambda V^{-1}A=VΛV−1 |
| SVD | A=UΣVTA = U\Sigma V^TA=UΣVT |
| 核心关系 | Avi=σiuiA\mathbf{v}_i = \sigma_i \mathbf{u}_iAvi=σiui |
| 伪逆 | A+=VΣ+UTA^+ = V\Sigma^+ U^TA+=VΣ+UT |
| 非齐次解 | x=∑i=1ruiTbσivi\mathbf{x} = \sum_{i=1}^r \frac{\mathbf{u}_i^T\mathbf{b}}{\sigma_i}\mathbf{v}_ix=∑i=1rσiuiTbvi |
| 齐次解 | x=vn\mathbf{x} = \mathbf{v}_nx=vn(最小奇异值对应右奇异向量) |
| 条件数 | κ(A)=σmax/σmin\kappa(A) = \sigma_{\max}/\sigma_{\min}κ(A)=σmax/σmin |
| 误差放大 | ∣Δx∣∣x∣≤κ(A)∣Δb∣∣b∣\frac{|\Delta\mathbf{x}|}{|\mathbf{x}|} \le \kappa(A) \frac{|\Delta\mathbf{b}|}{|\mathbf{b}|}∣x∣∣Δx∣≤κ(A)∣b∣∣Δb∣ |
十、总结
- 行列式衡量线性变换对面积/体积的缩放,为零表示降维、不可逆。
- 特征值/特征向量描述矩阵在特殊方向上的缩放,是理解矩阵本质的钥匙。
- 条件数衡量矩阵对误差的敏感度,条件数大则病态,正规方程会平方条件数。
- SVD把任意矩阵分解为"转-拉-转",奇异值是非负的拉伸倍数。
- 核心关系 Avi=σiuiA\mathbf{v}_i = \sigma_i \mathbf{u}_iAvi=σiui 由 SVD 定义直接推出:vi\mathbf{v}_ivi 是输入方向,ui\mathbf{u}_iui 是输出方向,σi\sigma_iσi 是缩放倍数。
- SVD 解线性方程统一处理超定、欠定、秩亏,给出最小二乘/最小范数解,且数值稳定。
- 齐次方程 Ax=0A\mathbf{x}=0Ax=0 取 VVV 的最后一列(最小奇异值对应右奇异向量),因为展开后只有零奇异值对应系数可非零;若无零奇异值,该向量使 ∥Ax∥\|A\mathbf{x}\|∥Ax∥ 最小。
- 非齐次方程 Ax=bA\mathbf{x}=\mathbf{b}Ax=b 是"已知结果找原因",解具体且有尺度;齐次方程 Ax=0A\mathbf{x}=0Ax=0 是"找矩阵看不见的方向",解方向性且可缩放。计算机视觉中常把非齐次问题转化为齐次问题,以统一处理尺度不确定性。
- 单应矩阵和 8 点法 都属于齐次方程 Ax=0A\mathbf{x}=0Ax=0,AAA 秩亏,零空间维度为 1,取 VVV 的最后一列作为解。单应矩阵 8 个自由度,基础矩阵 7 个自由度。
这份文档涵盖了之前讨论的主要概念、例子和疑点,并补充了核心关系推导、齐次方程解法、非齐次/齐次应用场景对比,以及单应矩阵与 8 点法的详细说明。如果还有不清楚的地方,可以针对具体小节继续深入。