模式识别之双目立体视觉---双目立体视觉相关介绍
立体视觉主要研究如何借助(多图像)成像技术从(多幅)图像里面获取场景中物体的距离(深度)信息。
双目测距——主要是利用目标点在左右两幅视图上成像的横向坐标直接存在的差异(视差)与目标点到成像平面的距离Z存在反比的关系:Z=fT/d
在OpenCV中,f的量纲是像素点,T的量纲由定标板棋盘格的实际尺寸和用户输入值确定,一般是以毫米为单位(当然为了精度提高也可以设置为0.1毫米量级),d=xl-xr的量纲也是像素点。因此分子分母约去,Z的量纲与T相同。
如下图:假设目标点在左视图中的坐标为(x,y),在左右视图上形成的视差为d,目标点在以左摄像头光心为原点的世界坐标系中的坐标为(X,Y,Z),则存在上图所示的变换矩阵Q,使得 Q*[x y d 1]’ = [X Y Z W]’
为了精确地求得某个点在三维空间里的距离Z,我们需要获得的参数有焦距f、视差d、摄像头中心距Tx。如果还需要获得X坐标和Y坐标的话,那么还需要额外知道左右像平面的坐标系与立体坐标系中原点的偏移cx和cy。其中f, Tx, cx和cy可以通过立体标定获得初始值,并通过立体校准优化,使得两个摄像头在数学上完全平行放置,并且左右摄像头的cx, cy和f相同(也就是实现图2中左右视图完全平行对准的理想形式)。而立体匹配所做的工作,就是在之前的基础上,求取最后一个变量:视差d(这个d一般需要达到亚像素精度)。从而最终完成求一个点三维坐标所需要的准备工作。在清楚了上述原理之后,我们也就知道了,所有的这几步:标定、校准和匹配,都是围绕着如何更精确地获得f, d, Tx, cx和cy而设计的
双目摄像头定标不仅要得出每个摄像头的内部参数,还需要通过标定来测量两个摄像头之间的相对位置(即右摄像头相对于左摄像头的三维平移 t 和旋转 R 参数)。
双目矫正
双目校正的作用就是要把消除畸变后的两幅图像严格地行对应,使得两幅图像的对极线恰好在同一水平线上,这样一幅图像上任意一点与其在另一幅图像上的对应点就必然具有相同的行号,只需在该行进行一维搜索即可匹配到对应点。
对极几何
对极几何是立体成像的基本几何学,其本质就是将两个针孔模型(每个摄像机就是一个针孔)和一些新的被称作极点(epipole)的感兴趣点结合起来。
极面——观测点P与两个投影中心Ol和Or确定的面
极点——投影中心的连线与两个投影面的交点
每个摄像机都有一个独立的投影中心,分别为(Ol和Or)以及相应的投影平面∏l和∏r。物理世界的点P在每个投影面上的投影点,极为Pl和Pr。新的感兴趣点叫做极点,像平面∏l(或者∏r)上的一个极点el(或者er)被定位成另一台摄像机Or(对应的,Ol)的投影中心的成像点)。有实际点P和两个极点el和er(或者投影中心Or和Ol)确定的平面叫极面。线plel和prer(投影点与对应极点之间的连线)称为极线。
从图中我们可以看到,物理世界中的一个点投影到右(或左)图像平面的时候,这个点实际上会落在沿着Or指向Pr(或者Ol指向Pl)的这条射线的任何位置上,这是因为我们不能确定摄像机坐标的法向方向点的位置,也就是说,假设点P是从右图像上看到,因为这台摄像机仅仅看到pr(P在∏r的投影),实际的点P可以是在pr和Or所在直线的任何位置。这条线直接包含了点P,但是也同样包含其他的很多点,也就是说,在一个成像仪上看到的所有可能位置的点都是穿过另一台成像仪的极点和对应点的直线图像。
以上了解了对极几何以后,可以利用其性质来使用如下规则到立体视觉中:
1) 摄像机视图内的每个3D点都包含在极面内,极面与每幅图像相交的直线是极线;
2) 给定衣服图像上的一个特征,他在另一幅图像上的匹配视图一定在对应的极线上,即“对极约束”;
3) 对极约束表明,一旦我们知道立体视觉平台的对极几何以后,对两幅图像间匹配特征的二维搜索就转变为了沿着极线的一维搜索,这不仅节省了大量的计算,还允许我们配出了许多导致虚假匹配的点;
4) 次序是保留的,如果两个点A和B在两幅成像仪上都出现,按照水平出现 在其中一个成像仪上面,那么在另一个成像仪上也是水平出现。
本征矩阵和基础矩阵
在开始对极变换之前,还需要知道本征矩阵E和基础矩阵F。本征矩阵E包含在物理空间中两个摄像机相关的旋转和平移信息如下:
立体成像的几何本质是通过本征矩阵E得到的,它包含了关于平移T和旋转R的所有信息,它们描述了一台摄像机相对另一台摄像机在全局坐标系中的相对位置,现在假设对于给定的点P,要推导点P在两个成像仪的观测位置Pl和Pr之间的关系,该关系将最终转变为本征矩阵的定义。从考虑pl和pr的关系开始,pl和pr是在两个摄像机坐标系中观察到的点的物理坐标。利用对极几何,可以将它们联系:
1) 开始选择左或右坐标开始引入计算都没有问题,但是我们选择左相机Ol为中心的坐标。在这些坐标里面,观测点的位置是Pl,而另一台摄像机的原点为T,点P在右摄像机的观测坐标(右摄像机坐标系)是Pr,Pr=R(Pl-T);
2) 引入极面,有多种方式可以描述一个平面,但对当前的目的而言,最有用的就是通过法向量n和平面上的所有点x表示:
3) 回顾向量Pl和T在极面上,因此,如果有一个向量与Pl和T都垂直(比如PlxT),那就可以用来表示求取平面公式中的n,这样,通过点T的所有可能点Pl以及包含这两个向量的方程表示为:
4) 此时,就可以通过Pl和Pr的联系来获得ql和qr之间的关系,然后通过等式Pr=R(Pl-T)将点Pr绘制到图像上,方便将等式重写为(Pl-T)=R-1Pr,代入到RT=R-1,得到:
总是可以将叉积写成矩阵相乘的形式,于是定义矩阵S为:
5) 将S表示的结果代入叉积公式,得到:
此时可以看到,RS就是我们定义的本征矩阵E,简写为:
6) 通过投影方程pl=flPl/Zl和pr=frPr/Zr简化上面的式子,并利用ZlZr/flfr分解得到最终结果为:
prT E pl=0
(ps:本征矩阵是单几何意义上的,与成像仪无关,它将左摄像机观测到的点P的物理坐标与右摄像机观测到的相同点的位置关联起来(如将pl和pr关联),从上面的式子看好像我们已知其他项就完全可确定p,但是E是一个秩亏矩阵(rank=2<3),因此方程实际上有无穷解。本征矩阵中有五个参数——三个旋转参数和两个平移参数(无缩放),以及a.行列式值为0,b.l两个非零奇异值相等的约束,因为S是反对称矩阵,R是旋转矩阵。)
基础矩阵F是将一台摄像机的像平面上的点在图像坐标(像素)上的坐标和另一台摄像机的像平面上的点关联起来(标记为ql和qr)。E包含了两台摄像机相关的所有几何信息,但是不包括摄像机本身的任何信息,但是实际处理我们一般需要的是像素坐标表示的点信息。为了找到两幅图像在像素上的对应极线的联系,就必须要引入两台摄像机的内参数信息。=:
1) 用p(像素坐标)来代替q,二者通过摄像机内参数矩阵相关联。已知q=Mp(M是摄像机内参数矩阵)或等价的p=M-1q,因此关于E的等式就变成:
2)由基础矩阵的假设,可以知道:
因此:
表面上,除了基础F操作的是图像像素坐标而E操作的是物理坐标之外,基础矩阵F与本征矩阵E没有什么差别。与E相同,基础矩阵F的秩也是2,基础矩阵F有7个参数,其中两个参数表示对极,三个参数表示两个像平面的单应矩阵(通常的4个参数中没有比例因素)。
http://blog.sina.com.cn/s/blog_5e3213f30101gcgl.html 胖妞日记
http://blog.sina.com.cn/s/blog_5e3213f30101gjq6.html 理工科数学库
http://blog.sina.com.cn/s/blog_5e3213f30101gjo2.html mit 教你如何做理工科研究生
http://blog.sina.com.cn/s/blog_5e3213f30101gjq5.html 泛函变分小结