双目视觉原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Bumblebee 双目测量基本原理
一.双目视觉原理:
双目立体视觉三维测量是基于视差原理。
图 双目立体成像原理
其中基线距B=两摄像机的投影中心连线的距离;相机焦距为f 。
设两摄像机在同一时刻观看空间物体的同一特征点(,,)c c c P x y z ,分别在“左眼”和“右眼”上获取了点P 的图像,它们的图像坐标分别为(,)left left left p X Y =,(,)right right right p X Y =。 现两摄像机的图像在同一个平面上,则特征点P 的图像坐标Y 坐标相同,即left right Y Y Y ==,则由三角几何关系得到:
()c left c c right c c c x X f z x B X f z y Y f z ⎧=⎪⎪⎪-=⎨⎪⎪=⎪⎩ (1-1)
则视差为:left right Disparity X X =-。由此可计算出特征点P 在相机坐标系下的三维坐标为: left c c c B X x Disparity B Y y Disparity B f z Disparity ⎧=⎪⎪⎪=⎨⎪⎪=⎪⎩
(1-2) 因此,左相机像面上的任意一点只要能在右相机像面上找到对应的匹配点,就可以确定出该点的三维坐标。这种方法是完全的点对点运算,像面上所有点只要存在相应的匹配点,
就可以参与上述运算,从而获取其对应的三维坐标。
二.立体视觉测量过程
1.图像获取
(1) 单台相机移动获取
(2) 双台相机获取:可有不同位置关系(一直线上、一平面上、立体分布)
2.相机标定:确定空间坐标系中物体点同它在图像平面上像点之间的对应关系。
(1)内部参数:相机内部几何、光学参数
(2)外部参数:相机坐标系与世界坐标系的转换
3.图像预处理和特征提取
预处理:主要包括图像对比度的增强、随机噪声的去除、滤波和图像的增强、伪彩色处理等;
特征提取:常用的匹配特征主要有点状特征、线状特征和区域特征等
4.立体匹配:根据对所选特征的计算,建立特征之间的对应关系,将同一个空间物理点在不同图像中的映像点对应起来。
立体匹配有三个基本的步骤组成:1)从立体图像对中的一幅图像如左图上选择与实际物理结构相应的图像特征;2)在另一幅图像如右图中确定出同一物理结构的对应图像特征;3)确定这两个特征之间的相对位置,得到视差。其中的步骤2是实现匹配的关键。
5.深度确定
通过立体匹配得到视差图像之后,便可以确定深度图像,并恢复场景3-D信息。
三.Triclops库中的数据流程
Triclops库中的数据流程如下图所示。系统首先从相机模型中获得raw格式的图像,最终将其处理成深度图像。在系统中有两个主要的处理模块。第一个处理模块是一个应用了低通滤波、图像校正和边缘检测的预处理模块。第二个处理模块用来做立体匹配、结果确认和亚像素插值。最后的处理结果就是一幅深度图像。
1.预处理(Pre-processing)
为了校正一幅图像,事先对其进行平滑是非常重要的。所以如果要校正一幅图像,事先将低通滤波器打开是很好的方法。当然不使用低通滤波器同样可以校正图像,但校正后的图像可能会出现混淆的现象。如果要提高处理速度,可以将低通滤波器关掉。
2.校正(Rectification )
校正是用来修正镜头所产生的畸变的。在原始图像中可以看到镜头所带来的这种畸变。例如,场景中的一条直线在原始图像中会变成一条曲线,这种效果在图像的边角处尤为明显。校正就是为了修正这种类型的畸变。
进一步来讲,如果没有正确的校正,那么沿着行或者列所做的特征搜索将可能产生错误的结果。
3.边缘检测(Edge detection )
边缘检测为任选特性,它使用亮度的变化来匹配特征。当系统中的相机具有自动增益功能时,这项功能是非常有用的。如果每个相机的自动增益的变化是不一致的,那么图像间的绝对亮度是不一致的,而虽然绝对亮度是不一致的,但亮度的变化却是一个常数。因此边缘检测适用于光照有很大变化的环境当中。虽然边缘检测可以改善检测的结果,但这相当于又引入了另外的处理步骤,因此要权衡结果的改善状况和速度之间的关系来使用这项功能。
注意,确认功能仅在边缘检测模式下有效。
4.立体处理(Stereo processing )
使用绝对方差相关性计算:
[][][][]22max
min 22min m m m m d right left d d i j I x i y j I x i d y j ==-=-++-+++∑∑
其中:min d 和m ax d 是最小和最大视差(disparity )
m 是模板尺寸(mask size )
right I 和left I 是右边和左边的图像
5.视差范围(Disparity range )
视差范围是立体算法为了在两幅图像中搜寻最佳匹时,所搜寻的像素的范围。在Triclops 系统中0个像素的视差代表了无穷远处的物体。最大的视差定义了能被检测到的最近的物体。我们需要根据实际的任务来设置合适的视差范围。减小视差范围可以加快系统的运行速度,并降低误匹配的几率。
6.相关模板(Correlation mask )
相关模板是围绕着一个像素的一个正方形邻域,这个像素就是系统想要为其寻找匹配的像素。我们可以设定这个相关模板的尺寸。大的模板会产生更密集更平滑的深度图像,然而,在识别不连续深度位置的精度上会有所欠缺。另一方面,小的模板所产生的图像较为稀疏且会有更多的噪声,但在定位不连续深度的时候会有上佳的表现。
为了生成相同的结果,模板的尺寸要与被处理图像的分辨率成一定的比例。就是说为了得到具有可比性的结果,对于160x120图像的5x5的模板,对于320x240图像的时候模板要增大到9x9。模板的尺寸必须是奇数。3x3,5x5,7x7是有效的模板尺寸,而4x4,6x6,8x8则是无效的模板尺寸。Triclops提供了最大为15x15和最小为1x1的模板。另外,Triclops 中提供了一个新的用于实验的函数:troclopsSetAnyStereoMask,这个函数允许用户设置任意尺寸的相关模板。
7.确认(Validation)
在一些情况下,例如封闭的缺乏变化的质地,是无法建立图像之间的相关的。如果相关建立的不正确,那么测量的结果也就是不正确的了。为了避免不正确的测量,系统引入了两个确认的方法:
●质地确认(Texture validation)是基于相关模板的质地的水平的,它决定了视差值是否
有效。如果质地的水平不足以产生一个正确的匹配,这个像素就会被声明为无效。
●唯一性确认(Uniqueness validation)是指对于一个特定像素的最佳匹配和这个相关模板
下的其他匹配比起来是不是足够好。即使相关模板的质地满足要求,由于封闭的原因,可能还是得不到正确的匹配。如果相关的结果不足够强,这个像素就会被声明为无效。
用户可以设定两个阈值来控制确认的严格程度—一个是质地另一个是唯一性。