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 ...
随机推荐
- SpringBoot--对SpirngMVC的自动配置
SpringBoot对SpringMVC提供了许多自动配置 Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver b ...
- 关于Java无法解码(ajax编码 Java解码)
今天遇到了一个非常奇~~~~~~葩的问题,无解! 一向前端碰到中文,请求都使用encodeURI(encodeURI("中文"))编码,然后后端使用URLDecoder.decod ...
- java之struts2的ThreadLocal和ActionContext
在之前的学习中,我们知道struts2可以将表单中的数据自动设置到处理类的属性上,还有类型转换等其他功能.那么struts2是怎样做这件事情的呢? struts2完成这些功能是通过拦截器来完成的,并且 ...
- java 单链表反转
最近与人瞎聊,聊到各大厂的面试题,其中有一个就是用java实现单链表反转.闲来无事,决定就这个问题进行一番尝试. 1.准备链表 准备一个由DataNode组成的单向链表,DataNode如下: pub ...
- 【开发工具】- Xshell工具的下载和安装
下载地址:https://www.netsarang.com/zh/free-for-home-school/ Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Micro ...
- 通过 Web Deploy 发布的配置
罩着别人的配置弄了一下午,死活认证通不过,后来好不容易试出来,备忘. 服务端:安装IIS,启动管理程序,安装Web Deploy, 建立网站,建立IIS用户,进网站的权限管理里面给IIS用户授权. V ...
- vue页面跳转
一.在template中的常见写法: <router-link to="/recommend"> <button class="button" ...
- CentOS7.5 部署Ceph luminous
环境 两台CentOS7.5,每台各两块硬盘部署OSD public network = 10.0.0.0/24 cluster network = 172.16.0.0/24 导入ceph的rpm ...
- layui.table前端+后台处理+分页
前端 注:监听工具条没有详细写,但路子一样的 @section head{ <script src="~/Content/jquery-easyui-1.5.5.4/jquery.ea ...
- Win10-安装.net 2,3,.3.5
win10x64(ver1809).iso放镜像到光驱后执行cmd(.net3.5包括2和3)dism.exe /online /enable-feature /featurename:NetFx3 ...