计算机视觉——双目视觉匹配计算视差深度
源码地址:https://github.com/AOYLAOTANG/Computer-Vision/tree/main/stereo%E5%8F%8C%E7%9B%AE%E5%8C%B9%E9%85%8D
一、基本原理
Stereo双目立体匹配有很多算法, 比如SAD、BM、SGBM、GC,差别在于匹配时候的策略不同,我们这次要用到的NCC度量就是一种不错的方法。
其中I为目标图像,T为模板图像,模板大小为M*N。
NCC的基本思想就是,从左边图像选取一个区域块,在右边目标图像某个范围内滑动,计算相似度ncc记录到对应的滑动距离中,然后选择相似度最高的距离d作为这个区域块的视差d即两幅图像这个相同区域所处像素值的差值,计算完所有区域之后的就可以得到一个视差图,根据相机的内置参数既可以求出深度图。
下面这个图很好的解释了视差和深度之间的关系。
二、核心代码
for i=1+N:H-Nfor j=1+N:W-Nfor d=dmin:dmaxif((j+d+N<W)&&(j+d-N>0))dif=0;difL=0;difR=0;for m=-N:Nfor n=-N:Ndif=dif+(IL(i+m,j+n)-meansL(i,j))*(IR(i+m,j+n+d)-meansR(i,j+d));difL=difL+(IL(i+m,j+n)-meansL(i,j))^2;difR=difR+(IR(i+m,j+n+d)-meansR(i,j+d))^2;endendtemp=dif/sqrt(difL*difR); nccd(i,j,d-dmin+1)=temp;endendendend%%for i=1+N:H-Nfor j=1+N:W-Ncurmax(i,j)=max(nccd(i,j,:));if (curmax(i,j)<0.5)ncc(i,j)=500;else[junk,ncc(i,j)]=max(nccd(i,j,:));endif(ncc(i,j)>0)depth(i,j)=2550/ncc(i,j);elsedepth(i,j)=0;endendend
三、流程图
四、实验结果
接下来我们用两组图来测试算法:
刚开始得到的结果比较辣眼睛,后来发现原来是滑动区域范围不对
改进之后就效果还不错了
然后是泰迪熊,感觉效果还不错。
五、总结分析
这次实验花了很长时间,实现并不难,但是刚开始实验的效果不太好,找了很多资料,一开始以为自己的代码写的有问题,但是看了很多遍觉得没什么大错误。然后就自己假设相机的参数,根据视差求深度,开始生成的结果上面也展示了,轮廓提取了一部分,但是深度比较小的区域基本就是一团糟。
后来仔细分析了一下数据,发现第一组图左图和第一组图右图的位置关系,发现左图相当于右图左移得到的结果,所以这个滑动距离应该设置为负数,从-60滑动到0,开始我设置的是-30到30,应该是滑动区域不够,找不到最匹配的区域,所以匹配的效果不太好,改动之后效果果然还不错,然后对ncc值小于0.5的认为是错误相似配对,把这些点剔除掉,然后用空洞填充把这些点用周围的像素填充,最后结果也算还行吧,双目测深原理并不是很难,但是有些细节没有把握住就导致最后结果千差万别。
计算机视觉——双目视觉匹配计算视差深度相关推荐
- python 深度 视差 计算_NCC视差匹配计算视差图(python)
目录 一.视差计算原理 1.1 NCC视差匹配方法 1.2 双目立体匹配 二.实验内容 2.1 不同窗口对匹配结果的影响 2.2 分析 三.实验代码 四.总结 一.视差计算原理 1.1 NCC视差匹配 ...
- 计算机视觉——计算视差图
计算视差图 1. 立体视差 2. 极线矫正 3. 归一化互相关(NCC) 4 . 计算视差图的步骤 5. 实验过程 5.1 实验代码 5.2 实验结果及分析 5.2.1 视差图计算结果 5.2.2 不 ...
- 三维匹配_机器视觉——双目视觉的基础知识(视差深度、标定、立体匹配)
1 1.双目视觉的视差与深度 人类具有一双眼睛,对同一目标可以形成视差,因而能清晰地感知到三维世界.因此,计算机的一双眼睛通常用双目视觉来实现,双目视觉就是通过两个摄像头获得图像信息,计算出视差,从而 ...
- 机器视觉——双目视觉的基础知识(视差深度、标定、立体匹配)
1.双目视觉的视差与深度 人类具有一双眼睛,对同一目标可以形成视差,因而能清晰地感知到三维世界.因此,计算机的一双眼睛通常用双目视觉来实现,双目视觉就是通过两个摄像头获得图像信息,计算出视差,从而使计 ...
- python计算机视觉编程——立体图像之计算视差图
计算视差图 一.立体图像 1.1概念 1.2关于图像配准算法 二.立体重建之计算视差图 2.1归一化及算法概念 2.2匹配流程 三.实验测试 3.1实验要求 3.2实验代码 3.3实验结果分析 3.4 ...
- matlab 双目 视差,双目匹配与视差计算
双目匹配与视差计算 立体匹配主要是通过找出每对图像间的对应关系,根据三角测量原理,得到视差图:在获得了视差信息后,根据投影模型很容易地可以得到原始图像的深度信息和三维信息.立体匹配技术被普遍认为是立体 ...
- python 深度 视差 计算_python-窗口代价计算视差
一.窗口代价计算视差的的基本原理 二.实现NCC视差匹配方法 三.图像集 四.总结 一.窗口代价计算视差的的基本原理 立体匹配算法的原理:就是找出两张图像的对应关系,根据三角测量原理,得到视差图:在获 ...
- 立体图像——NCC匹配方法计算视差图
文章目录 一.什么是立体图像 二.以窗口代价计算视差的原理 三.归一化互相关(NCC)算法匹配原理 四.实验 1.实验要求 2.实验代码 3.实验结果 五.实验小结 一.什么是立体图像 一个多视图成像 ...
- 计算机视觉——计算视差
一.实验原理 1.1 双目视差与深度距离关系推导详解 相机成像的模型如下图所示: P为空间中的点,P1和P2是点P在左右像平面上的成像点,f是焦距,OR和OT是左右相机的光心.由下图可见左右两个相机的 ...
最新文章
- 毕业设计:基于Web实现多用户宿舍管理系统
- 极客时间VIP年卡,任意专栏免费看,谁要?
- FreeMarker手册pdf
- redis终于有比较大的进展了,redis3.0.1 稳定版本发布,支持集群。
- 容器与Pod到底有什么区别和联系?
- CentOS 下多线程下载工具:axel
- 用html5播放两个视频,HTML5视频 - 如何进行无缝播放和/或几个视频循环?
- 合成/聚合原则: 桥接模式
- python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能
- 适用所有服务器的全站301重定向跳转教程
- mysql 5.6.30 编译_编译安装mysql 5.6.30
- 知乎发布“战疫”数据报告:“新型肺炎”相关回答获17.3亿次阅读
- 爬虫404如何跳过_金秀贤、全智贤主演的韩剧来自星星的你你如何评价?
- 【Android】小米开发应用App上线注册
- 计算机网络笔记 韩立刚(物理层+数据链路层+网络层+传输层已完成)
- QAC/QAC++静态软件测试工具介绍
- 20191124_射雕侠侣和天龙八部小说分类
- Android开发,app多种语言包
- 2020CADCG专题报告笔记 Jittor计图 深度学习框架
- (转)常用PC服务器LSI阵列卡配置