一、大致思路

输入:两个平行相机拍摄到的照片

Step1、照片预处理,包括照片校正,剔除左右相片曝光相差太大的照片,用它们做景深估计可能会出错

Step2、使用MATLAB相机标定工具箱先后进行单相机标定和双相机标定,确定三个相机的内参数,以及相对位置关系

Step3、校准左右相机的图片,保证对每一组照片,左右相机中物体具有相同高度

Step4、使用MATLAB双目视觉工具箱,做景深估计,进而得到图片中不同位置处的场景深度

二、照片的标定结果

通过单相机标定,确定内参

通过双目标定,确定两个相机是否平行,以及它们之间的距离。

左上相机和右上相机之间的位置关系

旋转向量        om = [ 0.00604   0.00170  0.00245 ]

平移向量        T = [ -0.79953   -0.00456  -0.00976 ]以米为单位

说明左上相机和右上相机可以认为是平行且等高度的

三、校准左右相机的图片

要达到双目测距的要求,必须保证对每一组照片,左右相机中物体具有相同高度

需要说明的是,两个相机必须是等高且平行的,如果不是,需要做校准操作。

比如原图

图 1

校准为

图 2

四、景深估计

4.1 双目测距的基本原理

图 3

4.2 景深的计算

四、计算效果的演示

根据上面的原理,计算得到的景深图。

图 4是演示程序运行的效果

图 4

图 5是深度图的一个截图,注意深度图是3维的,记录了照片中大部分像素点的深度信息。

图 5

图5中有一辆车,把它放大后截图,如图6.

图 6

这辆小车,测出他的头和尾的距离是2.8米,这和实际生活经验吻合,因为小轿车一般长度3到4米,而这辆车属于迷你型,长度自然短一点。

五、进一步讨论

Matlab双目视觉工具箱的计算思路的说明

Matlab双目视觉工具箱的基本思想,是对左右相机的图片做块匹配,从而确定左右图片之间的映射关系,由于在“校准左右相机的图片”这一步时,已经保证了相同的物体在左右照片中一定位于同一行,因此只需要判断它们所处的列之间的关系就可以了。

具体的做法,是对右图的每一个像素点,提取一个围绕它的7*7像素块,然后在左图的同一行中寻找匹配块。为了优化搜索的效率,可以假设匹配块的列与右图中的待匹配块的距离在15个像素以内。左右图中匹配块之间的距离,也就是估算景深时所需要的视差disparity(公式(2))。据此可以做景深估算。

图7是工具箱的帮助中给出的某次块匹配的效果。

图7

为了改善计算效率,提升效果,工具箱中又做了金字塔分层计算、动态优化等。

需要说明的是,这个基于匹配来确定视差进而计算景深的原理决定了两种情形下,会出现漏洞区域:

(1)视差为0。如图7(a),(b)所示,左右相机拍摄的挂白板的墙壁重合在一起。

(2)视差虽然不为0,但由于场景几乎没有纹理,所以匹配的时候,误以为视差为0。如图7(c),(d)所示,天空是纯白色,无法准确匹配,所以这部分的景深也是无法计算的。

从景深的计算公式(公式(2)(3))我们可以看到,当视差为0,景深的估算没有意义。

目前方法面临的几个瓶颈

1、计算能力欠缺,只能处理缩小16倍以后的图,去除绘图等冗余操作后代码有多少优化的空间。

2、目前还做不到对图像中每一个位置都计算出深度,计算出来的部分也存在漏洞,比如图6中的车就破了洞。必须进一步优化效果,才能达到进一步应用的需要。

转载请注明

来自  梁登的技术博客

http://blog.csdn.net/ldily110

