项目目标为将一段2D老电影转为3D立体影像,在前期讨论中,实现该目标的总体技术思路为

  1. 生成单张rgb影像的深度图
  2. 通过深度图生成点云
  3. 利用点云通过移动摄像机的位置,基于共线方程生成另一张立体像对
  4. 对生成的影像进行插值处理
  5. 根据一定原理(偏振光或红绿立体)将两张影像叠加生成立体效果

这个过程中需要解决的难点有

  1. 获取老电影段落的逐帧影像,以便于批处理
  2. 生成单张影像的深度图技术
  3. 通过深度图生成点云
  4. 通过点云生成核线立体影像的方法

其中第四点为本篇的讨论点,其实际上也属于一种立体匹配。

立体匹配

概念

立体匹配的目标是在两个或多个视点中匹配相应的像素点,计算视差。通俗地举例,就是人的左眼和右眼所看到的两张影像是不同的、有一定距离的,而立体匹配则是要匹配这两张影像中的同名点。

点P和Q,映射到左相机OR像面上的同一点p≡q,只要找到p和q在右相机OT像面上的对应点就可以通过三角计算估计深度。找到对应点的过程,即立体匹配。

双目立体匹配在寻找同名点的过程中,若没有任何先验约束,则对左影像每个像素,需要在右影像全图空间中进行搜索,这种暴力搜索方法不仅效率非常低,而且很容易由于各种因素(如弱纹理、重复纹理等)搜索到错误的对应点,而利用核线几何约束则是减小搜索范围,提高匹配效率且降低错误匹配的一种有效方法。
P和Q映射到左相机QR像面上的同一点p≡q,直线pq上的点对应点一定位于右像面的直线p’q’上,p’q’即为直线pq的核线(极线),这就是核线约束(极线约束)。示意图如下。

更详细的说明可以参考链接https://blog.csdn.net/rs_lys/article/details/83268491

在得到了视差图d之后,则可以根据视差获得深度图(Z = ( b × f ) / d),示意图与公式如下

总体来讲,拍摄双目图片进行立体匹配获取深度图,进行三维重建等操作的整个流程大体如下

  1. 摄像机标定(包括内参和外参)
  2. 双目图像的校正(包括畸变校正和立体校正)
  3. 立体匹配算法获取视差图和深度图
  4. 利用视差图或者深度图进行虚拟视点的合成
    在没有双目相机的情况下,可以使用单个相机平行移动拍摄,外参可以通过摄像机自标定算出。 后面这一情况也是项目所需要考虑的。

基于OpenCV以及两张已有影像进行立体匹配和获取深度图的方法及示意图可参考链接https://www.cnblogs.com/riddick/p/8486223.html

问题

通常来讲,对两张影像进行了立体匹配获得了视差之后,就可以根据视差估计深度,而在我们的项目中由于只有单张影像,而且是通过资料中现成的算法来获取单张影像的深度的,因此问题就变成了如何通过单张影像以及它的深度图的点云来获取另一张左/右影像。
在项目技术路线中,是想要通过共线方程将左影像(例)所生成的点云根据视差移动一部分来生成右影像。
而点云也是通过深度图生成的,所以需要找到深度与视差的关系。
核线纠正之后的图像同名点只存在列号(固定方向上的,通常为纵向【按照摄影测量坐标系】)的差异,这种差异就称为视差(严谨来说是列方向视差,因为行方向视差通过纠正消除,所以对于核线像对,视差就指列方向视差),具体来说,视差等于同名点在左影像上的列号减去在右影像上的列号。在核线纠正后,相机坐标系的X轴与基线平行,Z轴与像平面垂直。

深度与视差

参考链接https://blog.csdn.net/rs_lys/article/details/83268491

可以根据三角关系(三角形POlOr和Ppp’相似)

进一步有

共线条件方程

由于在项目中,目标是要由一张左影像(例)获取另一张右影像(例),而且是要应用在电影中,应需要考虑到虚拟摄像机的设置,相关参数的设置也要考虑到共线方程。
这一问题由于缺乏理解暂不讨论,共线方程及其应用参考链接https://blog.csdn.net/qq_43542818/article/details/111479509,有较为清晰的分情况和相关场景的举例分析。

以上参考的链接都在文中给出,后续会继续补充博文。

