disparityBM
计算视差地图使用块匹配
描述
计算差异从一双纠正立体影像地图disparityMap
= disparityBM (I1
,I2
)I1
和I2
,利用块匹配的方法。知道更多关于整流立体影像,看到的形象整改。
使用一个或多个名称-值对参数指定选项。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修正的复合视图立体图像的)
将整流输入的彩色图像转换为灰度图像。
j - 1 = rgb2gray (I1);J2 = rgb2gray (I2);
计算差异映射。差异的范围指定为[0,48],和独特性的最小值为20。
disparityRange = [0 48];J2 disparityMap = disparityBM (j - 1,“DisparityRange”disparityRange,“UniquenessThreshold”,20);
地图显示差异。显示范围设置为相同的值的差异范围。
图imshow (disparityMap disparityRange)标题(“差距地图”)colormap飞机colorbar
输入参数
名称-值对的观点
指定可选的逗号分隔条名称,值
参数。的名字
参数名称和吗价值
相应的价值。的名字
必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家
。
disparityBM (I1、I2 DisparityRange, 64年[0])
“DisparityRange”
- - - - - -范围的差异
64年[0]
(默认)|双元素向量
范围的差异,指定为逗号分隔组成的“DisparityRange”
和一个双元素向量的形式MinDisparityMaxDisparity]。MinDisparity最小的差距和吗MaxDisparity是最大的差距。这个范围必须满足的条件取决于类型的输入图像。
如果输入图像灰度图像的宽度N,那么:
MinDisparity和MaxDisparity必须是整数范围(-N,N)。
之间的差异MaxDisparity和MinDisparity值必须是16和整除小于输入图像的宽度。
如果输入图像gpuArray
对象的宽度N,那么:
的价值MinDisparity必须等于零。
的价值MaxDisparity一定范围内(16,N)。如果N大于256,那么MaxDisparity必须选为小于或等于256。
之间的差异MaxDisparity和MinDisparity值必须是16整除。
的默认值差异的范围64年[0]
。选择的范围差异的更多信息,见选择范围的差异。
“BlockSize”
- - - - - -方块大小
15
(默认)|奇数
方块的大小,指定为逗号分隔组成的“BlockSize”
和一个奇数。这个值指定搜索窗口的宽度用于纠正立体图像块匹配的像素。方块大小的范围取决于类型的输入图像。
如果输入图像灰度图像“BlockSize”
值必须是奇数的范围[255]。
如果输入图像gpuArray
对象时,“BlockSize”
值必须是奇数的范围[5,51]。
默认值为15。
“ContrastThreshold”
- - - - - -对比度阈值范围
0.5
(默认)|标量范围(0,1)
范围的对比度阈值,指定为逗号分隔组成的“ContrastThreshold”
和一个标量值的范围(0,1)。对比的对比度阈值定义了一个可接受的范围值。如果一个像素的对比度值在下面的参考图像对比度阈值,则认为该像素的差异计算不可靠的。增加该参数结果的差距更少的像素被标记为不可靠的。
“UniquenessThreshold”
- - - - - -最小值的唯一性
15
(默认)|非负整数
最小值的唯一性,指定为逗号分隔组成的“UniquenessThreshold”
和一个非负整数。
标志着估计差异值的函数K为一个像素不可靠,如果:
v<V××(1 + 0.01UniquenessThreshold
),
在哪里V是绝对差的总和(SAD)的差异价值K。v是最小的悲伤的价值在整个差异范围,不包括K,K1,K+ 1。
增加的价值UniquenessThreshold
导致更多的像素值差距被标记为不可靠的。禁用独特性的使用门槛,设置这个值[]
。
请注意
如果输入图像gpuArray
对象,那么“UniquenessThreshold”
名称-值对参数不适用。
“DistanceThreshold”
- - - - - -共轭像素之间的最大距离立体图像
[]
(禁用)(默认)|非负整数
共轭像素之间的最大距离立体图像,指定为逗号分隔组成的“DistanceThreshold”
和一个非负整数。距离阈值指定了一个像素之间的最大距离I1
和相同的像素中发现I2
。
为像素p1在参考图像I1
,函数执行一个从左到右检查找到最佳匹配的像素p2在图像I2
。为像素p2,函数执行从右到左的检查发现其最佳匹配的像素p3在参考图像I1
。如果之间的距离p1和p3大于DistanceThreshold
,函数是像素的差距p1在参考图像I1
是不可靠的。
增加的价值DistanceThreshold
导致更少的像素值差距被标记为不可靠的。相反,减少的价值DistanceThreshold
,增加的可靠性差异映射。禁用的使用距离阈值,设置这个值[]
。
请注意
如果输入图像gpuArray
对象,那么“DistanceThreshold”
名称-值对参数不适用。
“TextureThreshold”
- - - - - -最低纹理阈值
0.0002
(默认)|标量值范围在[0,1)
输出参数
disparityMap
——差异图
二维灰度图像|gpuArray
对象
差距地图纠正立体形象,作为一个二维灰度图像或返回gpuArray
对象。函数返回相同大小的差异图作为输入图像I1
和I2
。每个值在这个输出指的是位移共轭像素之间的立体形象。计算差异映射详细信息,请参阅计算视差地图使用块匹配。
数据类型:单
更多关于
形象整改
输入的图像I1
和I2
计算之前必须纠正视差映射。整改确保立体图像的对应点是在相同的行。你可以纠正输入立体图像通过使用rectifyStereoImages
函数。整改的参考图像必须相同和差异映射计算。
算法
选择范围的差异
差距必须选择覆盖的范围之间的最小和最大数量的水平转变中相应的像素矫正立体图像。您可以确定近似水平位移值的立体浮雕立体图像。计算修正的立体浮雕图像通过使用stereoAnaglyph
函数。显示的立体浮雕图像查看器使用imtool
函数。测量水平的变化之间的对应点的立体图像,选择测量距离从工具在图像查看器菜单。选择的最小和最大差异值差距在此基础上测量的范围。
例如,这个数字显示纠正的立体浮雕立体图像和对应点之间的横向转移值测量的立体形象。最小和最大变化值计算分别为8和31。基于这些价值观,差异的范围可以选为[0,48]。
计算视差地图使用块匹配
函数计算差异映射通过以下步骤:
计算每个像素的差距通过使用块匹配方法中给出[1]。
CPU -绝对差的总和(SAD)作为成本函数在块匹配。成本函数估计像素之间的位移修正立体图像。
GPU -差的平方和(SSD)用作块匹配的成本函数。成本函数估计像素之间的位移修正立体图像。
可选地,马克不可靠性基于像素
ContrastThreshold
,UniquenessThreshold
,DistanceThreshold
,TextureThreshold
名称-值对。不可靠的差异值的函数集南
。
引用
[1]Konolige, K。“小视觉系统:硬件和实现。”In第八届国际研讨会在机器人研究学报》上,203 - 212页。1997年。
[2]Bradski, g, a Kaehler。学习OpenCV: OpenCV的计算机视觉库。塞瓦斯托波尔,CA: O ' reilly Media, Inc .) 2008年。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
使用笔记和限制:
这个函数的GPU版本只能在NVIDIA GPU。支持的最大的差异值金宝app
gpuArray
对象是256。
另请参阅
应用程序
功能
介绍了R2019a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。