一、实验原理

1.1 双目视差与深度距离关系推导详解

相机成像的模型如下图所示:

P为空间中的点,P1和P2是点P在左右像平面上的成像点,f是焦距,OR和OT是左右相机的光心。由下图可见左右两个相机的光轴是平行的。XR和XT是两个成像点在左右两个像面上距离图像左边缘的距离。

首先由图可得:

由相似三角形原理:

(1)+(2)有:

其中b1可以用b、XR和XT表示。

最后整理可得:


由上面两幅图,可知距离像面越近的点,它在左右相机中的视差越大,距离像面越远的点,它在左右相机中的视差越小。
深度Z和视差的关系图如下:

1.2 NCC

NCC,顾名思义,就是用于归一化待匹配目标之间的相关程度,注意这里比较的是原始像素。通过在待匹配像素位置p(px,py)构建3*3邻域匹配窗口,与目标像素位置p’(px+d,py)同样构建邻域匹配窗口的方式建立目标函数来对匹配窗口进行度量相关性,注意这里构建相关窗口的前提是两帧图像之间已经校正到水平位置,即光心处于同一水平线上,此时极线是水平的,否则匹配过程只能在倾斜的极线方向上完成,这将消耗更多的计算资源。

当密集地应用在图像中时,归一化的互相关值可以很快地计算出来。我们使用每个像素周围的图像(根本上说,是局部周边图像)来计算归一化的互相关。对于这里的情形,我们可以在像素周围重 新写出公式

归一化将匹配结果限制在 [-1,1]的范围内,可以非常方便得到判断匹配窗口相关程度:

若NCC = -1,则表示两个匹配窗口完全不相关,相反,若NCC = 1时,表示两个匹配窗口相关程度非常高。

1.3 匹配步骤

1.采集图像:通过标定好的双目相机采集图像,当然也可以用两个单目相机来组合成双目相机。(标定方法下次再说)

2.极线校正:校正的目的是使两帧图像极线处于水平方向,或者说是使两帧图像的光心处于同一水平线上。通过校正极线可以方便后续的NCC操作。
实验中用的是已经矫正过的左图片和右图片,所以这里不做过多描述。

3.特征匹配:这里便是我们利用NCC做匹配的步骤啦,匹配方法如上所述,右视图中与左视图待测像素同一水平线上相关性最高的即为最优匹配。完成匹配后,我们需要记录其视差d,即待测像素水平方向xl与匹配像素水平方向xr之间的差值d = xr - xl,最终我们可以得到一个与原始图像尺寸相同的视差图D。

4.深度恢复:通过上述匹配结果得到的视差图D,我们可以很简单的利用相似三角形反推出以左视图为参考系的深度图。

二、实现NCC 视差匹配方法,即给定左右两张视图,根据NCC计算视差图

2.1 使用的图片


2.2 实验结果和分析

对一组图片进行测试
这是预想应要得到的实验结果

窗口 = 3

分析:整体来说对比理想的情况下,相当于大部分都没有体现相应的视差,只有右上角超右下倾斜的栅栏有些许就显露出来。
窗口数 = 5

分析:与窗口 = 3 相比,右上角的视差匹配变得较为清晰,和左下角也逐渐显露,图像中物体的边缘变得逐渐清晰,窗口的增大,包含的数据更多,使得匹配点更加精准,图像更加平滑。
窗口 = 7

分析:与之前一样也是边缘轮廓逐渐变得清晰,右侧边缘的栅栏和窗台逐渐变得清晰一点,但是其他部分好像没有啥其他的变化。
窗口 = 9

分析:可能是由于窗口过大,导致原本右侧清晰的轮廓,消失了一部分。可能是因为窗口变得太大,相邻的两个匹配点的窗口中的值容易出现重叠,减少了匹配的数值,所以轮廓变得不清晰。

小结:窗口越大,包含的数据更丰富,匹配点的数值高,图像较为清晰,但是不是越大越好,当大于一定的数值,噪声点增加更多,导致匹配点的数值不增反减,从而使图像变得不清晰。。wid值越小,稳健性更好,但细节信息更少。有点奇怪的是,这组数据也是网上下的用的样例图片,但是也样例图片理想生成的视差图有较为大的区别,这个问题还没得到解决。

对第二组图片进行测试:
这是理想情况下的视差图:

窗口 = 3

分析:虽然只有窗口为3,但是相比于第一组实验,大部分轮廓的描绘出来,且近距离的台灯和雕像的视差都显示出来而且较为准确,但后面远处的背景变得很一边黑,只有些许的轮廓,无法识别出物体特征,这是因为窗口值过小,收集的数据不不够多,有太多相似点的匹配,在计算视差的时候可能造成匹配到的其他较为相似的点,最后形成误差,造成背景比较黑而且较为模糊的情况。

窗口 = 5

