在计算机视觉中,如果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;
}
}
似乎是一个已知的结果。为什么会这样?它背后的直觉是什么?
答案 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_1
和C_2
。另外,让我们注意z
在C_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
内。
最后,让我们回到开发和直觉,了解为什么T
是E
的零空间,我们可以看到L
的正常只是{{ 1}}。所以,这是一个退化平面,并且3d Euclidian空间中的任何点0
都位于其上,因为w
。