局部匹配算法:BM

一、原理
就是最基本的滑动窗口。BM的匹配方法是通过计算SAD(绝对差之和),即两个匹配块的像素相减取绝对值,再把匹配窗口中所有值加起来,这个值越小就代表匹配度越高。
二、API
可以通过StereoBM::create 来创建BM算法

Ptr<StereoBM> bm = StereoBM::create(
	int minDisparity = 0, 
	int numDisparities = 16, 
	int blockSize = 3,
	int P1 = 0, int P2 = 0, 
	int disp12MaxDiff = 0,
	int preFilterCap = 0, 
	int uniquenessRatio = 0,
	int speckleWindowSize = 0, 
	int speckleRange = 0,
	int mode = StereoSGBM::MODE_SGBM
);

也可以create之后再设置参数

bm->setBlockSize(2 * blockSize + 5);     //SAD窗口大小,5~21之间为宜
	bm->setROI1(validROIL);
	bm->setROI2(validROIR);
	bm->setPreFilterCap(31);
	bm->setMinDisparity(0);  //最小视差,默认值为0, 可以是负值,int型
	//视差窗口,即最大视差值与最小视差值之差,窗口大小必须是16的整数倍,int型
	bm->setNumDisparities(numDisparities * 16 + 16);
	bm->setTextureThreshold(10);
	//uniquenessRatio主要可以防止误匹配
	bm->setUniquenessRatio(uniquenessRatio);
	bm->setSpeckleWindowSize(100);
	bm->setSpeckleRange(32);
	bm->setDisp12MaxDiff(-1);
	//输入图像必须为灰度图
	bm->compute(rectifyImageL, rectifyImageR, disp);

其中的参数意义如下:
参考链接:

https://blog.csdn.net/weixin_36135696/article/details/105576877?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%AB%8B%E4%BD%93%E5%8C%B9%E9%85%8Dbm%E7%AE%97%E6%B3%95%E5%8E%9F%E7%90%86&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-105576877.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187

setROI1、setROI2: 图像校正后一般会对图像进行裁剪,这个是用来设置裁剪之后的区域。
setFilterType:预处理滤波器的类型。用于消除噪声、降低亮度失真、增强纹理。
preFilterSize:预处理滤波器的窗口大小。一般为5~21
preFilterCap:预处理滤波器的截断值,预处理的输出值仅保留[-preFilterCap, preFilterCap]之间。参数范围是1-63,int型
SADwindowSize:SAD窗口大小,允许范围[5,255]必须是奇数
minDisparity:最小视差,默认为0
numDIsparities:视差窗口,即最大视差值与最小视差值之差,窗口大小必须是16的整倍数,int型
textureThresshold:低纹理区域判定阈值,如果当前SAD窗口内所有邻居像素点的x导数绝对值小于指定阈值,则该窗口对应的像素点视差值为0
uniquenessRatio:视差唯一性百分比,视差窗口范围内最低代价是次低代价的(1+uniquenessRatio/100)倍时,最低代价对应的视差值是该像素点的视差,否则该像素点视差为0
//视差窗口,即最大视差值与最小视差值之差,窗口大小必须是16的整数倍,int型
speckleWindowSize:检查视差连通区域变化的窗口大小,值为0时取消speckle检查,int型
speckleRange:视差变化阈值,当窗口呢视差变化大于阈值时,该窗口内的视差清零,int型
Disp12MaxDiff:左右一致性检测最大容许误差阈值。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值