2D到3D视频转换 三维重建
2D到3D视频转换(也称为2D到立体3D转换和立体转换)是将2D(“平面”)胶片转换为3D形式的过程,几乎在所有情况下都是立体声,因此它是创建图像的过程。每个眼睛来自一个2D图像。
内容
概述[ 编辑]
2D到3D转换将双目视差深度提示添加到大脑感知的数字图像,因此,如果正确完成,与2D视频相比,在观看立体视频的同时极大地改善了沉浸效果。然而,为了获得成功,转换应该以足够的准确性和正确性进行:原始2D图像的质量不应该恶化,并且引入的视差提示不应该与大脑用于深度感知的其他提示相矛盾。如果正确彻底地完成,转换产生的质量与“原生”立体视频质量相似的立体视频,以立体声拍摄并在后期制作中进行精确调整和对齐。[1]
可以宽松地定义两种立体声转换方法:用于电影和高质量3DTV的高质量半自动转换,以及用于廉价3DTV,VOD和类似应用的低质量自动转换。
重新渲染计算机动画电影[ 编辑]
如果原始数据仍然可用,则通过添加第二虚拟相机,可以在立体3D中重新渲染利用3D模型制作的计算机动画 2D电影。这在技术上不是转换; 因此,这种重新渲染的胶片具有与最初在立体3D中制作的胶片相同的质量。这种技术的例子包括重新发行玩具总动员和玩具总动员2。重新审视这两部电影的原始计算机数据需要四个月,以及另外六个月的时间来添加3D。[2]然而,由于成本,所需时间,缺乏熟练资源或缺少计算机数据,并非所有CGI影片都会重新渲染以进行3D重新发布。
重要性和适用性[ 编辑]
随着3D中发行的电影的增加,2D到3D转换变得更加普遍。大多数非CGI立体3D大片完全或至少部分地从2D镜头转换。甚至“ 阿凡达”也包含几个以二维拍摄的场景,并在后期制作中转换为立体声。[3]以2D而不是立体声拍摄的原因是金融,技术和艺术:[1][4]
- 立体后期制作工作流程要复杂得多,而且不像2D工作流程那样完善,需要更多的工作和渲染。
- 专业的立体钻机比传统的单筒式摄像机昂贵且笨重。有些镜头,特别是动作场景,只能用相对较小的2D相机拍摄。
- 立体相机可以在立体图像程序代写https://item.taobao.com/item.htm?spm=a230r.1.14.59.255028c3ALNkZ0&id=586797758241&ns=1&abbucket=15#detail中引入各种不匹配(例如垂直视差,倾斜,色移,反射和不同位置的眩光),无论如何都应该在后期制作中修复,因为它们会破坏3D效果。该校正有时可能具有与立体声转换相当的复杂性。
- 立体相机可以背叛拍摄过程中使用的实际效果。例如,“指环王”电影三部曲中的一些场景是使用强制视角拍摄的,以允许两个演员看起来是不同的物理尺寸。以立体声拍摄的同一场景将揭示演员距离相机的距离不同。
- 就其本质而言,立体相机限制了相机与拍摄对象的距离,并且仍然提供可接受的立体声分离。例如,拍摄建筑物侧面的场景的最简单方法可能是使用变焦镜头在相邻建筑物的街对面使用相机装备。然而,虽然变焦镜头将提供可接受的图像质量,但立体声分离在这样的距离上几乎为零。
即使在立体拍摄的情况下,也经常需要转换。除了上面提到的难以拍摄的场景之外,还存在立体视图中的不匹配太大而无法调整的情况,并且执行2D到立体声转换更简单,将其中一个视图视为原始2D源。
一般问题[ 编辑]
不考虑特定算法,所有转换工作流程都应解决以下任务:[4][5]
- “深度预算”的分配 - 定义允许的视差或深度的范围,什么深度值对应于屏幕位置(所谓的“会聚点”位置),屏幕外效果的允许距离范围和背后 - 屏幕背景对象。如果立体对中的对象在两只眼睛的位置完全相同,则它将出现在屏幕表面上,并且它将处于零视差。屏幕前方的物体被称为负视差,并且屏幕后面的背景图像处于正视差。左眼图像和右眼图像的对象位置存在相应的负或正偏移。
- 根据场景类型和动作控制舒适的视差 - 过多的视差或相互冲突的深度线索可能会导致眼睛疲劳和恶心的影响
- 填充未覆盖区域 - 左视图或右视图图像显示来自不同角度的场景,并且原始2D图像中由前景覆盖的对象或整个对象的部分应在立体对中可见。有时背景表面是已知的或可以估计的,因此它们应该用于填充未覆盖的区域。否则,未知区域必须由艺术家填写或修复,因为无法进行精确重建。
高质量的转换方法还应该解决许多典型问题,包括:
- 半透明物体
- 思考
- 模糊半透明对象边框 - 例如头发,毛发,前景离焦对象,薄对象
- 胶片颗粒(真实的或人造的)和类似的噪音效果
- 场景快速不稳定
- 小颗粒 - 雨,雪,爆炸等。
质量半自动转换[ 编辑]
基于深度的转换[ 编辑]
大多数半自动立体声转换方法使用深度图和基于深度图像的渲染。[4][5]
该想法是为每个帧或一系列同质帧创建称为“ 深度图 ” 的单独辅助图片,以指示场景中存在的对象的深度。深度图是具有与原始2D图像相同尺寸的单独灰度图像,具有各种灰度阴影以指示帧的每个部分的深度。虽然深度映射可以在视频中产生相当强大的3D对象幻觉,但它本身不支持半透明对象或区域,也不允许明确使用遮挡,因此这些和其他类似问题应通过单独处理方法。
深度图的一个例子
从单视图或多视图深度图或轮廓生成和重建3D形状[6]
基于深度的转换方法的主要步骤是:
- 深度预算分配 - 场景中的总深度以及屏幕平面的位置。
- 图像分割,遮罩或遮罩的创建,通常通过rotoscoping。应隔离每个重要的表面。详细程度取决于所需的转换质量和预算。
- 深度图创建。应为每个孤立的表面分配深度图。单独的深度图应该组成场景深度图。这是一个迭代过程,需要调整对象,形状,深度以及立体声中间结果的可视化。深度微浮雕,3D形状被添加到最重要的表面,以防止立体图像看起来像刚刚设置在不同深度的平面图像的组合时的“纸板”效果。
- 基于2D +深度的立体声生成以及任何补充信息,例如干净的板,恢复的背景,透明度地图等。当过程完成时,将创建左右图像。通常将原始2D图像视为中心图像,从而生成两个立体视图。然而,一些方法提出将原始图像用作一只眼睛的图像并且仅生成另一只眼睛的图像以最小化转换成本。[4]在立体声生成期间,原始图像的像素根据深度图,最大选择视差和屏幕表面位置向左或向右移位。
- 重建和绘画未被立体声发生器填充的任何未覆盖区域。
立体声可以以任何格式呈现以供预览,包括立体照片。
耗时的步骤是图像分割/旋转扫描,深度图创建和未覆盖区域填充。后者对于最高质量的转换尤为重要。
有各种自动化技术用于深度图创建和背景重建。例如,自动深度估计可用于生成特定帧和镜头的初始深度图。[7]
从事这种工作的人可能被称为深度艺术家。[8]
多层次[ 编辑]
深度映射,多层次的发展通过引入几层灰度深度掩模来实现有限的半透明度,从而解决深度映射的局限性。与简单技术类似,[9]多层次涉及将深度图应用于平面图像的多个“切片”,从而更好地近似深度和突出。每帧单独处理的层数越多,3D幻觉的质量就越高。
其他方法[ 编辑]
3D重建和重新投影可以用于立体声转换。它涉及场景3D模型创建,原始图像表面的提取作为3D对象的纹理,最后,从两个虚拟相机渲染3D场景以获取立体视频。对于具有静态刚性物体的场景,例如具有建筑物的内部镜头,内部镜头,但是具有非刚体和柔和模糊边缘的问题,该方法足够好。[3]
另一种方法是设置左右虚拟摄像机,既偏离原始摄像机,又分割偏移差异,然后绘制出孤立对象和字符的遮挡边缘。基本上清洁电镀几个背景,中间地面和前景元素。
双眼视差也可以从简单的几何形状导出。[10]
自动转换[ 编辑]
动作深度[ 编辑]
可以使用不同类型的运动自动估计深度。在相机运动的情况下,可以计算整个场景的深度图。此外,可以检测物体运动,并且可以为运动区域分配比背景更小的深度值。遮挡提供有关移动表面的相对位置的信息。[11][12]
焦点深度[ 编辑]
这种类型的方法也称为“离焦深度”和“模糊深度”。[11][13]关于“离焦深度”(DFD)方法,深度信息是基于所考虑对象的模糊量来估计的,而“从焦点深度”(DFF)方法倾向于比较深度信息的锐度。对不同焦距拍摄的一系列图像进行对象,以找出它与相机的距离。DFD仅需要两个或三个不同的焦点才能正常工作,而DFF至少需要10到15个图像,但比前一个方法更准确。
如果在处理过的图像中检测到天空,则还可以考虑到除了朦胧之外的更远的物体由于厚的空气层而应该更加去饱和并且更蓝。[13]
透视深度[ 编辑]
该方法的想法是基于这样的事实:平行线,例如铁轨和路边,似乎与距离会聚,最终到达地平线上的消失点。找到这个消失点给出了整个图像的最远点。[11][13]
线条汇聚越多,它们看起来就越远。因此,对于深度图,两个相邻消失线之间的区域可以用梯度平面近似。
2D到3D视频转换 三维重建的更多相关文章
- opengl中场景变换|2D与3D互转换(转)
opengl中场景变换|2D与3D互转换 我们生活在一个三维的世界——如果要观察一个物体,我们可以: 1.从不同的位置去观察它.(视图变换) 2.移动或者旋转它,当然了,如果它只是计算机里面的物体,我 ...
- css3的2D和3D的转换
一:2D转换: 通过 CSS3 transform转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. 2D移动:translate().使用translate()函数,你可以把元素从原来的位置移 ...
- 开源|如何使用CNN将视频从2D到3D进行自动转换(附源代码)
http://www.sohu.com/a/128924237_642762 全球人工智能 文章来源:GitHub 作者:Eric Junyuan Xie 它是如何运行的? 在运行代码之前,请先根据官 ...
- 单图像三维重建、2D到3D风格迁移和3D DeepDream
作者:Longway Date:2020-04-25 来源:单图像三维重建.2D到3D风格迁移和3D DeepDream 项目网址:http://hiroharu-kato.com/projects_ ...
- 论文翻译——Rapid 2D-to-3D conversion——快速2D到3D转换
https://blog.csdn.net/qq_33445835/article/details/80143598 目前想做一个关于2D转3D的项目,由于国内资料比较少而且大部分都是基于国外的研究 ...
- Rapid 2D-to-3D conversion——快速2D到3D转换
https://blog.csdn.net/qq_33445835/article/details/80143598 目前想做一个关于2D转3D的项目,由于国内资料比较少而且大部分都是基于国外的研究 ...
- CSS笔记(十二)CSS3之2D和3D转换
参考:http://www.w3school.com.cn/css3/css3_2dtransform.asp 2D Transform 方法 函数 描述 matrix(n,n,n,n,n,n) 定义 ...
- css3动画2D、3D转换
css3动画的2D.3D转换代码: <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- CSS3 2D、3D转换
2D转换方法:transform().rotate().scale().skew().matrix() 3D转换方法:rotateX().rotateY() 1.示例代码 <!DOCTYPE h ...
随机推荐
- HA 高可用集群概述及其原理解析
HA 高可用集群概述及其原理解析 1. 概述 1)所谓HA(High Available),即高可用(7*24小时不中断服务). 2)实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件 ...
- 多个echarts图自适应屏幕大小
当一个echarts图时,可以这样做 //下面my_charts是html中echarts的ID var myChart= echarts.init(document.getElementById(& ...
- DCL 管理权限
一个数据库里面有着多个用户,每个用户的权限也不仅相同. 一.查询权限 1.基本语法格式: show grants for '用户名'@'主机名'; 2.具体操作 查看 user1 用户的权限 注意: ...
- 笔谈FFmpeg(二)
经过前面的学习对FFmpeg的基本流程已经很熟悉了,现在到了掌握其中细节的时候了,用FFmpeg做播放器解码操作中,涉及到了一些结构体,这些结构之间到底有什么关系,它们是怎样协同工作的呢.文章 FFM ...
- union 和 union all的区别
union 和 union all的区别 相同点和不同点 相同点:union和union all 都是对于多个查询结果的并集进行操作不同点:1.union 不会输出两个结果并集的重复行2.union ...
- robot framework笔记(二):在RF中自定义chrome启动参数
(一)在RF中自定义chrome启动参数 这里主要是实现下面2个功能 1.禁用chrome正受自动测试软件控制的提示 2.设置默认的下载路径(一些导出.下载类的功能,将文件下载到指定路径下) 自定义一 ...
- 1-Spark-1-性能调优-数据倾斜1-特征/常见原因/后果/常见调优方案
数据倾斜特征:个别Task处理大部分数据 后果:1.OOM;2.速度变慢,甚至变得慢的不可接受 常见原因: 数据倾斜的定位: 1.WebUI(查看Task运行的数据量的大小). 2.Log,查看log ...
- centos7误删除python2.7导致的python和yum不可用处理
centos7误删除python2.7后导致yum不可用: 问题截图 解决方法: 1.在opt目录下创建site_package/python3递归目录,然后下载以下RPM包,并存入/opt/site ...
- C实现栈与队列
C实现栈与队列 做了个栈和队列的基础demo,写得比较快,就没有什么注释,其实看各个函数的名字就可以知道函数的作用了. 栈的实现 #include <stdio.h> #include & ...
- 使用VS.NET2019做为C++开发专用IDE
一.下载安装包: https://visualstudio.microsoft.com/zh-hans/downloads/ 我下载的是企业版本. 二.安装支持C++ 序列号: Visual Stud ...