立体视觉(一 概述)

何为立体视觉?

立体视觉是一种计算机视觉技术,其目的是从两幅或两幅以上的图像中推理出图像中每个像素点的深度信息。

 

立体视觉的应用领域?

机器人、辅助驾驶/无人驾驶、无人机等等。

 

立体视觉推理像素点深度的原理?

       立体视觉借鉴了人类双眼的“视差”原理,即左、右眼对于真实世界中某一物体的观测是存在差异的,我们的大脑正是利用了左、右眼的差异,使得我们能够辨识物体的远近。左、右眼的差异在立体视觉技术中,我们把它称作“视差(值)”。相应地,利用左、右图像中所有位置的视差,便可生成一幅视差图。

 

如何更好地理解视差以及视差图呢?

       我们先做个游戏,看图找不同(下面这两幅图实际是两个相机从不同位置拍摄的同一场景)。当然,由于这两幅图不同的地方太多,所以一眼便能找到很多的不同之处。我们这里来看两处明显的差异:第一,左图中最左侧的圆锥在右图中消失了;第二,左图中最右侧的杯子在右图中有明显的移位。实际上,如果我们把右下角的杯子看做一个质点,它们的水平(默认图像已做完校正和极线约束,这句看不懂可以暂时跳过,不影响理解)移位即为视差(值)。

立体视觉(一 概述)_第1张图片

       现在,对于“视差”我们已经有了一个直观的理解(这很重要!),下面可以进一步解释视差图了。刚才我们把一个完整的杯子看做一个质点,能明显看出杯子在左右的移位,那么,根据我们的直觉,可以想象对于左图像的每一个像素点在右图像中都发生了移位,理论上,左图像中每一个像素点都能在右图像中找到唯一一个像素点与之匹配,然后计算两者的水平位移差值即得到该像素点的视差,依次迭代完整幅图像的所有像素点便可获得视差图。

现在给视差图一个通俗的理解:

视差图中每一个像素点的值是空间中相机光心到某一3D点的距离成比例所赋予的值(这句话写的有点绕,回头我再调整一下语序)。

立体视觉(一 概述)_第2张图片

 

参考:

1.Stereo Vision:Algorithms and Applications, Stefano Mattoccia DEIS University of Bologna

2.Computer Vision Algorithms and Applications, Richard Szeliski May 17, 2010

3.Computer.Vision.A.Modern.Approach, .David.A..Forsyth,.Jean.Ponce,.2ed,.PH,.2012

4.Semiglobal Matching (SGM) implementation using CUDA

链接:https://github.com/luminoso/sgm_cuda

 

待更新。。。。。。

 

 

鄙人才疏学浅,希望各位不吝赐教!

你可能感兴趣的:(机器视觉)