matlab 双目 景深,双照相机景深分析的思路相关推荐

  1. 景深决定照相机什么特性_相机大百科 从景深公式讲解虚化的奥秘

    怎么才能拍出背景虚化的照片,相信这个问题是无数初学者的向往,甚至在很多人的心中漂亮的虚化就代表了一张照片以及一颗镜头的品质.不过对于初学者来说,他们还有一个很大的疑问,那就是怎样才能创造出虚化效果,而 ...

  2. matlab光顺拐点,基于MATLAB的最大误差双圆弧逼近曲线的算法及实现.pdf

    基于MATLAB的最大误差双圆弧逼近曲线的算法及实现.pdf 第31卷第6期 基于MⅢB的最大误差双圆弧逼近曲线的算法及实现 文章编号:1004-2539120町]06一唧一∞ 基于MAⅡ.AB的最大 ...

  3. matlab实现单(双)极性,Matlab实现单(双)极性(不)归零码

    Matlab实现单(双)极性(不)归零码 内容大纲 Matlab实现单极性不归零波形(NRZ),0 1 幅值 Matlab实现单极性归零波形(RZ),0 1 幅值 Matlab实现双极性不归零波形,- ...

  4. 聚类分析 | MATLAB实现k-Means(k均值聚类)分析

    目录 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k-均值聚类简介 相关描述 程序设计 学习小结 参考资料 致谢 聚类分析 | MATLAB实现k-Means(k均值聚类)分析 k ...

  5. 景深概念以及景深的计算公式

    在了解景深的概念时,用图文结合的方式更容易理解,那么我们先来了解几个相关的概念: 1.焦点(focus) 与光轴平行的光线射入凸透镜时,理想的镜头应该是所有的光线聚集在一点后,再以锥状的扩散开来,这个 ...

  6. matlab 课程设计循环码性能分析,matlab课程设计--循环码的性能分析

    matlab课程设计--循环码的性能分析 课程设计任务书 学生姓名学生姓名 专业班级专业班级 指导教师指导教师 工作单位工作单位 题目题目 循环码的性能分析 初始条件初始条件 MATLAB,速率为 1 ...

  7. 基于文本和语音的双模态情感分析

    作者 | 陆昱博士 追一科技 来源 | DataFunTalk 今天和大家分享的主题是基于文本和语音的双模态情感分析.大家可能会从自然语言处理的角度认为情感分析已经做得比较成熟了,缺少进一步研究的方向 ...

  8. Matlab plotyy画双纵坐标图实例

    转载自:http://blog.sina.com.cn/s/blog_49d955150100lxoe.html Matlab plotyy画双纵坐标图实例 x = 0:0.01:20; y1 = 2 ...

  9. Matlab实现 线性动态电路可视化分析

    Matlab实现 线性动态电路可视化分析 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 编程思路 这个编程总体采用面向过程的编程思想,将人在 ...

最新文章

  1. 如何把Word里的公式放到PowerPoint里
  2. linux增量编译不成功,Linux学习笔记-增量编译(Makefile进一步使用)
  3. 使用phpmaill发送邮件的例子
  4. MFC改变对话框背景图片实例
  5. 多线程之旅七——GUI线程模型,消息的投递(post)与处理
  6. 宝藏女孩程序媛,谈谈职场成长这些事
  7. GEE开发之Landsat8_SR计算NDVI逐年时序变化
  8. 解读Android日志
  9. 2018n年全国计算机考试,2018ncre全国计算机等级考试报名系统
  10. Linux 静态库和动态库的生成及使用
  11. VOS客户端动态黑名单功能配置详解
  12. C++读txt文件,存入vector容器中
  13. linux 如何重命名
  14. 业务流程编排设计和实现
  15. 【干货】2015中国互联网行业人才库报告
  16. VQA任务学习记录1(附数据使用代码记录)
  17. oracle rman恢复表空间,rman备份恢复表空间
  18. jQuery mouseover 鼠标悬停事件
  19. HTTP协议(超文本传送协议)详解--超经典
  20. 深度学习 大数据集处理_大规模深度学习数据集管理系统

热门文章

  1. 冬季盲目补农夫山蒸营养易引发青春痘
  2. 【LINUX】LAMP概念与搭建
  3. Lambda表达式用法超详细整理!!!
  4. 2021-11-04 Spring
  5. 请你谈谈为什么分布式系统需要限流器
  6. python换脸GIF动画制作
  7. FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of me
  8. SJA1000的调试经历【转】
  9. 如何导入BurpSuite 证书
  10. 醍醐灌顶——我眼中的Spring Cloud