源码地址: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的认为是错误相似配对,把这些点剔除掉,然后用空洞填充把这些点用周围的像素填充,最后结果也算还行吧,双目测深原理并不是很难,但是有些细节没有把握住就导致最后结果千差万别。

计算机视觉——双目视觉匹配计算视差深度相关推荐

  1. python 深度 视差 计算_NCC视差匹配计算视差图(python)

    目录 一.视差计算原理 1.1 NCC视差匹配方法 1.2 双目立体匹配 二.实验内容 2.1 不同窗口对匹配结果的影响 2.2 分析 三.实验代码 四.总结 一.视差计算原理 1.1 NCC视差匹配 ...

  2. 计算机视觉——计算视差图

    计算视差图 1. 立体视差 2. 极线矫正 3. 归一化互相关(NCC) 4 . 计算视差图的步骤 5. 实验过程 5.1 实验代码 5.2 实验结果及分析 5.2.1 视差图计算结果 5.2.2 不 ...

  3. 三维匹配_机器视觉——双目视觉的基础知识(视差深度、标定、立体匹配)

    1 1.双目视觉的视差与深度 人类具有一双眼睛,对同一目标可以形成视差,因而能清晰地感知到三维世界.因此,计算机的一双眼睛通常用双目视觉来实现,双目视觉就是通过两个摄像头获得图像信息,计算出视差,从而 ...

  4. 机器视觉——双目视觉的基础知识(视差深度、标定、立体匹配)

    1.双目视觉的视差与深度 人类具有一双眼睛,对同一目标可以形成视差,因而能清晰地感知到三维世界.因此,计算机的一双眼睛通常用双目视觉来实现,双目视觉就是通过两个摄像头获得图像信息,计算出视差,从而使计 ...

  5. python计算机视觉编程——立体图像之计算视差图

    计算视差图 一.立体图像 1.1概念 1.2关于图像配准算法 二.立体重建之计算视差图 2.1归一化及算法概念 2.2匹配流程 三.实验测试 3.1实验要求 3.2实验代码 3.3实验结果分析 3.4 ...

  6. matlab 双目 视差,双目匹配与视差计算

    双目匹配与视差计算 立体匹配主要是通过找出每对图像间的对应关系,根据三角测量原理,得到视差图:在获得了视差信息后,根据投影模型很容易地可以得到原始图像的深度信息和三维信息.立体匹配技术被普遍认为是立体 ...

  7. python 深度 视差 计算_python-窗口代价计算视差

    一.窗口代价计算视差的的基本原理 二.实现NCC视差匹配方法 三.图像集 四.总结 一.窗口代价计算视差的的基本原理 立体匹配算法的原理:就是找出两张图像的对应关系,根据三角测量原理,得到视差图:在获 ...

  8. 立体图像——NCC匹配方法计算视差图

    文章目录 一.什么是立体图像 二.以窗口代价计算视差的原理 三.归一化互相关(NCC)算法匹配原理 四.实验 1.实验要求 2.实验代码 3.实验结果 五.实验小结 一.什么是立体图像 一个多视图成像 ...

  9. 计算机视觉——计算视差

    一.实验原理 1.1 双目视差与深度距离关系推导详解 相机成像的模型如下图所示: P为空间中的点,P1和P2是点P在左右像平面上的成像点,f是焦距,OR和OT是左右相机的光心.由下图可见左右两个相机的 ...

最新文章

  1. 毕业设计:基于Web实现多用户宿舍管理系统
  2. 极客时间VIP年卡,任意专栏免费看,谁要?
  3. FreeMarker手册pdf
  4. redis终于有比较大的进展了,redis3.0.1 稳定版本发布,支持集群。
  5. 容器与Pod到底有什么区别和联系?
  6. CentOS 下多线程下载工具:axel
  7. 用html5播放两个视频,HTML5视频 - 如何进行无缝播放和/或几个视频循环?
  8. 合成/聚合原则: 桥接模式
  9. python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能
  10. 适用所有服务器的全站301重定向跳转教程
  11. mysql 5.6.30 编译_编译安装mysql 5.6.30
  12. 知乎发布“战疫”数据报告:“新型肺炎”相关回答获17.3亿次阅读
  13. 爬虫404如何跳过_金秀贤、全智贤主演的韩剧来自星星的你你如何评价?
  14. 【Android】小米开发应用App上线注册
  15. 计算机网络笔记 韩立刚(物理层+数据链路层+网络层+传输层已完成)
  16. QAC/QAC++静态软件测试工具介绍
  17. 20191124_射雕侠侣和天龙八部小说分类
  18. Android开发,app多种语言包
  19. 2020CADCG专题报告笔记 Jittor计图 深度学习框架
  20. (转)常用PC服务器LSI阵列卡配置

热门文章

  1. keil集成环境c语言总结,Keil C51单片机集成开发环境编程与调试教程
  2. linux——目录说明
  3. 关于Linux操作系统的处理机管理分析
  4. 深入浅出数据分析读书笔记
  5. linux 增加静态路由命令
  6. html神坑之button的type属性
  7. 阿德莱德大学计算机专业学费,阿德莱德大学本科及研究生学费是多少(含各专业学费)?...
  8. video 标签属性
  9. R语言data.table详解
  10. 中国移动支付全球领先!成中国“新四大发明“