单目影像3D化与立体匹配相关推荐

  1. 3D单目(mono 3D)目标检测算法综述

    layout: post title: 3D单目(mono 3D)目标检测算法综述 date: 2021-01-22 22:08:39.000000000 +09:00 categories: [算法 ...

  2. 单目图像3D物体的姿态检测

    原文首发于微信公众号「3D视觉工坊」--单目图像3D物体的姿态检测 主要分成几个步骤: 1. 二维box的定位.类别判断.以及角度预测 2. 物体的3d box尺寸的预估,以及3d box在相机坐标系 ...

  3. 一分钟让你了解人脸识别套件中的双目、单目、3D结构光摄像头的区别以及详细介绍

    宁远电子提供的人脸识别模组可支持双目摄像头和3D结构光摄像头,在客户咨询中经常有被问到双目的为什么会比单目的成本高,区别在哪里,他们的适用于哪些场景呢?在此,宁远电子技术工程师就为大家详细解析,帮助大 ...

  4. 基于GAN的单目图像3D物体重建(纹理和形状)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 项目地址:https://nv-tlabs.github.io/DIB-R/ 代码地址:https:/ ...

  5. 基于DLP4500的结构光单目相机3D扫描SDK介绍(附源码)(1)

    智能机器人性能的一个关键组成部分就是机器视觉(MV)技术,这是计算机与高速摄像头的完美结合.通过结合这两种技术,就可以执行复杂的检查任务及数字图像采集和分析.这些数据可以用来控制机器人手臂.对物体进行 ...

  6. 3D单目目标检测从入门到做自己的Tesla

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:林大佬 | 来源:知乎 https://zhuanlan.zhihu.com/p/1427766 ...

  7. 3d object是什么文件_[单目3D目标检测论文笔记] 3D Bounding Box Estimation

    本文是3D Bounding Box Estimation Using Deep Learning and Geometry的论文笔记及个人理解.这篇文章是单目图像3d目标检测的一个经典工作之一.其目 ...

  8. 基于线段的激光雷达和单目联合曲面重建​

    点云PCL免费知识星球,点云论文速读. 标题:Pixel-level Extrinsic Self Calibration of High Resolution LiDAR and Camera in ...

  9. 基于线段的激光雷达和单目联合曲面重建

    点云PCL免费知识星球,点云论文速读. 标题:Lidar-Monocular Surface Reconstruction Using Line Segments 作者:Victor Amblard, ...

最新文章

  1. PHP 5.4 的新特性
  2. 深度学习中的batch理解(batch size 一次喂给神经网络的数据大小量)
  3. 一次流量不均衡问题的排查记录
  4. SpringBoot环境切换
  5. C语言之数据类型,C语言之数据类型
  6. .net 按行切割数组
  7. Unity(十九):获取编辑器内置样式和内置图标
  8. Java基础2讲义四千字总结---黑马刘意
  9. 下载MDK5 Software Packs导入Keil5
  10. Modbus转Profinet网关连接英威腾变频器方法
  11. 电脑新固态硬盘ssd安装win7系统教程
  12. win10系统重置网络后,以太网没了,适配器显示为空了,电脑完全没网,这种情况怎么办?
  13. 常见Http Method有哪些
  14. mysql如何查看bufferpool_查看Buffer Pool使用情况--[转]
  15. 部分PTA的入门习题以及题解
  16. 史上最烂的项目:苦撑 12 年,600 多万行代码
  17. 微信图文美化编辑器试试构思编辑器
  18. 第一篇文献:谈大数据时代的云控制摄影测量 ——张祖勋院士
  19. 关于《Python绝技:运用Python成为顶级黑客》的学习笔记
  20. 在Linux上使用7z的最高压缩比来压缩文件

热门文章

  1. The app icon set named AppIcon did not have any applicable content.
  2. 进入阿里外包一个月,我离职了
  3. 给十年前手机刷Linux,一台十年前的手机,竟然能刷遍市面上所有的手机操作系统 zt...
  4. [硬件]单片机小制作----Flash存储图片句子,彩屏显示
  5. 路由器无法服务器未响应是怎么回事,路由器设置时服务器未响应怎么回事
  6. C++必背基础知识点总结
  7. 毕业设计 单片机(stm32)远程宠物喂养系统 - 物联网 esp8266
  8. JavaEE 从入门到放弃(五):如何理解 Spring
  9. 陈硕-应届生应聘程序员,简历上能写书单吗?最好有哪些信息?
  10. 设计模式之美-11| 实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?