双目立体视觉知识分享~(二)

Dears~

昨天忘了。。。。。想起来的时候已经离电脑很远,于是少了一天,T T

今天来说说对极几何,对极几何其实原理很简单哒。

先看图(还是模仿《学习OpenCV》中改进的):

双目立体视觉知识分享~(二)

首先呢,假设世界坐标系下有一点P

那么在两透视平面,也就是投影平面,也就是图像平面上,就会分别得到像点pl和pr(公式打上来太麻烦)

极点来自于两个摄像头他们自身,右摄像头在左摄像头的图像平面内的投影点为左摄像头的极点el,反之一样。

那么此时就可以建立像图中这样的关系:极平面与透视平面交于极线。

极线是干嘛的呀,好吃么?

极线确定了一种关系,叫做对极约束。对极约束确定了:如果我们已知两摄像头位置,也就是得到极点el和er,得到透视平面位置,由一点P,我们就可以确定极平面的位置。那么,点P在左成像平面上点pl的匹配点,一定在极平面与右相机透视平面相交所产生的极线上(在图中就是pr啦)。

对极约束确立之后,双目匹配就可以由原来漫无目的的二维搜索,变为一维搜索,更容易找到匹配点啦。

双目标定做的是什么呢?

双目标定,是相当于把两相机的成像平面强行扭成重合的,并且让两相机的极线掰对齐,把对不齐的切掉,这样我们就在一条水平线上搜索匹配点就好啦!(好看又好用)

本来就想结束了,但一想,这样讲得讲到明年,于是今天加餐,说说双目标定!

双目标定的目的上面已经说了(好像很近= =),现在标定工具的步骤一般是:

  1. 单目标定(内参,外参,畸变)
  2. 双目矫正(用单目标定的结果,将外参由相机与目标位置世界坐标系关系变为两摄像头之间的关系,好长)

这里必须要提到的是,标定方法一般都是选用非常非常非常给力和广泛的 张正友标定法!(致敬)

标定工具一般这仨

  1. OpenCV的一系列函数,findchessboardcorner(),calibrateCamera2(),stereoRectify(),remap()等等这一类的一大堆函数,优点是写好了不用手动操作了,推荐先造个*,运行程序自动开始拍照标定。
  2. matlab标定工具箱,这个比较简单吧,打开以后从左到右一个按钮一个按钮的点,在图像里点下角点什么的也就行了,教程一大堆,原本也简单。
  3. matlab 应用程序 里面的标定工具箱,这个我在2014版本里是有,估计没人用更老版本的matlab了,所以应该都有,这个更方便,不用点角点,直接把图片放进去,全自动的。

目前以我的经验看,第二个标定结果会比较好,并且与OpenCV的标定参数通用,OpenCV自己的标定或多或少有一些问题(应该不是OpenCV的问题,而是我标定flag选的不好吧= =),第三个与OpenCV的结果,没法直接匹配(校正后效果没一次好的)。所以推荐第二种,得到结果后再放进OpenCV里面进行下一步处理(om向量做一个罗德里格斯变换生成R,其它的都一样)。

累了= =

就这吧今天,感觉今天讲的还是没啥用的东西= =。

Yours

Richsheep