主要内容

disparityBM

计算视差地图使用块匹配

描述

例子

disparityMap= disparityBM (I1,I2)计算差异从一双纠正立体影像地图I1I2,利用块匹配的方法。知道更多关于整流立体影像,看到的形象整改

disparityMap= disparityBM (I1,I2,名称,值)使用一个或多个名称-值对参数指定选项。

例子

全部折叠

加载一个纠正立体图像。

I1 = imread (“rectified_left.png”);I2 = imread (“rectified_right.png”);

创建纠正的立体浮雕立体图像并显示它。你可以在3 d视图的图像通过使用red-cyan立体眼镜。

= stereoAnaglyph (I1、I2);图imshow (A)标题(“Red-Cyan修正的复合视图立体图像的)

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

将整流输入的彩色图像转换为灰度图像。

j - 1 = im2gray (I1);J2 = im2gray (I2);

计算差异映射。差异的范围指定为[0,48],和独特性的最小值为20。

disparityRange = [0 48];J2 disparityMap = disparityBM (j - 1,“DisparityRange”disparityRange,“UniquenessThreshold”,20);

地图显示差异。显示范围设置为相同的值的差异范围。

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

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

输入参数

全部折叠

输入图像引用I1相应的相机1,作为二维灰度图像或指定gpuArray(并行计算工具箱)对象。这个函数使用图像作为参考图像计算差异映射。输入的图像I1I2必须是真实的,有限的,和nonsparse。同时,I1I2必须是相同的尺寸和相同的数据类型。

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

输入图像引用I2相应的相机2,指定为一个二维灰度图像或一个gpuArray(并行计算工具箱)对象。输入的图像I1I2必须是真实的,有限的,和nonsparse。I1I2必须是相同的尺寸和相同的数据类型。

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

名称-值对的观点

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:disparityBM (I1、I2 DisparityRange, 64年[0])

范围的差异,指定为逗号分隔组成的“DisparityRange”和一个双元素向量的形式MinDisparityMaxDisparity]。MinDisparity最小的差距和吗MaxDisparity是最大的差距。这个范围必须满足的条件取决于类型的输入图像。

如果输入图像灰度图像的宽度N,那么:

  • MinDisparityMaxDisparity必须是整数范围(-N,N)。

  • 之间的差异MaxDisparityMinDisparity值必须是16和整除小于输入图像的宽度。

如果输入图像gpuArray对象的宽度N,那么:

  • 的价值MinDisparity必须等于零。

    的价值MaxDisparity一定范围内(16,N)。如果N大于256,那么MaxDisparity必须选为小于或等于256。

    之间的差异MaxDisparityMinDisparity值必须是16整除。

的默认值差异的范围64年[0]。选择的范围差异的更多信息,见选择范围的差异

方块的大小,指定为逗号分隔组成的“BlockSize”和一个奇数。这个值指定搜索窗口的宽度用于纠正立体图像块匹配的像素。方块大小的范围取决于类型的输入图像。

如果输入图像灰度图像“BlockSize”值必须是奇数的范围[255]。

如果输入图像gpuArray对象时,“BlockSize”值必须是奇数的范围[5,51]。

默认值为15。

范围的对比度阈值,指定为逗号分隔组成的“ContrastThreshold”和一个标量值的范围(0,1)。对比的对比度阈值定义了一个可接受的范围值。如果一个像素的对比度值在下面的参考图像对比度阈值,则认为该像素的差异计算不可靠的。增加该参数结果的差距更少的像素被标记为不可靠的。

最小值的唯一性,指定为逗号分隔组成的“UniquenessThreshold”和一个非负整数。

标志着估计差异值的函数K为一个像素不可靠,如果:

v<V××(1 + 0.01UniquenessThreshold),

在哪里V是绝对差的总和(SAD)的差异价值Kv是最小的悲伤的价值在整个差异范围,不包括K,K1,K+ 1。

增加的价值UniquenessThreshold导致更多的像素值差距被标记为不可靠的。禁用独特性的使用门槛,设置这个值[]

请注意

如果输入图像gpuArray对象,那么“UniquenessThreshold”名称-值对参数不适用。

共轭像素之间的最大距离立体图像,指定为逗号分隔组成的“DistanceThreshold”和一个非负整数。距离阈值指定了一个像素之间的最大距离I1和相同的像素中发现I2

为像素p1在参考图像I1,函数执行一个从左到右检查找到最佳匹配的像素p2在图像I2。为像素p2,函数执行从右到左的检查发现其最佳匹配的像素p3在参考图像I1。如果之间的距离p1p3大于DistanceThreshold,函数是像素的差距p1在参考图像I1是不可靠的。

增加的价值DistanceThreshold导致更少的像素值差距被标记为不可靠的。相反,减少的价值DistanceThreshold,增加的可靠性差异映射。禁用的使用距离阈值,设置这个值[]

请注意

如果输入图像gpuArray对象,那么“DistanceThreshold”名称-值对参数不适用。

最低纹理阈值,指定为逗号分隔组成的“TextureThreshold”和一个标量值范围在[0,1)。

一个像素的纹理被定义为饱和的和对比计算了BlockSize——- - - - - -BlockSize周围像素的窗口。纹理阈值定义一个像素的最小纹理值可靠视差值。函数认为像素的差距是不可靠的,如果:

纹理<强度马克斯×TextureThreshold×BlockSize2,

在哪里纹理是一个像素的纹理。强度马克斯的数据类型支持的最大值是输入图像金宝appI1I2

增加的价值“TextureThreshold”导致更多的像素值差距被标记为不可靠的。禁用纹理的使用门槛,设置这个值[]

输出参数

全部折叠

差距地图纠正立体形象,作为一个二维灰度图像或返回gpuArray对象。函数返回相同大小的差异图作为输入图像I1I2。每个值在这个输出指的是位移共轭像素之间的立体形象。计算差异映射详细信息,请参阅计算视差地图使用块匹配

数据类型:

更多关于

全部折叠

形象整改

输入的图像I1I2计算之前必须纠正视差映射。整改确保立体图像的对应点是在相同的行。你可以纠正输入立体图像通过使用rectifyStereoImages函数。整改的参考图像必须相同和差异映射计算。

算法

全部折叠

选择范围的差异

差距必须选择覆盖的范围之间的最小和最大数量的水平转变中相应的像素矫正立体图像。您可以确定近似水平位移值的立体浮雕立体图像。计算修正的立体浮雕图像通过使用stereoAnaglyph函数。显示的立体浮雕图像查看器使用imtool函数。测量水平的变化之间的对应点的立体图像,选择测量距离工具在图像查看器菜单。选择的最小和最大差异值差距在此基础上测量的范围。

例如,这个数字显示纠正的立体浮雕立体图像和对应点之间的横向转移值测量的立体形象。最小和最大变化值计算分别为8和31。基于这些价值观,差异的范围可以选为[0,48]。

计算视差地图使用块匹配

函数计算差异映射通过以下步骤:

  1. 计算每个像素的差距通过使用块匹配方法中给出[1]

    • CPU -绝对差的总和(SAD)作为成本函数在块匹配。成本函数估计像素之间的位移修正立体图像。

    • GPU -差的平方和(SSD)用作块匹配的成本函数。成本函数估计像素之间的位移修正立体图像。

  2. 可选地,马克不可靠性基于像素ContrastThreshold,UniquenessThreshold,DistanceThreshold,TextureThreshold名称-值对。不可靠的差异值的函数集

引用

[1]Konolige, K。“小视觉系统:硬件和实现。”In第八届国际研讨会在机器人研究学报》上,203 - 212页。1997年。

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

扩展功能

介绍了R2019a