为什么翻译是必要矩阵的零向量

时间:2018-05-05 10:33:12

标签: computer-vision geometry

在计算机视觉中,如果T是基本矩阵,transpose(E)*T = 0. // or E*T=0, depending on how you define E是翻译,那么

//This is the list which length is 3 private List<BlockType> blocks; //At the beginning it was like this but not work //private List<Block> blocks; //In a function to get a block type randomly int blockNum = rand.Next(0, 3); //rand is a Random type this.cBlock = new Block(blocks[blockNum]); //cBlock is object which I use to do something about the block //The class Block goes to class Block { private List<Rectangle> _block; public List<Rectangle> block { get { return _block; } } private int _blockNum; public int blockNum { get { return _blockNum; } } public Block() { } public Block(int blockNum, List<Rectangle> block) { this._block = block; this._blockNum = blockNum; } public Block(BlockType block) { this._block = block.block; this._blockNum = block.blockNum; } } //And the BlockType is what I tried but does not work class BlockType { private List<Rectangle> _block; public List<Rectangle> block { get { return _block; } } private int _blockNum; public int blockNum { get { return _blockNum; } } public BlockType() { } public BlockType(int blockNum, List<Rectangle> block) { this._block = block; this._blockNum = blockNum; } }

似乎是一个已知的结果。为什么会这样?它背后的直觉是什么?

1 个答案:

答案 0 :(得分:1)

在谈到这背后的直觉之前,首先让我们从符号的角度回答这个问题。基本矩阵通常定义为

E=R*[T]_x

其中R是两个摄像头之间的相对旋转,T是翻译,[.]_x表示带有T的叉积矩阵。现在,很明显

E*T=R*[T]_x*T=0 //because the cross product of T with itself is null

现在,我们知道Essential矩阵的等级为2。根据秩定理,这意味着E的内核具有维度1。因此E的零空间只是alpha*T定义的空格,其中alpha是实数。

现在,让我们讨论一下直觉。我建议你在纸上画一个小图,以便更容易想象。我们请注意两个相机中心C_1C_2。另外,让我们注意zC_2的坐标系中表示的3d点,让y成为相对于C_1的坐标系表示的另一个3d点。首先,让我们自问一下基本矩阵的作用,等式y^t*E*z的含义是什么。现在,考虑由三个点L定义的平面C_1,C_2,z。为了简化操作,我们首先看一下R==Identiy的情况。在那种情况下,

y^t E * z= y^t * [T]_x * z 

在这里,[T]_x * z为您提供了平面L的法线向量,因为[T]_x只不过是C_2-C_1(或C_1-C_2,没有&# 39;对我们的目的来说真的很重要)。既然您知道L的法线向量是[T]_x * z,您可以看到y^t * [T]_x *z所做的是检查 y的程度位于 L内(如何检查一个点是否在一个平面上?你看看平面法线的点积是否为零,这就是这个代码的作用。)。

现在,如果R不是身份,该怎么办?请注意,使用L获得的[T]_x * z的法线是相对于C_2的坐标系表示的。乘以R可以转换此向量,并在C_1的引用中表达它。现在y和法线位于相同的坐标系中,您可以检查&#34;多少&#34; y位于L内。

最后,让我们回到开发和直觉,了解为什么TE的零空间,我们可以看到L的正常只是{{ 1}}。所以,这是一个退化平面,并且3d Euclidian空间中的任何点0都位于其上,因为w