目录
纯粹的方式
所以现在我们没有M,现在我们知道,M编码所有的参数,外部参数和内部参数。所以我们应该能够从m中找到关于相机的东西,例如,焦距应该是一个固有的。或者,相机中心呢? 为了能够投影,摄像机中心,记住从世界坐标到摄像机中心的平移向量。如果我们知道平移的值,它会告诉我们摄像机中心在世界坐标系中的位置。所以我们应该能够直接从最终矩阵中得到它。我将告诉你们两种方法。一种纯粹的方式,很美,然后是简单的方式。我们从纯方法开始。这里有一个符号上的小变化只是为了把部分提出来(如图1)。okay。我们有矩阵M,我假设M,是3×4矩阵。它由这个3×3构成,我把它叫做Q b就是这个3×1,它就是一个向量。okay,我们有Q和b,我要声明中心C,这是一个点,我要用向量表示,它在零空间中。投影矩阵的。
1 2
这意味着如果你用M乘以C,它等于0。如果你找到这样一个C,那就是相机中心。你应该相信我。okay,也许你不信任我。让我告诉你为什么是这样。all right? 非常简单。除了画图是痛苦的,all right? 假设有一个以c为中心的相机,有一个平面。这里有一个点P。这是一条从P到c的射线这条射线上有一个点X(如图1)。这就是X的位置(如图2)。all right? 这就是这个方程的全部内容。
1 2
X等于某个p和c的混合,乘以p(1 -)乘以c,给定某个M,这是摄像机,投影。all right? X是MX的线性代数,投影就是λMP + 1 -λMC(如图1)。现在任何时候,P,所有的点在P的形象因此,任何点P,所有的点在这光线,不得不降落在同一点图片(如图2),okay? 所以,这里的任意一点X都会落在相同的点上,不管是什么。如果这个方程必须成立,不管是什么。它必须落在MP处因为可能是1。这意味着这个值,MC,必须等于0(如图3)。如果C是中心,MC等于0。
1 2
3
这就是为什么,我之前说过中心C可以通过找到零空间来得到。对于投影矩阵m,这不是很痛苦。
简单的方式
但是假设你真的想做一些有用的事情。最简单的方法是什么? 最简单的方法就是给出公式(如图)。
所以,如果M等于qb,就像我之前说的,那么中心就是通过取这个向量上的这个向量(如图)。
这是一个3×3,所以- Q逆是一个3×3,b是3×1,这是一个3×1(如图1),然后我添加1(如图2),这就是向量相机中心在世界坐标系。
1 2
如果我画,你看不见的那张桌子的一角,那里有一个角,如果我说这是原点,这是x,这是y,这是z(教授比手势),然后这里有一个摄像头。我看一下这里的一些点,我给出了这些点在这个坐标系中的值,然后我定位这些点,在我的像平面上。然后我做数学计算,M向量,M矩阵,然后我拿出3×3和称为Q和三个被称为b。然后我带- Q逆乘以b在一个向量,将这个相机的实际位置在那个世界坐标系统。漂亮,很酷。
多平面校准
最后,这是我告诉你们的半比特,还有另一种校准的方法,很酷。事实上,这是今天大家都在用的,因为通常你没有这些点。这是一种获取内部函数的方法,如果你知道这些棋盘放在哪里(如图),这就是外部函数。基本上你要做的就是拿一个棋盘然后移动它。你可以根据棋盘来校准摄像机。现在每个人都这么做的原因是。首先,你可以打印出棋盘必须在平面上,这很简单你可以打印出棋盘。你要确保你的打印机没有把事情搞砸,你要确保打印出来的结果是正方形就是正方形。你把它放在硬纸板或泡沫芯上。你不需要知道位置和方向来得到相机的本质。
稍后您还可以获得固有(intrinsic)。为什么每个人都用这个? 因为代码很容易在网上获得。OpenCV直接支持这一点。我们在这里列出它的MATLAB版本。如果你去张正友的网站,他就像校准医生一样。在校准方面,他为我们做了大量的工作,论文等。我还会告诉你们,你们可以做一些很酷的事情,事实上,我的一个学生,凯尔西·霍金斯做了这件事。我认为代码是公开的。如果你拿一个棋盘把它装在机器人手臂的末端。记住,机器人知道它的手臂在坐标系中的位置。如果你也知道,比如说棋盘格从末端执行器到手的偏移量。然后你能做的就是用摄像机,你可以用机器人移动棋盘,当然我们知道棋盘的3D位置,在我们拍照的每一点上。所以,通过这些棋盘的图像,你最终校准了相机到机器人的坐标系统。所以,在机器人技术中直接这样做是很酷的。
总结
这就是校准的内容。在作业中,你们会用到我们开发的直接线性校准的理论,我们会给你们那些具有点和这两点的三维位置的图像,然后你们会得到这些图像。你需要解出标定。有趣的是,你可以相对准确地恢复。在接下来的课程中,我们要做的是摆脱严格校准相机与世界的概念。相反,我们将讨论多个摄像机之间的关系,特别是从两个摄像机开始。这最终会达到,我们在立体中讨论的那个点,如果你知道摄像机之间的关系,你就能知道极线在哪里。所以基本上,如果我给你一些对应的点,你应该能够解出摄像机之间的关系,这样你就能找到那些极线。这就是我们接下来的内容要做的。
有编过程的人的代码,比那些无知的人使用的软件更有价值。