主要内容

差距

(不推荐)差距立体影像之间的映射

差距不推荐。使用disparityBMdisparitySGM代替。有关更多信息,请参见兼容性的考虑

描述

例子

disparityMap=差异(I1,I2)返回地图,差距disparityMap为一对立体影像,I1I2

disparityMap=差异(I1,I2,名称,值)提供了额外的控制差异算法通过使用一个或多个名称,值对参数。

例子

全部折叠

加载图片和将其转换成灰度。

I1 = imread (“scene_left.png”);I2 = imread (“scene_right.png”);

显示立体浮雕。使用red-cyan立体眼镜在三维显示图像。

图imshow (stereoAnaglyph (I1、I2));标题(“立体影像的Red-cyan复合视图”);

图包含一个坐标轴对象。坐标轴对象与标题Red-cyan立体影像的复合视图包含一个类型的对象的形象。

计算差异映射。

disparityRange = 10 [6];disparityMap =差距(rgb2gray (I1) rgb2gray (I2),“BlockSize”,15日,“DisparityRange”,disparityRange);

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

图imshow (disparityMap disparityRange);标题(“差距地图”);colormap colorbar (gca、飞机)

图包含一个坐标轴对象。坐标轴对象与标题差距图包含一个类型的对象的形象。

输入参数

全部折叠

输入图像引用I1中指定相应的相机1,二维灰度。立体影像,I1I2,必须纠正的对应点位于同一排。可以执行这个整改rectifyStereoImages函数。

你可以提高速度的函数通过设置类I1I2uint8,被4整除的列数。输入的图像I1I2必须是真实的,有限的,和nonsparse。他们必须是相同的类。

数据类型:uint8|uint16|int16||

输入图像引用I2中指定相应的相机2,二维灰度。输入图像必须纠正,这样对应点位于同一排。你可以提高速度的函数通过设置类I1I2uint8,被4整除的列数。输入的图像I1I2必须是真实的,有限的,和nonsparse。他们必须是相同的类。

数据类型:uint8|uint16|int16||

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“方法”,“BlockMatching”,指定了“方法”属性被设置为“BlockMatching”

视差估计算法,指定为逗号分隔两人组成的“方法”,要么“BlockMatching”“SemiGlobal”。差异函数实现了基本块匹配[1]和Semi-Global块匹配[3]算法。在“BlockMatching”方法,函数计算差异通过比较绝对差异的总和(SAD)中每个像素块的图像。在“SemiGlobal”匹配方法,函数另外部队类似的差距在邻近的街区。这些额外的约束导致一个更完整的差异估计比“BlockMatching”方法。

算法执行这些步骤:

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

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

  3. 马克的元素差异图,disparityMap,没有可靠地计算。函数使用,最大浮点数(“单一”为了纪念这些元素。

范围的差异,指定为逗号分隔两人组成的“DisparityRange和一个双元素向量。二极向量必须的格式(MinDisparity,MaxDisparity]。这两个元素必须是整数,可以是负的。MinDisparityMaxDisparity必须在区间[-图像的宽度,图像的宽度]。之间的区别MaxDisparityMinDisparity必须整除16DisparityRange必须是真实的,有限的,和nonsparse。如果相机使用I1是正确的使用的相机I2,然后MinDisparity必须是负的。

差异范围取决于两个摄像头之间的距离和相机之间的距离和感兴趣的对象。增加了DisparityRange当摄像机远或接近摄像机的对象。确定一个合理的配置差异,显示输入图像的立体浮雕图像查看器应用程序和使用工具的距离来衡量对对应点之间的距离。修改MaxDisparity对应的测量。

广场的块大小,指定为逗号分隔两人组成的“BlockSize”和一个奇数的范围[5255]。这个值设置宽度的正方形块大小。的函数使用方形块像素之间的比较I1I2BlockSize必须是真实的,有限的,和nonsparse。

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

最小值的唯一性,指定为逗号分隔两人组成的“UniquenessThreshold和一个非负整数。增加该参数导致函数标记像素不可靠。当一个像素的独特性价值很低,它的差异计算不太可靠。设置阈值0禁用独特性的阈值。UniquenessThreshold必须是真实的,有限的,和nonsparse。

函数定义唯一性作为最优的比例差距估计和最佳的差异估计越少。例如:

K是最好的估计差异,让V相应的悲伤(绝对差之和)的价值。
考虑V作为最小的悲伤的值在整个差异范围,和v作为最小的悲伤的值在整个差异范围,排除K,K1,K+ 1。
如果v<V* (1+0.01*UniquenessThreshold),那么这个函数是像素的差距是不可靠的。

两点间最大距离为从左到右影像检查,指定为逗号分隔两人组成的DistanceThreshold和一个非负整数。增加该参数导致更少的像素被标记为不可靠的。相反,当你减少距离阈值的值,你增加的可靠性差异映射。你可以设置这个参数为空矩阵[]禁用它。DistanceThreshold必须是真实的,有限的,和nonsparse。

距离阈值指定点之间的最大距离I1和同一点I2。函数发现距离和标志着像素在以下方式:

p1是一个形象1
步骤1:函数搜索点p1在图像的最佳匹配2(从左到右检查)和发现p2
第二步:搜索功能p2在图像的最佳匹配1(从右到左的检查),发现点p3
如果搜索返回之间的距离p1p3大于DistanceThreshold,函数标记点的差距p1是不可靠的。

最低纹理阈值,指定为逗号分隔两人组成的“TextureThreshold”和一个标量值范围在[0,1)。纹理阈值定义一个像素的最小纹理值是可靠的。一块的纹理像素越低,越不可靠的计算差异的像素。增加该参数导致更多的像素被标记为不可靠的。你可以设置这个参数0禁用它。这个参数只适用于当您设置方法“BlockMatching”

一个像素的纹理被定义为饱和的和对比计算了BlockSize——- - - - - -BlockSize周围像素的窗口。函数考虑像素的视差计算不可靠的标志,当纹理低于价值定义为:

纹理<X*TextureThreshold*BlockSize2

X表示支持的最大值的输入图像,万博1manbetxI1I2

TextureThreshold必须是真实的,有限的,和nonsparse。

输出参数

全部折叠

差距为一对立体影像地图,作为一个返回——- - - - - -N二维灰度图像。函数返回差异映射具有相同大小的输入图像,I1I2。每个元素的输出指定图像中对应像素的差距作为引用I1。返回的值的差距 1 16 像素。

函数计算差异映射三个步骤:

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

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

  3. 可选地,马克包含不可靠的差异值的像素。返回的函数集的像素值最大浮点数('”)。

提示

如果你的结果差距地图看起来嘈杂,尝试修改DisparityRange。差异范围取决于两个摄像头之间的距离和相机之间的距离和感兴趣的对象。增加了DisparityRange当摄像机远或接近摄像机的对象。确定一个合理的配置差异,显示输入图像的立体浮雕图像查看器应用程序和使用工具的距离来衡量对对应点之间的距离。修改MaxDisparity对应的测量。

引用

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

[2]Bradski, g, a . Kaehler学习OpenCV: OpenCV的计算机视觉库2008年,O ' reilly,塞瓦斯托波尔,CA。

[3]Hirschmuller、H。准确和高效的立体处理Semi-Global匹配和互信息计算机视觉和模式识别国际会议,2005。

扩展功能

版本历史

介绍了R2011b

全部展开