基于Matlab的双目立体匹配获取视差图

本文介绍了如何利用Matlab进行双目标定,通过启动stereoCameraCalibrator工具箱,进行相机参数标定并导出。接着,文章详细阐述了如何读取左右图像,进行极线矫正,以及使用Semi-GlobalMatching算法计算视差图,并展示了默认参数下的视差效果。文章还提到了disparity函数的关键参数,如DisparityRange、BlockSize等,并指出视差范围的设定依赖于相机间距和物距。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

  最近发现Matlab真的很好用啊!
  想看看Matlab求视差图的效果,简单试了以下,效果还可以。

1.打开matlab进行双目标定

  启动双目标定工具箱

stereoCameraCalibrator

  添加左目和右目照片,选择coefficients和tangential distortion ,点击calibrate在这里插入图片描述

  然后选择export camera parameters,点击确定

在这里插入图片描述
  在主界面上就可以看到输出
在这里插入图片描述

2.立体匹配计算视差

% 读取左右图像
I1 = imread('left.png');
I2 = imread('right.png');

% 加载标定参数
load('stereoParams.mat'); #这俩如果是对话框,直接注释掉就可以了

% 对左右图像进行极线矫正
[I1Rect,I2Rect] = rectifyStereoImages(I1,I2,stereoParams);

% 计算视差图
disparityMap = disparity(rgb2gray(I1Rect), rgb2gray(I2Rect));

% 显示视差图
imshow(disparityMap, [0, 64]);

  这里视差效果感觉还是可以的,后续肯定还需要调整参数和视差后处理。
  这里disparity函数默认使用的是Semi-Global Matching (SGM)算法。

disparity函数的参数及含义如下:

‘Method’ — Disparity estimation algorithm ‘SemiGlobal’ (default) | ‘BlockMatching’ 模式可选择BM和SGBM;
‘DisparityRange’ — Range of disparity [0 64] (default) | two-element vector 视差图范围,默认是 [0 64] 该值的设置取决于两相机的间距和物距综合影响,大基线距和近处测量时应增大视差范围,但范围差值要求可以被16整除。
‘BlockSize’ — Square block size [15] (default) | odd integer 块大小,必须是奇数。
‘ContrastThreshold’ — Contrast threshold [0.05] (default) | scalar in the range (0, 1) 对比度阈值,必须是介于0和1之间的标量。 ‘UniquenessThreshold’ — Uniqueness threshold [15] (default) | scalar in the range (0, 100) 唯一性阈值,必须是介于0和100之间的标量。

在这里插入图片描述


评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张Tt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值