立体匹配成像算法BM,SGBM,GC,SAD一览
本文转自|新机器视觉
在深度相机的主流技术方案Structure Light,ToF,Stereo Dual)中,主动双目成像方案可以基于低成本的硬件,获得高分辨率、高精度的深度图像,但是立体匹配算法(stereo matching)复杂,对计算资源消耗很大。那我们介绍下几种经典的双目匹配的算法。
双目匹配
双目立体视觉理论建立在对人类视觉系统研究的基础上,通过双目立体图象的处理,获取场景的三维信息,其结果表现为深度图,再经过进一步处理就可得到三维空间中的景物,实现二维图象到三维空间的重构。Marr-Poggio-Grimson [1] 最早提出并实现了一种基于人类视觉系统的计算视觉模型及算法。双目立体视觉系统中,获取深度信息的方法比其它方式(如由影到形方法)较为直接,它是被动方式的,因而较主动方式(如程距法)适用面宽,这是它的突出特点。
双目立体视觉系统中,深度信息的获得是分如下两步进行的:
(1) 在双目立体图象间建立点点对应,
(2) 根据对应点的视差计算出深度。
第一部分,也就是对应点问题,是双目立体视觉的关键; 第二部分是摄像机模型问题。双目立体视觉模型中,双摄像机彼此参数一致,光轴平行且垂直于基线,构成一共极性 (epipolar) 结构,这样做是为了缩小对应的搜索空间,只有水平方向的视差,简化了对应过程
立体匹配算法介绍
BM
其中minDisparity是控制匹配搜索的第一个参数,代表了匹配搜苏从哪里开始,numberOfDisparities表示最大搜索视差数uniquenessRatio表示匹配功能函数,这三个参数比较重要,可以根据实验给予参数值。
该方法速度最快,一副320*240的灰度图匹配时间为31ms
SBGM
SGBM算法 Stereo Processing by Semiglobal Matching and Mutual Information
作为一种全局匹配算法,立体匹配的效果明显好于局部匹配算法,但是同时复杂度上也要远远大于局部匹配算法。算法主要是参考Stereo Processing by Semiglobal Matching and Mutual Information。
通过选取每个像素点的disparity,组成一个disparity map,设置一个和disparity map相关的全局能量函数,使这个能量函数最小化,以达到求解每个像素最优disparity的目的。
能量函数形式如下:
D指disparity map。E(D)是该disparity map对应的能量函数。
p, q代表图像中的某个像素
Np 指像素p的相邻像素点(一般认为8连通)
C(p, Dp)指当前像素点disparity为Dp时,该像素点的cost
P1 是一个惩罚系数,它适用于像素p相邻像素中dsparity值与p的dsparity值相差1的那些像素。
P2 是一个惩罚系数,它适用于像素p相邻像素中dsparity值与p的dsparity值相差大于1的那些像素。
I[.]函数返回1如果函数中的参数为真,否则返回0
利用上述函数在一个二维图像中寻找最优解是一个NP-complete问题,耗时过于巨大,因此该问题被近似分解为多个一维问题,即线性问题。而且每个一维问题都可以用动态规划来解决。因为1个像素有8个相邻像素,因此一般分解为8个一维问题。
OpenCV中自带了BM和SBGM,效果对比如下图:
GC
GC算法 算法文献:Realistic CG Stereo Image Dataset with Ground Truth Disparity Maps
SAD
SAD(Sum of absolute differences)是一种图像匹配算法。基本思想:差的绝对值之和。此算法常用于图像块匹配,将每个像素对应数值之差的绝对值求和,据此评估两个图像块的相似度。该算法快速、但并不精确,通常用于多级处理的初步筛选。
基本流程
输入:两幅图像,一幅Left-Image,一幅Right-Image
对左图,依次扫描,选定一个锚点:
(1)构造一个小窗口,类似于卷积核;
(2)用窗口覆盖左边的图像,选择出窗口覆盖区域内的所有像素点;
(3)同样用窗口覆盖右边的图像并选择出覆盖区域的像素点;
(4)左边覆盖区域减去右边覆盖区域,并求出所有像素点灰度差的绝对值之和;
(5)移动右边图像的窗口,重复(3)-(4)的处理(这里有个搜索范围,超过这个范围跳出);
(6)找到这个范围内SAD值最小的窗口,即找到了左图锚点的最佳匹配的像素块。
匹配陷阱
以下几种情形生成的深度图像可能会有缺陷:
(1) 光学失真和噪声(亮度、色调、饱和度等失衡)
(2) 平滑表面的镜面反射
高光处无细节,无特征点。
(3) 投影缩减(Foreshortening)
摄影测量学中的一个概念,指物体近大远小。由于相对左右照相机距离的不同,看到的同一个物体在左右视图中的投影尺寸也会不同,造成匹配障碍。
(4) 透视失真(Perspective distortions)
由于镜头畸变造成的被摄物体失真。譬如画面中的鼻子被拉长。
(5) 低纹理(Low texture)
无细节。主动纹理光可以解决这一问题。
(6) 重复纹理(Repetitive/ambiguous patterns)
高度相似的特征点描述向量接近,行扫描时难以判断哪一个是对应的特征点。
(7) 透明物体
同低纹理。
(8) 重叠和非连续
纹理中断,不利于行查找。
本文仅做学术分享,如有侵权,请联系删文。
计算机视觉精品课程推荐:
1.面向自动驾驶领域的多传感器数据融合技术
2.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
3.国内首个面向工业级实战的点云处理课程
4.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
5.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
6.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
7.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
干货领取:
1. 在「3D视觉工坊」公众号后台回复:3D视觉,即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
2. 在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总,即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。
3. 在「3D视觉工坊」公众号后台回复:相机标定,即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配,即可下载独家立体匹配学习课件与视频网址。
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列、手眼标定、相机标定、orb-slam3知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
立体匹配成像算法BM,SGBM,GC,SAD一览相关推荐
- BM SGBM 设置参数解释
立体匹配主要是通过找出每对图像间的对应关系,根据三角测量原理,得到视差图:在获得了视差信息后,根据投影模型很容易地可以得到原始图像的深度信息和三维信息.立体匹配技术被普遍认为是立体视觉中最困难也是最关 ...
- 示例程序:关于双目视觉,标定,立体匹配(视差算法),点云,双目三维重建的原理以及代码
Evision双目视觉 关于双目视觉的一些总结 说明 前言 相机模型 标定 视差算法:立体匹配 测量,三维重建 示例程序 参考文献 关于双目视觉的一些总结 说明 如果读者对于本文或者Evision程序 ...
- 基于MVS的三维重建算法学习笔记(四)— 立体匹配经典算法Semi-Global Matching(SGM)论文翻译及要点解读
基于MVS的三维重建算法学习笔记(四)- 立体匹配经典算法Semi-Global Matching(SGM)论文翻译及要点解读 声明 SGM概述 Cost Calculation(像素代价计算)--M ...
- 双目立体匹配_SGM算法
双目立体匹配_SGM算法 视觉感知使人类能非接触地感知三维空间,通过大脑处理快速推断出周围环境的空间特性,从而执行一些生存所需的关键任务,如在环境中移动.识别和抓取物体等等.由于图像是三维世界的二维投 ...
- 双目立体匹配 等 算法 论文 综述 全局局部算法 CSCA NLCA SegmentTree树 DoubleBP Belief-Propagation AD-Census SGM
双目立体匹配 等 算法 论文 综述 本文GITHUB 博文末尾支持二维码赞赏哦 _ 双目立体视觉技术实质就是模拟人的双眼视觉处理系统来处理通过摄像机采集所 获取的图像,它利用两台或多台摄像机在一定约束 ...
- 合成孔径成像算法与实现_西安光机所光学成像研究取得进展
2月18日出版的美国光学学会旗下期刊Optics Express 同时刊登了中国科学院西安光学精密机械研究所瞬态光学与光子技术国家重点实验室姚保利研究组的三篇研究论文. 在第一篇题为Large-sca ...
- SAR成像(七):RD成像算法
RD算法于1978年处理出第一幅机载SAR数字图像,至今仍在广泛使用,它通过距离和方位上的频域操作,达到了高效的模块化处理要求,同时又具有了一维操作的简便性.该算法根据距离和方位上的大尺度时间差异,在 ...
- 合成孔径成像算法与实现_MIMO OFDM宽幅SAR成像仿真与图像融合技术
在之前的<UWB OFDM信号产生,MIMO-SAR显优势>一文中,我们曾介绍了正交频分复用(OFDM)信号的产生原理及在雷达应用中的优势.本文将在此基础上介绍MIMO OFDM宽幅SAR ...
- 【matlab】雷达成像系列 之 BP(BackProjection,后向投影) 成像算法
一.什么是BP算法? 由来:BP算法最初是McCorkle受计算机层析技术的启发推导而来,所谓的计算机层析:就是CT(Computer Tomograpy),这是在医院中再普遍不过的技术了. BP算法 ...
最新文章
- 没有找到mysql。sock_linux系统安装mysql数据库
- 和为s的两个数字与和为s的连续正数序列
- maven打包 jar中没有主清单属性
- 阿里雷卷:Reactive 基金会的成立将对开发方式带来哪些影响?
- 嵌入式linux 定时 唤醒,Linux的cron定时任务使用说明
- MongoDB启动报错
- windows功能_这 12 个好用 Windows 软件,让你也能用上 macOS 的独占功能
- 搞了多年管理软件,总算说清楚了什么是好软件
- 服务器配置 | 3306端口被占用,phpStudy无法启动Apache
- Redis解决秒杀中一人一单问题
- 95-910-335-源码-FlinkSQL-Calcite-FlinkSQL解析
- HDU 4280 Island Transport(HLPP板子)题解
- Linux下Apache、PHP、MySQL默认安装路径
- net-java-php-python-新华眼镜ERP系统计算机毕业设计程序
- 最小生成树详细讲解(Prime算法+Kruskalsuanfa)
- emacs ido模式
- 成为阿里云大使的笔记
- 《JAVA语言程序设计》期末考试试题及答案
- 使用xlnt库读取excel中文乱码
- NLP的“第四范式”之Prompt Learning总结:44篇论文逐一梳理