Computer vision 单应矩阵的结果表示什么?

Computer vision 单应矩阵的结果表示什么?,computer-vision,Computer Vision,我有两帧不稳定的视频。我在所有的入口点上应用了单应性。现在我得到的不同帧的合成矩阵是这样的 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 1 0 5 x x+5 0 1 0 * y =

我有两帧不稳定的视频。我在所有的入口点上应用了单应性。现在我得到的不同帧的合成矩阵是这样的

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
1 0 5     x     x+5   
0 1 0  *  y  =  y  
          1     

对角线中的类似值是什么?如何从该矩阵中检索平移分量?

从以下观察开始:单应矩阵仅按比例定义。这意味着,如果将所有矩阵系数除以或乘以相同的数字,则可以得到表示相同几何变换的矩阵。这是因为,为了将单应性应用于坐标(x,y)处的点,将其右侧的矩阵H乘以列向量[x,y,1]'(这里我使用撇号符号表示转置),然后将结果H*x=[u,v,w]'除以第三个分量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)上的值非常小,这意味着这些同音字都是(本质上)纯翻译。

各种转换涉及所有基本运算,如常数的加法、乘法、除法和加法。只有前两个可以用正则矩阵乘法建模。注意,在二维矩阵乘法中,常数的加法和(在单应性的情况下)除法是不可能表示的。添加第三个坐标(即将点转换为齐次表示)可以解决此问题。例如,如果要将常数5添加到x,可以这样做

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
1 0 5     x     x+5   
0 1 0  *  y  =  y  
          1     
请注意,矩阵是2x3,而不是2x2,坐标有三个数字,尽管它们表示二维点。此外,最后一个转换是从齐次表示转换回欧几里得表示。这样就得到了两个结果:所有运算(乘法、除法、变量加法和常数加法)都可以用矩阵乘法表示;其次,我们可以链接多个操作(通过将它们的矩阵相乘),并且仍然只有一个矩阵作为(矩阵相乘)的结果

好,现在让我们来解释单应性。单应性是更好的考虑在整个家庭的转变,从简单的复杂的。换句话说,通过将单应性系数与更简单的欧几里德变换、相似变换和仿射变换的系数的含义进行比较,更容易理解单应性系数的含义。欧氏变换是最简单的,表示空间中的刚性旋转和平移(请注意,矩阵为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  
单应性增加了另一行,将输出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