UV视差

转自:http://blog.csdn.net/chentravelling/article/details/53671279

0.前言

因为自己的研究对象是车载视频,对于视频流中的单帧图像做目标检测、距离计算等等。看了一下相机成像原理,后来又看了几篇关于视差、UV-视差的论文: 
2002年Labayrade提出了V-disparity: 
《Real Time Obstacle Detection in Stereovision on Non Flat Road Geometry Through V-disparity Representation》 
2005年Zhencheng Hu在Labayrade的基础上提出了U-V-disparity 
《U-V-Disparity An efficient algorithm for Stereovision Based Scene Analysis》 
2010年Zhang结合U-V-disparity的障碍物检测算法: 
《An Obstacle Detection Algorithm Based on U-V Disparity Map Analysis》 
整理了一个ppt,大致内容如下。如果有问题,请海涵并指正。

1.Disparity

根据相机成像原理可知透视投影是多对一的关系,无法根据成像平面上的点确定三维空间中对应的点。

这里写图片描述

为了消除这种多对一的关系,可以利用双目摄像机: 
这里写图片描述

将左相机放在世界坐标系原点,两个相机参数都一致,结构图如下: 
这里写图片描述

2.UV-disparity

在这部分中,所有的f都等于fx/dx的值。世界坐标系位于两个相机的中间,且相机pitch角度为theta。 
根据成像原理,世界坐标系中的一点在左右相机成像平面上的投影点为右侧的公式。 
这里写图片描述 
同时,以成像平面上的principal point为原点建立一个新的坐标系UV,其实不用纠结这个坐标系,可以理解为:后面的所有公式都是基于u-u0和v-v0,相当于做了一个代换而已,从U-V视差还原到原图时,再做一次逆变换就行了。 
这里写图片描述

将图像中需要检测的一些目标,抽象成一些平面来描述,见下图: 
这里写图片描述

每个平面在三维坐标系中的表达式,以及在UV-disparity mapping中的表达式如下: 
这里写图片描述

所以,如果我们再UV-disparity mapping中能找到一条直线,那么就可以逆向找到该条直线所对应的目标,在U-disparity mapping中能找到目标在图像中所对应的行,V-disparity mapping中能找到目标在图像中对应的列。 
那么如何构建UV-disparity mapping呢? 
U-disparity mapping的列数 = V-disparity mapping 的行数 = 视差最大值+1; 
U-disparity mapping的行对应于 原始视差图的行; 
V-disparity mapping的列对应于原始视差图的列; 
V-disparity mapping中(v,d) = 原始视差图中第v行,视差为d的个数。 
例如V-disparity mapping的第i行,分别统计原始视差图的第一行中视差为0,1,2,3,4,5 的个数:0,2,0,1,1,1,以此类推。 
U-disparity mapping中(d,u) = 原始视差图中第u列,视差为d的个数。 
这里写图片描述

3.例子

数据集来自KITTI。目前只是做了:左图+右图->视差图->UV-disparity mapping。后面,需要在UV-disparity mapping中进行拟合得到直线,然后逆向获取一些障碍目标的信息。 
这里写图片描述

你可能感兴趣的:(双目视觉)