homography matrix

张开发
2026/5/4 18:50:07 15 分钟阅读
homography matrix
齐次坐标Homogeneous Coordinate一幅2D图像上的非齐次坐标为(x,y)而齐次坐标为(x,y,1)也可以写成(x/z,y/z,1)或(x,y,z)。齐次坐标有很多好处比如可以很清楚的确定一个点在不在直线上T(x)*I0, T表示转置矩阵还可以描述无穷远点(x,y,0)还可以把平移和旋转写到一个矩阵里具体的可去看计算机视觉中的多视图几何,i.e.,multiple view geometry in computer vision。单应性矩阵Homography Matrix两个不同视角的图像上的点对的homogeneous coordinate可以用一个射影变换projective transformation表述即x1 H*x2二维和三维的图示如下射影变换也叫“单应”--Homography“Homo”前缀就是same的意思表示“同”homography就是用同一个源产生的graphy中文译过来大概就是“单应”。因此上面式子中的矩阵H就叫单应性矩阵。上式中的x1和x2都是3*1的齐次坐标因此H是一个3*3的矩阵{h00,h01,h02;h10,h11,h12;h20,h21,h22}。然而单应矩阵的自由度是多少呢如果给定一个单应H{h_ij}给它的元素乘上同一个数a得到的的单应a*H和H作用相同因为新单应无非把齐次点x1变成了齐次点a*x1都是一回事。因此我们可以把a换成1/h22那么H就变成了只有8个自由元素的矩阵。那么需要多少个点对求解这个H呢如果需要唯一解的话需要4个点对对应8个方程去解H中的8个未知数。求解单应性矩阵先SVD奇异值分解求最小奇异值对应的奇异向量再最小二乘法优化求解两个应用例子例子1如何进行两个图像的拼接解答通过图像特征点匹配RANSAC可以获得图像之间的单应性矩阵然后把其中一个图像通过这个矩阵投影到另一个图像上就完成了基本的拼接。例子2在相机的内参数标定过程中会用到求解单应性矩阵吗对一个棋盘格拍照棋盘格的世界坐标系是用户任意设定的标定的时候默认世界坐标系就是以标定板左上角点为原点z轴垂直于标定板xoy面与标定板重合的三维直角坐标系。棋盘格的格子长度已知因此可以知道各个角点的世界坐标系坐标XYZZ0。由于Z0因此可以忽略掉Z这个维度世界坐标系中某个坐标(X,Y,Z,1)到图像坐标(x,y,1)的变换就等价于(X,Y,1)到图像坐标(x,y,1)的变换。此时的变换矩阵就由3*4变为3*3成为了单应性矩阵。因此用4个角点就可以计算H的8个参数。以不同的角度对棋盘格拍摄3张就可以得到3个H如果用张正友标定法就可以得到6个约束方程可以求解B矩阵对称矩阵的6个未知参数进而通过Cholesky分解求解出内参矩阵A的参数。单应矩阵Homography求解《从零开始学习「张氏相机标定法」一成像几何模型》中我们已经得到了像素坐标系和世界坐标系下的坐标映射关系其中u、v表示像素坐标系中的坐标s表示尺度因子fx、fy、u0、v0、γ由于制造误差产生的两个坐标轴偏斜参数通常很小表示5个相机内参Rt表示相机外参Xw、Yw、Zw假设标定棋盘位于世界坐标系中Zw0的平面表示世界坐标系中的坐标。单应性概念的引出我们在这里引入一个新的概念单应性Homography变换。可以简单的理解为它用来描述物体在世界坐标系和像素坐标系之间的位置映射关系。对应的变换矩阵称为单应性矩阵。在上述式子中单应性矩阵定义为其中M是内参矩阵。从单应矩阵定义式子来看它同时包含了相机内参和外参。单应性在计算机视觉中的应用单应性在计算机视觉领域是一个非常重要的概念它在图像校正、图像拼接、相机位姿估计、视觉SLAM等领域有非常重要的作用。1. 图像校正用单应矩阵进行图像矫正的例子如下图所示最少需要四个对应点对后面会给出原因就可以实现。2. 视角变换单应矩阵用于视角变换的例子如下图所示可以方便地将左边普通视图转换为右图的鸟瞰图。3. 图像拼接既然单应矩阵可以进行视角转换那我们把不同角度拍摄的图像都转换到同样的视角下就可以实现图像拼接了。如下图所示通过单应矩阵H可以将image1和image2都变换到同一个平面。单应矩阵用于图像拼接的例子如下所示。4. 增强现实AR平面二维标记图案marker经常用来做AR展示。根据marker不同视角下的图像可以方便的得到虚拟物体的位置姿态并进行显示如下图所示。我们假设两张图像中的对应点对齐次坐标为(x,y,1)和(x,y,1)单应矩阵H定义为则有矩阵展开后有3个等式将第3个等式代入前两个等式中可得也就是说一个点对对应两个等式。在此插入一个讨论单应矩阵H有几个自由度或许有人会说9个啊H矩阵不是9个参数吗从h11到h33总共9个。真的是这样吗实际上并不是因为这里使用的是齐次坐标系也就是说可以进行任意尺度的缩放。比如我们把hij乘以任意一个非零常数k并不改变等式结果所以实际上单应矩阵H只有8个自由度。8自由度下H计算过程有两种方法。第一种方法直接设置h331那么上述等式变为第二种方法将H添加约束条件将H矩阵模变为1如下以第2种方法用第1种也类似为例继续推导我们将如下等式包含||H||1约束:乘以分母展开得到整理得到假如我们得到了两幅图片中对应的N个点对特征点匹配对那么可以得到如下线性方程组写成矩阵形式由于单应矩阵H包含了||H||1约束因此根据上图的线性方程组8自由度的H我们至少需要4对对应的点才能计算出单应矩阵。这也回答了前面图像校正中提到的为何至少需要4个点对的根本原因。但是以上只是理论推导在真实的应用场景中我们计算的点对中都会包含噪声。比如点的位置偏差几个像素甚至出现特征点对误匹配的现象如果只使用4个点对来计算单应矩阵那会出现很大的误差。因此为了使得计算更精确一般都会使用远大于4个点对来计算单应矩阵。另外上述方程组采用直接线性解法通常很难得到最优解所以实际使用中一般会用其他优化方法如奇异值分解、Levenberg-MarquaratLM算法后续文章会介绍等进行求解。乾坤大挪移SVDLM参考大佬单应性矩阵解析与应用-CSDN博客

更多文章