差距

(不推荐)立体图像之间的视差图

差距不推荐使用。采用disparityBM要么disparitySGM代替。欲了解更多信息,请参阅兼容性注意事项

描述

disparityMap=视差(I1I2返回视差图,disparityMap,对于一对立体图像,I1I2

disparityMap=视差(I1I2名称,值通过使用一个或多个提供了视差算法的附加控制名称,值对参数。

例子

全部收缩

加载图像,并将其转换为灰度。

I1 = imread('scene_left.png');I2 = imread('scene_right.png');

显示立体浮雕。利用红蓝立体眼镜可以观看图像中的3-d。

图imshow(stereoAnaglyph(I1,I2));标题(“立体图像的红 - 蓝绿色复合视图”);

计算视差图。

disparityRange = [-6 10];disparityMap =视差(rgb2gray(I1),rgb2gray(I 2),'BLOCKSIZE'...15,'DisparityRange',disparityRange);

显示视差图。为了更好的可视化,使用视差范围作为显示范围imshow。

图imshow(disparityMap,disparityRange);标题(“差异图”);颜色表(GCA,喷射)彩条

输入参数

全部收缩

输入图像作为参考I1对应于照相机1,在2-d指定的灰度。该立体图像,I1I2必须予以纠正,使得对应点位于同一行。您可以执行此整改与rectifyStereoImages功能。

您可以通过设置类的功能完善的速度I1I2UINT8和列数由4,输入图像是可分I1I2必须是真实的,有限的,非稀疏。他们必须是同一类。

数据类型:UINT8|UINT16|INT16||

输入图像作为参考I2对应于照相机2,在2-d指定的灰度。输入图像必须纠正,使得对应点位于同一行。您可以通过设置类的功能完善的速度I1I2UINT8和列数由4,输入图像是可分I1I2必须是真实的,有限的,非稀疏。他们必须是同一类。

数据类型:UINT8|UINT16|INT16||

名称 - 值对参数

指定可选的用逗号分隔的对名称,值参数。名称是参数的名称和是对应的值。名称必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:'方法'“块匹配”,指定'方法'属性设置为“块匹配”

视差估计算法,指定为逗号分隔的一对组成的“方法',要么“块匹配”要么“半全局”。悬殊的功能实现基本块匹配[1]和半球状块匹配[3]算法。在里面“块匹配”方法,通过比较在图像中的每个像素块的绝对差和(SAD)的总和的函数计算视差。在里面“半全局”匹配的方法,所述函数还迫使上相邻块类似的差异。这种额外的限制导致一个更完整的差估计比“块匹配”方法。

算法执行以下步骤:

  1. 通过使用Sobel滤波器计算的图像的对比度的量度。

  2. 计算在每个像素的差距I1

  3. 视差图的标记元素,disparityMap,那些没有可靠的计算。该函数使用 -realmax'单')来标记这些元素。

视差的范围,指定为逗号分隔的一对组成的“DisparityRange'和两元件矢量。两个元素向量必须是格式为[MinDisparityMaxDisparity]。两个元件必须是整数,并且可以是负的。MinDisparityMaxDisparity必须是在范围[ -图像宽度图像宽度]。和...之间的不同MaxDisparityMinDisparity必须整除16DisparityRange必须是真实的,有限的,非稀疏。如果摄像头用于拍摄I1是对相机的使用采取正确I2, 然后MinDisparity必须为负。

该视差范围取决于两个照相机和摄像机和感兴趣的物体之间的距离之间的距离。增加DisparityRange当摄像机相距很远或物体接近相机。要确定您的配置合理的差距,显示在输入图像的立体浮雕imtool并使用距离工具来衡量对相应的点之间的距离。修改MaxDisparity以对应于测量值。

正方形块大小,指定为逗号分隔的一对组成的“BLOCKSIZE'和在范围[5,255]的奇整数。此值设置为方形块大小的宽度。该函数使用的像素的正方形块之间的比较I1I2BLOCKSIZE必须是真实的,有限的,非稀疏。

对比阈值范围内,指定为逗号分隔的一对组成的“ContrastThreshold'和在范围(0,1]标量值。对比阈值定义的对比度值的可接受范围,增加该参数导致更少的像素被标记为不可靠的。ContrastThreshold必须是真实的,有限的,非稀疏。

唯一性的最小值,指定为逗号分隔的一对组成的“UniquenessThreshold'和非负整数。增加的功能标记更不可靠像素这个参数的结果。当用于像素的唯一性值低,计算了它的视差是不太可靠的。设置门槛0禁用唯一性阈值。UniquenessThreshold必须是真实的,有限的,非稀疏。

功能定义的唯一性为最佳视差估计的比率和小于最佳视差估计。例如:

ķ是最好的估计差距,并让V是相应的SAD(绝对的萨姆差)值。
考虑V因为在整个视差范围最小SAD值,v因为在整个视差范围最小SAD值,不包括ķķ-1,ķ+1。
如果v<V*(1+0.01*UniquenessThreshold),则该函数标记的视差的像素是不可靠的。

对于两点间左到右图像检查最大距离,指定为逗号分隔的一对组成的“DistanceThreshold'和非负整数。增加较少的像素这个参数结果被标记为不可靠的。相反,当你降低了距离阈值,可以增加视差图的可靠性。您可以将此参数设置为空矩阵[]禁用它。DistanceThreshold必须是真实的,有限的,非稀疏。

距离阈值指定的点之间的最大距离I1和相同点从发现I2。该函数发现的距离和标记以下面的方式在像素:

p1在图像中的点一世1
步骤1:点的搜索功能p1的图像最佳匹配一世2(左到右的检查),并且得到点p2
第2步:功能搜索p2的图像最佳匹配一世1(从右至左检查),并且得到点p3
如果搜索返回的距离p1p3比...更棒DistanceThreshold,功能标记的差距为点p1为不可靠的。

最小纹理阈值,指定为逗号分隔的一对组成的“TextureThreshold'和在范围[0,1)的标量值。纹理阈值定义为一个像素是可靠的最小纹理值。越低,纹理像素的块时,较不可靠的所计算的视差对于像素。增加更多的像素这个参数结果被标记为不可靠的。您可以设置此参数0禁用它。此参数仅适用于当您设置方法“块匹配”

一个像素的结构被定义为饱和的对比度上计算总和BLOCKSIZE-通过-BLOCKSIZE窗口的像素周围。该函数考虑计算用于像素不可靠的和标记它的视差,当纹理低于由下式定义的值:

质地<X*TextureThreshold*BLOCKSIZE2

X表示由类输入图像的支持的最大值,金宝appI1I2

TextureThreshold必须是真实的,有限的,非稀疏。

输出参数

全部收缩

视差图的一对立体图像的,返回一个中号-通过-ñ2-d灰度图像。该函数返回视差图具有相同的大小作为输入图像,I1I2。输出的每个元素指定的图像的引用作为对应像素的视差I1。返回的差异值四舍五入为 1 16 个像素。

该函数计算的三个步骤视差图:

  1. 通过使用Sobel滤波器计算的图像的对比度的量度。

  2. 通过使用块匹配和的绝对差之和(SAD)计算每个像素的视差。

  3. 或者,标记包含不可靠的差异值的像素。该函数将像素返回的值 -realmax(”“)。

提示

如果你得到的视差图的外观嘈杂,尝试修改DisparityRange。该视差范围取决于两个照相机和摄像机和感兴趣的物体之间的距离之间的距离。增加DisparityRange当摄像机相距很远或物体接近相机。要确定您的配置合理的差距,显示在输入图像的立体浮雕imtool并使用距离工具来衡量对相应的点之间的距离。修改MaxDisparity以对应于测量值。

兼容性注意事项

展开全部

不推荐在R2019a开始

参考

[1] Konolige,K.,小型视觉系统:硬件与实现,第八届国际研讨会在机器人研究论文集,203-212,1997页。

[2] Bradski,G。和A. Kaehler,学习OpenCV的:计算机视觉与OpenCV库,奥赖利,塞瓦斯托波尔,CA,2008年。

[3] Hirschmuller,H.,通过半全局匹配和相互信息的准确性和高效立体声处理,国际计算机视觉与模式识别,2005年。

扩展功能

介绍了在R2011b