目录
介绍
今天最后,我们来谈谈相机的校准。我们要用三维光谱来校准。最后,我们可以得到细胞的参数。如果你还记得上次,我们解出了完整的投影方程。这实际上是由平移、旋转、投影和本质构成的。今天剩下的时间里,我们不用担心M有这个内部结构,直到最后。我们这样来考虑M。那就是M(如图1)就是这个矩阵(如图1)它取世界点(如图2)和齐次坐标。最终,你会得到在齐次坐标下的像点(如图3)。我们要做的就是求出M。
1
2
3
使用已知点进行校正
从根本上说,校准的核心是要有一些点,它们在世界上的三维位置是我们知道的,我们在图像中识别它们。也就是说,我们可以找到图像上这一点和世界上这一点的对应关系。然后我们要计算某种从场景到图像的映射。你可以做的一件事是你可以把一个像这样的物体放到场景中它上面有很多点(如图)。你测量过或者你知道物体的形状你知道所有的点在哪里。
另一种方法是利用,我的意思是,这是一种相同的数学方法,但它通常被称为切除(Resectioning)(如图)。我很确定这个词来自摄影测量学(photogrammetry),摄影测量学是一门比计算机视觉早了一个世纪的科学,它讨论了图像和三维世界之间的联系,通常用于制图,制图学,诸如此类。
所以在切除(Resectioning)操作中我们要做的就是。基本思想是我们要有一些已知的点。在右边我们有一张我们实验室的照片。有一次我的一个同事在用经纬仪。这是测量师用来测量东西的工具,你知道,测量财产或房子。我们在实验室建立了经纬仪,建立了世界坐标系。你会注意到我们贴上了这些标记(如图2)。这些实际上是测量标志的打印输出。
1
2
我们所做的是测量世界上的三维位置,关于这些点的坐标系,all right? 它的作用是给出一组点,X Y z(如图1),然后,当然,给定像这样的图像(如图2),我们可以找到图像中uv的位置。
1
2
再次注意,我用的是这些点的齐次形式(如图1)。这里我叫它w,这是w u乘以w v乘以w,这是w,这是原始方程(如图2)。所以很明显,给定足够多的点和图像,我应该能够校准,恢复校准矩阵。这是如何做到的?
1
2
直接线性校准均匀性第1部分
首先,一些概念。和之前一样,我们有我们的世界乘以我们的m是我们的射影方程(如图)。注意这里有两个版本。同样,我们这里说的是uv1在投影上类似于wu wv w(如图2),实际上,为了得到uv1,我可以用wu除以w。
1
2
这就是底部写的。我所展示的是ui,对于点 i ,我要取第一行的乘积(如图2)除以第三行(如图3)。vi也是一样的,这里的重点是每一点都有一对方程。对于这里的每一点,我有一个方程,从x y z到ui,从x y z到vi,所以我们要做的是我们要用a来解这个m矩阵,一堆点。
1
2
3
继续,我只是把这些方程向上平移(如图),现在我已经完成了,只是把它展开了。你会注意到每一项都有一个m(如图)。对于那些对线性代数有所了解的人,你们应该开始担心了,因为通常当我要解一个线性方程组的时候,我希望有一项没有变量。我们一会就会看到,
所以,对于每一点,我都有这对方程,好的,像这样再写一遍(如图1)。现在的问题是如何最好地解决这个问题,all right。我用不同的方式来写。这里有所有的变量,这里有一个点的系数(如图2)。
2
注意我的系数包括大写的Xs y和Zs(如图1)。这些是世界的坐标值,还有v's 和 u's,它们是图像中的点(如图2)。
1
2
现在,从线性代数回到你的记忆中,你可能记得通常你是在解ax = b的方程,你可能有更多的方程而不是未知数,你会解出一个最小二乘解。但是有一种特殊的方程组右边被称为齐次方程组当它们都等于0时(如图)。这就是为什么这是一个齐次方程组,而不仅仅是齐次坐标。这些都是相关的。当你变得非常非常老的时候,你会明白的。但现在,你只要记住这些是齐次方程。问题是,我们如何解决这个问题? 因为很明显,有一个平凡的解。什么是平凡解? 如果a乘以x等于0,我在找一个x,不管a是什么,x等于0都是一个解。所以我可以说所有的m都等于0。这不是一个令人满意的解决方案。问题是,最好的解决方法是什么?
直接线性校准均匀性第2部分
就像我说的,这是一个齐次方程组。现在,当你有一个齐次集,比如Am = 0,我们假设你有很多方程,很明显你想做的是对m施加一些约束,因为我不想让它等于0。但在这个约束条件下,我想求出A乘以m的最小的平方值,这就是这里写的。所以我要尽量减小Am的模。现在,m只在尺度下有效。我们知道这个有几个原因,right? 一个是你可以看一下这些方程(如图),right?
因为,所有的都等于0,我可以按比例乘以m,或者我可以回到透视方程(如图)。因为很明显,如果我把所有这些ms乘以一个值,当我从齐次到非齐次,当我把uw除以w,那个比例因子就会消失。所以m只被定义为一个尺度,这个矩阵,所有的小m's。因为它只定义了一个尺度,我们假设它是一个单位向量。所以它的长度是1,问题是,要最小化Am的大小,最好的单位向量m是什么? 我会告诉你们这里的解,然后我会告诉你们它是解。你们中的一些人以前可能见过,一些人不会。
是最小化Am的解决方案,当Am作为单位向量时的大小,正如你所知道我确定的那样,因为你一直在研究这个,你想把A转置A的特征向量作为最小的特征值。当然,你会说。我一直都知道。我马上给你们看。顺便说一下,这只有当你有6个或更多的点时才有效,这应该是有意义的,right? m有多少个自由度?这里有11个,因为,这里有12个,但是只有一个大小。每个点有两个方程,所以至少需要6个点。但是,当你拥有的点越多,这个东西就越好。
编程中最没用的东西是源代码,最有用的东西是算法和数据结构。