SLAM:单应矩阵,本质矩阵,基本矩阵详解和对应的c++实现
单应矩阵(Homography Matrix)
单应矩阵(Homography Matrix)是计算机视觉中描述同一平面在不同视角下投影变换的核心工具,广泛应用于图像校正、拼接、虚拟广告牌替换等场景。以下从原理、求解方法和C++实现三方面展开详解:
一、单应矩阵的数学原理
-
定义与作用
单应矩阵是3×3的齐次矩阵,满足关系:
s ⋅ x ′ = H ⋅ x s \cdot \mathbf{x}' = \mathbf{H} \cdot \mathbf{x} s⋅x′=H⋅x
其中, x \mathbf{x} x和 x ′ \mathbf{x}' x′分别为同一平面点在不同图像中的齐次坐标,(s)为尺度因子。单应矩阵通过内参矩阵( K K K)、旋转矩阵( R R R)、平移向量( t t t)及平面法向量( n \mathbf{n} n)共同决定:
H = K ⋅ ( R + t ⋅ n T d ) ⋅ K − 1 \mathbf{H} = K \cdot (R + \frac{t \cdot \mathbf{n}^T}{d}) \cdot K^{-1} H=K⋅(R+dt⋅nT)⋅K−1
((d)为平面到相机的距离) -
关键特性
- 自由度:8(因齐次坐标的尺度不变性,需归一化)。
- 应用场景:
- 图像矫正(如银行卡正视图生成)
- 相机标定(张氏标定法)
- 增强现实(虚拟物体贴合平面)
二、单应矩阵的求解方法
1. 直接线性变换(DLT)
步骤:
- 匹配点对:选取4对以上平面点(像素坐标),满足 x i ′ = H ⋅ x i \mathbf{x}'_i = \mathbf{H} \cdot \mathbf{x}_i xi′=H⋅xi。
- 构建方程:每对点生成2个方程,如:
{ x i ′ = h 11 x i + h 12 y i + h 13 h 31 x i + h 32 y i + h 33 y i ′ = h 21 x i + h 22 y i + h 23 h 31 x i + h 32 y i + h 33 \begin{cases} x'_i = \frac{h_{11}x_i + h_{12}y_i + h_{13}}{h_{31}x_i + h_{32}y_i + h_{33}} \\ y'_i = \frac{h_{21}x_i + h_{22}y_i + h_{23}}{h_{31}x_i + h_{32}y_i + h_{33}} \end{cases} {xi′=h31xi+h32yi+h33h11xi+h12yi+h13yi′=h31xi+h32yi+h33h21xi+h