Matrix 单应矩阵中的元素意味着什么?

Matrix 单应矩阵中的元素意味着什么?,matrix,emgucv,homography,Matrix,Emgucv,Homography,我不熟悉图像处理,但我正在使用EMGU进行C#图像分析。然而,我知道单应矩阵并不是EMGU所独有的,所以也许有其他语言知识的人可以更好地解释 请(尽可能简化)有人解释一下每个元素的作用。我已经在网上查过了,但找不到一个我能完全理解的答案(正如我所说,我对这一切都有点陌生!) 我分析了两幅图像,都是二维的。因此,需要3x3矩阵来说明图像的旋转/平移。如果未检测到移动,则单应矩阵为: 100, 010, 001 我从研究(eg)中了解到: 10Tx, 01Ty, XXX 10,01位是x和y坐标的旋

我不熟悉图像处理,但我正在使用EMGU进行C#图像分析。然而,我知道单应矩阵并不是EMGU所独有的,所以也许有其他语言知识的人可以更好地解释

请(尽可能简化)有人解释一下每个元素的作用。我已经在网上查过了,但找不到一个我能完全理解的答案(正如我所说,我对这一切都有点陌生!)

我分析了两幅图像,都是二维的。因此,需要3x3矩阵来说明图像的旋转/平移。如果未检测到移动,则单应矩阵为: 100, 010, 001

我从研究(eg)中了解到: 10Tx, 01Ty, XXX

10,01位是x和y坐标的旋转。Tx和Ty位是平移运动,但XXX位是什么?这就是我不明白的?这与仿射变换有关吗?请有人解释一下: 1.如果我现在说的对的话。
2.XXX位的意思是什么

如果你掌握了矩阵乘法,就不难理解了。假设您的点
x

/a\
\b/,
您希望通过
A
旋转坐标系:

/3 4\
\5 6/
并通过
t

/2\
\2/.
后面的矩阵是仿射变换的组成部分,用于获得新的点
y

y = A*x + t = <a'; b'>T //(T means transposed).
以致

     /a'\
y' = |b'| = B*x'
     \ 1/ 
您可以从中提取
y
。让我们看看它是如何工作的。在原始转换(使用加法)中,第一步是执行乘法,即旋转部分
y\u r

y_r = A*x = <3a+4b; 5a+6b>T
正是我们所期望的。首先,计算旋转部分——加法和乘法。然后,将平移部分的x部分相加,乘以
1
——它保持不变。第二排也是一样

在第三行中,删除
a
b
(乘以
0
)。最后一部分保持不变,正好是
1
。因此,最后一行的全部内容是“删除”点的值并保留
1


因此,可以说,2x3矩阵就足够了。这在一定程度上是正确的,但有一个显著的缺点:您失去了可组合性。假设您对
B
基本满意,但希望镜像一个坐标。然后你可以选择另一个变换矩阵

    /-1 0 0\
C = | 0 1 0|
    \ 0 0 1/
并有结果

y'' = C*B*x' = <-3a+4b+2; 5a+6b+2; 1>T
y'=C*B*x'=T
由于矩阵乘法的特性,对于2x3矩阵,这种简单的乘法不能那么容易地实现

原则上,在上面,最后一行(XXX)也可以是
形式的任何其他行。它只是为了删除点值。然而,正是这样才有必要让乘法作曲起作用


最后,在这种情况下,对我来说似乎是非常有用的。

首先,仿射变换是那些保持直线的变换,并且可以是任意维数的变换

单应描述跨越两个平面的映射,或者在纯摄影机旋转过程中发生的情况


最后一行表示各种剪切(即x是x和y的函数)

对您有帮助吗?如果是这样的话,我们可以把这件事当作一个骗局来了结。不是真的。。。正如我所说,我是新手,所以你必须忍受我。。。我知道我们不能使用非平方矩阵,但我仍然不知道最后一行是做什么的?例如,在我做的研究中,它使用第三行计算了一个Z=1/tz,但我不知道这个tz是什么,因此我不知道Z是什么。@Mattb2291检查这个答案,看看单应与旋转和平移的关系,并将一个2D点投影到3D坐标。3x3矩阵在齐次坐标系中
1) a' = 3*a + 4*b + 2*1

2) b' = 5*a + 6*b + 2*1

3) the rest: 0*a + 0*b + 1*1 = 1
    /-1 0 0\
C = | 0 1 0|
    \ 0 0 1/
y'' = C*B*x' = <-3a+4b+2; 5a+6b+2; 1>T