视觉矩阵 之 单应矩阵

📅 2026/7/16 11:34:20
视觉矩阵 之 单应矩阵
一、什么是单应矩阵Homography一句话定义最重要单应矩阵是一个 3×3 矩阵用来描述“同一平面”在两幅图像之间的射影变换关系。记作二、 特征是什么矩阵形式是一个 3×3 的矩阵有 9 个元素。H[h11h12h13h21h22h23h31h32h33]H​h11​h21​h31​​h12​h22​h32​​h13​h23​h33​​​齐次坐标与尺度不变性它工作在齐次坐标下。对于一个点p₁ (x₁, y₁, 1)ᵀ齐次坐标变换后得到p₂’ H * p₁。得到的p₂’ (x₂’, y₂’, w)ᵀ不是直接的像素坐标需要转换为非齐次坐标p₂ (x₂’/w, y₂’/w, 1)。由于齐次坐标的尺度等价性单应矩阵H本身也具有尺度不变性。即H和kHk为非零标量表示的是同一个几何变换。因此H只有8 个自由度通常通过令h₃₃ 1或其他约束来固定尺度。点对应关系给定一对匹配点p₁ - p₂其关系为符号~表示“在尺度意义上相等”。可逆性如果H是从图像1到图像2的单应那么H⁻¹就是从图像2到图像1的单应。保线性单应变换是一种射影变换它保持直线的“直线性”直线变换后仍是直线但不一定保持平行性和长度比例。三、单应矩阵的数学推导从相机模型出发1️⃣ 针孔成像模型空间点 X 投影到图像2️⃣ 点在平面上设平面代入投影关系可消去深度自由度。3️⃣ 两个视角之间的关系两幅图像的点满足四、单应矩阵是如何“算出来的”https://zhuanlan.zhihu.com/p/1382662141️⃣ 基本关系这是一个线性约束2️⃣ 对每一对点得到 2 条独立方程3️⃣ 堆叠成齐次线性系统至少4 对点这是你熟悉的DLT4️⃣ 用 SVD 求解最小奇异值对应的向量五、matlab : DLT SVD 手写单应矩阵% 四对平面点 pts1 [0 0; 1 0; 1 1; 0 1]; pts2 [100 100; 300 80; 320 300; 80 280]; A []; for i 1:4 x pts1(i,1); y pts1(i,2); xp pts2(i,1); yp pts2(i,2); A [A; -x -y -1 0 0 0 x*xp y*xp xp; 0 0 0 -x -y -1 x*yp y*yp yp]; end [~,~,V] svd(A); h V(:,end); H reshape(h,3,3); H H / H(3,3) % 验证映射效果 p [0.5; 0.5; 1]; p2 H * p; p2 p2 / p2(3) disp(p2(1:2)) % MATLAB 内置函数工程推荐 tform fitgeotrans(pts1, pts2, projective); H_matlab tform.T应矩阵是描述“同一平面”在两幅图像之间射影映射关系的 3×3 矩阵它用线性方法DLT SVD求解却表达了相机运动 平面几何