关于Homography的一些思考

搬运自我的CSDN https://blog.csdn.net/u013213111/article/details/101233824

1 DoF of Homography

参考:
南京师大 高等几何 第19课 25'

追根溯源,还是去看高等几何/解析几何吧。

对于一个二维射影homography 3*3矩阵
\[ H = \left[ \begin{matrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\h_{31} & h_{32} & h_{33} \end{matrix} \right] \]
虽然有9个元素,但并不是要求出每一个元素具体的值,而只需要得到这些元素的比例关系即可,得到比例关系就确定了homography,因此就减去了一个*度。

那么假如\(h_{33} \neq 0\),一种将\(H\)进行参数归一化的方法就是可以将每一个元素除以\(h_{33}\),经过这样的处理,原本的\(h_{33}\)就变为了1,剩下的是8个未知的比值,只要求解出这8个比值即可,即8个*度。其实理论上也不一定要用\(h_{33}\),虽然一般都用这个,毕竟其他元素还挺有可能为0的。

BTW,what if \(h_{33} = 0\)?如果将方程列出来,可以发现这是一个将\((0,0,w)\)点(也就是原点)映射到\((x,y,0)\)点(也就是无穷远点)的射影。然而恕余愚钝,并想象不出这会是个什么样的射影。

除了以\(h_{33}\)作为一个“基准值”来进行归一化,还有一种方式是以\(\sum h_{ij}^2 = 1\)作为约束,或者说是以\((\sum h_{ij}^2)^{1/2} = 1\)作为约束,也就是矩阵的L2范数或者又称Euclidean范数 OR Frobenius范数。这就是以矩阵的“长度”作为基准值进行归一化。

由于Homography的DoF为8,因此认为用4对点即可求解出一个Homography。
再回到高等几何中,有这样的定理:

任一二维射影对应可由已知四对对应点(每一方四点中无三点共线)唯一确定。

因此在计算机视觉中采用4对点去确定一个homography在数学上是有依据的!
作为一个完美主义强迫症患者表示对这个结果感到很满意。

2 平行线与无穷远点

参考:
Projective Transformations
关于Homography的一些思考
假设\(w=1\)是射影平面,\(ax+by+c_1=0\) 和 \(ax+by+c_2=0\)是该平面上的两条平行线,怎么理解这两条平行线的交点是无穷远点呢?
注意到射影平面上的每一个点都与3D空间中过射影中心的一条直线相对应,那么这两条平行线也就分别对应于3D空间中的两个平面,而这两个平面的交线,也就是\(w=0\) 这个平面上的直线\(ax+by=0\),根据射影几何中的定义,这条直线便与无穷远点相对应。

上一篇:c – OpenCV:来自decomposeHomographyMat的奇怪旋转和平移矩阵


下一篇:如何从C#中的3×3同构矩阵获取旋转,平移,剪切