Homography的结果矩阵表示什么?

时间:2014-03-29 17:01:19

标签: computer-vision

我有2帧不稳定的视频。我在所有内点上应用单应性。现在,我得到的不同帧的结果矩阵就像这样

0.2711   -0.0036    0.853
-0.0002    0.2719   -0.2247
0.0000   -0.0000    0.2704


0.4787   -0.0061    0.5514
0.0007    0.4798   -0.0799
0.0000   -0.0000    0.4797

对角线中的那些相似值是什么?如何从此矩阵中检索转换组件?

2 个答案:

答案 0 :(得分:0)

从以下观察开始:单应性矩阵仅按比例定义。这意味着如果将所有矩阵系数除以或相乘相同的数字,则可以获得表示相同几何变换的矩阵。这是因为,为了将单应性应用于坐标(x,y)处的点,您将其右侧的矩阵H乘以列向量[x,y,1]' (这里我用撇号表示换位),然后除以结果H * x = [u,v,w]'由第三个组成部分。因此,如果使用缩放矩阵(s * H)代替H,则最终得到[s * u,s * v,s * w],它代表相同的2D点。

所以,要了解你的矩阵发生了什么,首先将它们分成右下角:

octave:1> a = [ 
> 0.2711   -0.0036    0.853
> -0.0002    0.2719   -0.2247
> 0.0000   -0.0000    0.2704
> ];
octave:2> b=[
> 0.4787   -0.0061    0.5514
> 0.0007    0.4798   -0.0799
> 0.0000   -0.0000    0.4797];
octave:3> a/a(3,3)
ans =
1.00259  -0.01331   3.15459
-0.00074   1.00555  -0.83099
0.00000  -0.00000   1.00000
octave:4> b/b(3,3)
ans =
0.99792  -0.01272   1.14947
0.00146   1.00021  -0.16656
0.00000  -0.00000   1.00000

现在假设,两个矩阵中的第三列元素都是[0,0,1]'。然后将它应用于任何点(x,y)的效果是将其移动大约1/100单位(例如像素)。基本上,不要太多改变它。 回收第三列的实际值表明,两个矩阵基本上都是以恒定量翻译整个图像。

因此,总而言之,在对角线上具有相等的值,在指数(1,2)和(2,1)处具有非常小的值,意味着这些单应性都是(基本上)纯粹的翻译。

答案 1 :(得分:0)

各种变换涉及所有基本操作,例如加法,乘法,除法和常数的加法。只有前两个可以通过常规矩阵乘法建模。注意,添加常数,并且在Homography的情况下,除法不可能用2D中的矩阵乘法来表示。添加第三个坐标(即将点转换为齐次表示)可以解决此问题。例如,如果要将常量5添加到x,可以像这样执行此操作

1 0 5     x     x+5   
0 1 0  *  y  =  y  
          1     

请注意,矩阵为2x3,而不是2x2,坐标有三个数字,但它们代表2D点。此外,最后一次转换是从齐次转换回欧几里德式。因此,实现了两个结果:所有操作(乘法,除法,变量的加法和常数的加法)可以用矩阵乘法表示;第二,我们可以链接多个操作(通过乘以它们的矩阵),并且仍然只有一个矩阵作为结果(矩阵乘法)。

好的,现在让我们解释一下Homography。在从简单变换到复杂变换的整个变换族的背景下,更好地考虑单应性。换句话说,通过将它们与更简单的欧几里德,相似性和仿射变换的系数的含义进行比较,更容易理解Homography系数的含义。欧几里德变换是最简单的,表示空间中的刚性旋转和平移(注意矩阵是2x3)。对于2D情况,

cos(a) -sin(a) Tx 

sin(a)  cos(a) Ty

相似性增加了旋转系数的缩放。所以现在矩阵看起来像这样:

Scl*cos(a) -scl*sin(a) Tx 

Scl*sin(a)  scl*cos(a) Ty

会员转换会增加剪切力,因此旋转系数不受限制:

a11 a12 Tx  

a21 a22 Ty  

Homography添加了另一行,它将输出x和y分开(请参阅我们如何解释在上面的均匀到欧几里德坐标的过渡过程中的划分),从而引入投射性或非均匀缩放,这是一个函数点坐标。通过查看向欧几里德坐标的过渡可以更好地理解这一点。

   a11 a12 Tx    x     a11*x+a12*y+Tx    (a11*x+a12*y+Tx)/(a32*x+a32*y+a33)

   a21 a22 Ty *  y =   a21*x+a22*y+Ty -> (a21*x+a22*y+Ty)/(a32*x+a32*y+a33)

   a31 a32 a33   1     a32*x+a32*y+a33  

因此,与其他变换(例如仿射或相似性)相比,单应性具有额外的行。这个额外的行允许根据它们的坐标来缩放对象,这是形成投射性的方式。

最后,谈谈你的数字:

0.4787   -0.0061    0.5514  
0.0007    0.4798   -0.0799  
0.0000   -0.0000    0.4797  

这不是单应性!。只要查看最后一行,您将看到前两个系数为0,因此没有投射性。由于a11 = a22 ,这甚至不是仿射转换。这是一种相似变换。翻译是 Tx = 0.5514 / 0.4797且Ty = -0.0799 /0.4797