SGBM算法实现双目相机视差图计算
3星 · 超过75%的资源 需积分: 50 91 浏览量
更新于2024-09-07
2
收藏 1KB TXT 举报
计算机视觉视差图(SGBM算法)是一种广泛应用于双目视觉系统中的深度估计方法,它基于结构相似性(SAD)模板匹配原理,用于计算左右两幅图像之间的像素差异。在给出的C++代码片段中,主要展示了如何使用OpenCV库实现SGBM(Stereo Block Matching)算法来生成视差图。
首先,包括必要的头文件,如`#include <opencv2/opencv.hpp>`,引入OpenCV库的接口。`StereoBM`类是OpenCV提供的一个高效且可配置的单应性和深度估计器,适合于实时应用。
代码初始化了两个灰度图像,分别读取左右相机的图像文件"imgL.jpg"和"imgR.jpg"。然后定义了视差图变量`Mat disp`,以及一些关键参数,如最小视差(`mindisparity`)、视差范围(`ndisparities`)、模板窗口大小(`SADWindowSize`)等。这些参数的选择对最终结果有显著影响,例如模板窗口大小会影响匹配精度与速度。
接下来,创建了一个`cv::StereoBM`对象`bm`,并设置了上述参数。预滤波器大小(`setPreFilterSize`)、阈值(`setTextureThreshold`)、唯一性比率(`setUniquenessRatio`)和最大允许的相邻视差差(`setDisp12MaxDiff`)都是用来提高匹配性能和消除噪声的。
为了处理边缘和光照变化,代码使用`copyMakeBorder`函数在图像边缘添加了边界像素,这里使用了复制边界模式(`IPL_BORDER_REPLICATE`)。接着,调用`bm->compute`方法,输入左右图像,计算出视差图`disp`。由于原始视差值可能范围较大,通过`convertTo`函数将其转换为浮点型,并缩放以适应实际应用场景(这里是将像素值范围缩小到1/16,以便后续处理)。
最后,视差图进一步进行8位无符号整数(`CV_8UC1`)的归一化,确保值在0到255之间,便于显示和保存。通过`imwrite`函数将处理后的视差图保存为"results/BM.jpg"。
总结来说,这段代码演示了如何使用SGBM算法在计算机视觉中估计双目相机的视差图,展示了基本的图像读取、参数设置、计算过程以及结果的后处理步骤。这是一种简单但实用的方法,适用于需要快速获得相对深度信息的应用场景。
2022-07-15 上传
2023-08-09 上传
2022-09-24 上传
2021-09-30 上传
2021-09-28 上传
qq_34521859
- 粉丝: 8
- 资源: 15
最新资源
- exercise4-hannao6:GitHub Classroom创建的exercise4-hannao6
- Excel模板基建预算.zip
- SP21-PUFY1225-DIGITAL-ART
- snapcache:Snapcache 允许用户与他们的朋友创建、共享和发现 geocached 时间胶囊
- pronoun-fitting:使用网络话务台的简单代词试衣间
- heappy:一个快乐的堆编辑器,可支持您的利用过程
- Fox-game
- React-Todo-Custom-Hook
- flatten-object:展平嵌套对象,如果存在冲突,则重命名键
- 北大光华-寻找中国版公募REITs的“价格锚”:商业不动产资本化率调查研究-2019.6-32页(1).rar
- django-postgres-fast-test:使用postgres数据库改善django测试的运行时间
- ejson:EJSON是一个小型库,用于使用非对称加密来管理加密的机密
- 毕业设计&课设--毕业设计-校园二手物品交易管理系统.zip
- Excel模板基本建设财务管理人员备案表.zip
- network-idle-callback:类似于requestIdleCallback,但用于检测网络空闲
- splitwithfriends:全栈营的 AngularNode 演示