原创性声明
本文为作者原创,在个人Blog首次发布,如需转载请注明引用出处。(yanzhang.cg@gmail.com 或 https://graphicyan.github.io/)
1 引言
1.1 虚拟制片
1.1.1 混合虚拟制片
混合虚拟制片是一种通过摄像机追踪将绿幕摄影与CG元素合成的技术,可为摄影导
演和摄影助理提供实时预览,并在后期制作阶段中完善;也可直接作为摄像机的最
终画面。这类虚拟制片已在现场直播中使用了一段时间,特别是在体育节目中,不
过越来越多的专题片和连播片也在应用该技术。混合虚拟制片的两种主要模式是实
时制作和后期制作。
绿幕中的实时混合虚拟制片最早出现在广播新闻天气预报中,天气预报员通过色键
技术与天气预报图像融为一体。这类效果通常差强人意,摄像机是固定的,而且质
量不可能达到电影级水准。尽管如此,近年来随着GPU速度的提升和实时引擎的引
入,这类解决方案的质量有了很大提高。例如,Zero Density系统利用虚幻引擎制作
各种新闻和娱乐节目的现场合成效果。将Zero Density用于演播室内实时虚拟制片的
用户包括福克斯体育、Canal +、RTL、TF1和天空新闻。
在拍摄绿幕时,后期制作类型的混合虚拟制片可使用摄像机跟踪数据,从而提供实
时的镜头内合成图像。实时合成通常使用代理分辨率。在绿幕前捕捉/拍摄演员和道
具时,它通常用作勾画镜头的参照。后期制作类型的混合虚拟制片旨在帮助导演、
摄影导演和摄影助理更好地掌握虚拟元素(例如 CG角色的位置)并设置扩展,以便
在后期中更好地集成视觉特效。《奇幻森林》在制作时采用了该方法的高级版本。
这种技术还广泛应用于最近的电视连续剧中,例如《复仇》、《泛美航空》、《童
话镇》以及《美国众神》。
1.1.2 应用场景
1.1.3 工作流特性
assets/post_images/Mixed-Virtual-Production/image_008.assets/post_images/Mixed-Virtual-Production/image_007.assets/post_images/Mixed-Virtual-Production/image_006.assets/post_images/Mixed-Virtual-Production/image_005.####
1.2 关键词
1.2.1 绿幕(Green Screen)
理论上可以是任何颜色的单色背景,使其在处理后为透明或者从拍摄中除去。通常是亮绿色(bright green),因为其与人体皮肤距离最远。
1.2.2 色键技术(Chroma Key)
1.2.3 抠图(Keying)
1.2.4 溢色(Spill)
来自绿幕反射的有色光达到主物体上而产生,影响抠图阶段,需用各种手段来抑制。
1.3 关键要素
1.3.1 正确的绿
用非反射材质的绿幕(棉优于尼龙),最好是 chorma key green 或者 digi green。偶尔也需要用到蓝幕,取决于想要拍摄的场景:blue screen vs green screen。
1.3.2 主体和背景要分开
最好保持主体距离绿幕6英尺以上(1.8m),这能很大程度降低溢色、避免不想要的阴影投射在绿幕上。
1.3.3 输入决定成败(RAW is King)
尽可能使用越高的比特率视频、最少压缩的编解码器。10bit颜色由于8bit,ProRes442/444或者最好RAW格式的输入。
1.3.4 光要打好
1.3.5 处理动态模糊
使用尽可能高的快门速度来减少动态模糊,有助于创造更加纯净的抠图。但在后处理时,要把动态模糊加回来。
1.3.6 用专业的抠图软件
Ae、Pr、HitFilm各种后期软件,还有开源的专业抠图软件比如DaVinci Resolve。
2 系统配置与实现
2.1 整体框架
2.1.1 流程参考
https://www.youtube.com/watch?v=lRQvi5Jc_Js
2.1.2 系统框图
2.2 配置绿幕
2.2.1 绿幕整套装备
Neewer green screen kit(190 dollars)
This massive package boasts a 6×9 screen that includes a white and black backdrop, an 8.5×10 stand support system, six clamps, four light stands, two umbrellas, two softboxes, four daylight bulbs, and bags to carry the kit around.
2.2.2 DIY
- 绿幕:工艺布料、彩色泡沫板、墙体刷漆(哑光漆)。
- 灯光:分开打光、柔和、减少反射、LED更佳。
- 支架:稳定、平整。
(参考EMART Kit)
2.3 硬件配置
2.3.1 硬件需要
- Vive Tracker
- Video I/O Card(专业级)
2.3.2 场地配置
- 确定场地尺寸
- 结合虚拟勘景
- 推算所需绿幕尺寸
- 布置现场
2.3.3 相机配置
- 低ISO、高快门速度、大光圈、高像素。
- 相机类型(配合不同的IO及算法接口)。
- 畸变校准(参数获取)。
2.3.4 灯光布置
2.4 软件需要
2.4.1 离线后处理合成
2.4.2 实时合成
- 去Montion Blur。
- 自动色键获取。
- 抠图和去溢色。
- 实时渲染及图层合并。
- 光影融合。
- 加Motion Blur。
3 基于Unreal
3.1 实时合成
3.1.1 Chroma Keying(抠图)
- RGB to YCoCg(https://en.wikipedia.org/wiki/YCoCg)
- Chroma Mask multiplied by Luma
- SmoothStep
3.1.2 Despill(去溢色)
- RGB to HSV
- Minus KeyColor Hue
- Smooth by Hue Range
- Lerp to Desaturation by Hue Diff
3.1.3 前后景及切片
- 前景层对象捕获。
- 媒体流抠图及mask贴片。
- 背景实时渲染。
- 各种叠放逻辑进行合图。
3.1.4 光影融合
3.2 镜头及输入流
3.2.1 镜头位置绑定
- 入瞳点(entrance pupil)对齐保证无视差。
- 入瞳点测量。 http://www.johnhpanos.com/epcalib.htm
- 启动Steam VR,链接Vive Tracker到电脑。
- 开启LiveLink,创建虚拟Tracker,并实时链接到C Vive。
3.2.2 镜头畸变校准
- 悬垂线在正常的物理镜头中,一般不会是完全竖直的。
- 相机拍摄模式、焦距、镜头、分辨率均会决定摄像头的畸变情况,任意调整需触发重新校准。
- 常用棋盘格来进行畸变参数计算采集,连续拍多组位置、角度不同的棋盘格相片,用CV的方法可以计算。
- 输入流矫正(REtracker Calibrator)
- 虚拟相机逆矫正(LiveLinkXR & Calibration)
3.2.3 专业采集卡
- AJA or BMD
(https://www.aja.com/products/kona-5-oem)
- AJA I/O or BlackMagic I/O software
- 时间码和集中同步,AJA或BlackMagic有对应的GenLock可以直接用,如果是非采集卡普通摄像头需要自己加。
4 缺陷与方向
4.1 问题分析
完美的软硬件结合配合最高配置将使得整个流程输出的质量误差极小,然而实际过程中不会有那么多完美的状态,其中引入问题的关键点主要如下。
4.1.1 相机误差
4.1.2 绿幕环境问题
4.1.3 抠图算法难点
4.1.4 光影合成问题
4.1.5 虚实空间对应难
4.2 相关Research
4.2.1 背景分割
https://grail.cs.washington.edu/projects/background-matting/
4.2.2 抠图和去溢色
http://yaksoy.github.io/keying/
4.2.3 单目相机姿态识别
https://vcai.mpi-inf.mpg.de/projects/PhysCap/
4.3 整体解决方案
4.3.1 Virtual Stage
https://www.microsoft.com/en-us/ai/ai-lab-virtual-stage
4.3.2 视频算法抠图
5 引用
- 《Interactive High-Quality Green-Screen Keying via Color Unmixing》 http://yaksoy.github.io/keying/
- 《Efficient mask expansion for green-screen keying using color distributions》https://dl.acm.org/doi/abs/10.1145/3306214.3338595
- 《Human Instance Matting via Mutual Guidance and Multi-Instance Refinement》 https://ieeexplore.ieee.org/document/9879184
- 《PhysCap: Physically Plausible Monocular 3D Motion Capture in Real Time》 https://vcai.mpi-inf.mpg.de/projects/PhysCap/
- 《Despilling and Color Replacement》https://learn.foundry.com/nuke/content/comp_environment/keying_with_chromakeyer/despill_controls.html
- 《Unreal实时合成入门课程》https://dev.epicgames.com/community/learning/courses/eOD/unreal-engine-cf1068/jyB4/unreal-engine-44093a
- 《在UE4中设置色键材质》https://www.unrealengine.com/zh-CN/tech-blog/setting-up-a-chroma-key-material-in-ue4
- 《虚幻引擎文档》 https://docs.unrealengine.com/4.27/zh-CN/
- 《Virtual Production Tutorials, by Greg Corson》 https://www.youtube.com/playlist?list=PL4A6BJ4uPvvt1igHNPBNR3CeOsCLGyZ2U
- 《虚拟制片实践指南》第一册、第二册 虚拟制片指南第一册.pdf《虚拟制片实践指南》第二册.pdf
- 《单反科普专栏》 https://zhuanlan.zhihu.com/p/46716827