分析:相较于窗口等于三而言,物体的边缘变得逐渐清晰,没有太多类似噪声点的情况,且近距离的雕塑和台灯,也更加清晰,窗口增加,收集的数据增加,匹配点的数值增加,所以变得更加清晰。

窗口 = 7
分析:窗口 5和7 相比没有很大程度上的不同,但是也是进行了一定程度上的修补和优化,原因和之前在窗口5分析的一样,因为窗口的增加而导致的。也更加向理想的视差图靠齐。

窗口 = 9

分析:虽然窗口 = 9,使得大部分变得较为清晰,但是在物体和物体交接的边缘区域,反而变得有些模糊,如台灯和后面的桌子相交的地方反而变得模糊起来,匹配的区域像素增大,因此细节较少较多,也就是可能背景的桌子和台灯的像素点因为细节少而被一起匹配,包含进特征匹配算法中,减少了匹配点的数值,整个图像的细节信息也因为这个原因而减少。

三、总结

NCC算法优点:
双目立体视觉对环境光照非常敏感,拍摄的两张图片亮度有差别,曝光程度不同,对计算视差图会有较大影响,而NCC算法很好的解决了这个问题。
NCC算法缺点:
矩形窗口的选用仍然是该方法的缺点,这种方法比较适合于具有平移和小角度旋转关系的图像配准。
窗口值太小会有明显噪声,太大又会失去物体轮廓信息,适中得到的视差图每个物体的轮廓也无法十分清晰,细节较少,且计算量较大,计算效率也不高,耗时较久。

计算机视觉——计算视差相关推荐

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

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

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

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

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

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

  4. 归一化互相关(NCC)计算视差图

    文章目录 一.NCC 1.1 NCC原理 1.2 实现步骤 二.代码实现 2.1 相关代码 2.2 运行结果 2.2.1 修改窗口大小的影响 2.2.1.1 窗口大小win=3时 2.2.1.2 窗口 ...

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

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

  6. 《计算机视觉 : 计算理论与算法基础》(马颂德 张正友)扫描版[PDF]

    <计算机视觉 : 计算理论与算法基础>(马颂德 & 张正友)扫描版[PDF] http://www.verycd.com/topics/2825837/ 算机视觉是在图像处理的基础 ...

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

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

  8. 双目立体视觉:四(双目标定matlab,图像校正,图像匹配,计算视差,disparity详解,)

    二郎也比较忙,在某大场工作,有时候没有时间回复. 如果希望二郎尽快帮忙,可以将代码,数据和问题发给二郎,谢谢大家理解. glwang20@mails.jlu.edu.cn 不过还是希望大家自己要好好研 ...

  9. 计算机视觉——双目视觉匹配计算视差深度

    源码地址:https://github.com/AOYLAOTANG/Computer-Vision/tree/main/stereo%E5%8F%8C%E7%9B%AE%E5%8C%B9%E9%85 ...

最新文章

  1. 汇编语言位向量(位映射)
  2. Storm 03_Storm 架构设计
  3. zstack 第一个例子
  4. eslint 禁用命令
  5. oracle监听的动态注册和静态注册
  6. jQuery页面滚动右侧浮动导航切换
  7. seafile Windows MySQL_seafile4.3.1 + windows 2012 server +mysql 部署记录(3)
  8. Asp.Net MVC 的重要入门概念
  9. apache+fastcgi+php
  10. 管理感悟:需要什么样的注释
  11. php中conf,php 中 php-fpm.conf
  12. 抢购茅台,618只能用这种方法
  13. 计算机组成原理中FZ,计算机组成原理实验二.doc
  14. java导出excel表头斜线_Java导出Excel三表头
  15. php 中margin-top,margin-top是什么意思-css编程词典-php中文网
  16. Java之乐观锁和悲观锁
  17. Head First Design Patterns(深入浅出设计模式)-目录
  18. oracle如何清理sys_lob,清理 oracle lobsegment | 学步园
  19. 电子杂志及其市场发展浅析
  20. 关于Nginx:Nginx在windows上安装及Nginx的配置和优化

热门文章

  1. idea 快速查找各种文件的方法
  2. 开学季征文丨来大学已两年,我还有几个两年?
  3. 漫画算法python版下载_漫画排序算法Python实现
  4. kvm steal 溯源
  5. WTL不完全窗口换肤技术 - 我的玻璃盒子 - CSDNBlog
  6. python爬虫——Scrapy入门(爬取西刺代理ip和port)
  7. 遥感影像出现nan如何处理、envi主成分分析nan报错处理
  8. 手记系列之六 ----- 分享个人使用kafka经验
  9. 荧光成像技术原理ICG-PEG-N3/COOH/NH2/Alkyne吲哚菁绿-聚乙二醇-叠氮
  10. FITC-PEG-SH,荧光素-聚乙二醇-巯基的用途:用于修饰氨基酸,蛋白质等