李雪松 常 乐
(北京电影学院 影视技术系,北京 100088)
Matchmoving又称作运动匹配,它是影视后期视效制作流程中的一个非常重要的环节,主要是指将虚拟画面与实拍画面在运动和空间透视上进行匹配的过程。因为现在的电影超过90%的镜头都是运动镜头,所以在后期有大量的镜头都很有可能需要进入Matchmoving这个环节,一般来说这个环节所耗费的时间在整个后期制作周期中的占比超过5%。它主要致力于计算出实拍相机或实拍物体在三维空间中的运动姿态和轨迹,并将这些数据赋予在虚拟空间中的虚拟相机,从而将两个画面在运动和透视上进行完美的匹配。Matchmoving不仅应用于电影领域,在其他多媒体领域也有诸多应用,体育赛事转播、天气预报、多媒体晚会直播、网络直播等平台近些年来都使用了相关技术。
Matchmoving在电影中的应用最早可以追溯到上个世纪七十年代后期好莱坞的真人漫画电影《Pete's Dragon》,片中需要将卡通角色与真人角色、场景进行匹配并且还包括运动镜头。另一部更具意义的影片是来自1992年拍摄的《Death Becomes Her》(《飞越长生》),虽然片中的运动匹配仍然主要是依靠手动来完成,但后期特效全都是在数字平台的环境中制作完成。这些数字工作平台的开发者就是大名鼎鼎的工业光魔(Industrial Light and Magic),后来工业光魔又在这套系统之上创建了一个能够计算深度的3D跟踪系统,并且将这套系统大量使用在了第一部《侏罗纪公园》中。这成为了现在非常成熟的Matchmoving软件的雏形。
目前后期视效流程在Matchmoving阶段主要处理四种类型的问题:固定机位匹配、运动机位匹配、运动物体匹配、动作捕捉。本文主要对前两种问题展开探讨。要完成以上这四种类型的工作,只是依靠成熟的Matchmoving后期软件是不够的,通常需要在前期实拍时就要做好多种相关数据的记录,如果工作缺失,后期的制作难度将会非常大甚至无法完成。
固定机位匹配是最简单的一种,但是如果一些关键的参数没有正确地匹配,在后期制作时也会比较麻烦。进行固定机位匹配,我们首先要记录摄影机的焦距以及感光元件(CMOS)尺寸,得到实拍摄影机的视场角。因为在合成的时候虚拟摄影机的视野与画幅需要与实拍的摄影机保持完全一致,而决定视野范围的关键就是视场角。对于每种摄影机的CMOS尺寸我们都可以通过厂家查询得到,需要注意的是有些摄影机在不同分辨率或者帧率设置的情况下CMOS的真实使用面积是不一样的。当然不同尺寸感光元件、不同焦距之间的匹配有可能会得到同样的视场角,在固定机位匹配的时,一般只保证视场角的一致就可以了。对于焦距,需要将每一条镜头使用的焦距数值都如实记录,一般摄影机旁边会有专门的特效场记来完成,如果一条镜头有变焦的动作还需要记录下变焦的大致范围,如果使用的是带LDS的镜头,焦点、焦距以及感光元件等数据就可以保存在视频文件的元数据里。另外还有一个很重要的问题就是一定要记录下摄影机的姿态,比如有无俯仰角、滚动角,这样在三维环境中或者到外景采集背景素材的时候也就必须使用同样的机身姿态去摆放摄影机,这样两次拍摄的透视角度才能够准确地匹配起来。
运动机位匹配是整个Matchmoving后期流程中最常见也最主要的工作。运动机位跟踪的本质是摄影机轨迹的反求,如果要想精准地反求出视频素材中摄影机原本的空间运动轨迹需要满足以下三个基本条件:足够的视差、有效的特征点、详细的拍摄现场信息。
众所周知相机镜头的画面是包含透视效果的,如果机位发生变化,透视也会随着机位改变,这就是透视变化,也被称作视差平移,简称视差(parallax)。运动机位的反求就是通过画面中物体在视差上的变化来进行计算的。图1是在一辆高速行驶的列车上拍摄的,可以看出在画面中近处的景物要比远处的景物运动速度快。因此我们要检测一个镜头画面是否有视差,只要检测前景的物体是不是比背景的物体移动得更多就可以。如果前后景的物体在画面运动时保持相对静止,那么就可以认为该画面不存在视差。这种情况通常是脚架拍摄,画面虽然有运动但只是水平或者垂直方向上的摇移(yaw,pitch)。这种情况可以视为相机没有运动轨迹只有姿态改变,在反求时有专门的解算模式选项,但是在前期拍摄时我们一定要对这种镜头进行特别的注明以便后期人员能够正确切换计算模式。图2中的界面是PFtrack中针对脚架拍摄的情况,位移设置为无,旋转设置为正常。但是这种解算方式存在一些限制,它会将场景中的特征点全部视作处于同一个球面上,而相机所处的位置就是球心的位置,这样的话我们无法得到一个准确的空间点云信息。通常我们都需要在场景中添加带动画的三维角色或者物体,并且可能还需要与场景互动,这时得到一个相对准确的特征点的空间信息就变得十分必要。而主摄影机的运动方式仅能做摇移,提供不了足够的视差,那么在前期拍摄时我们就需要记录该场景辅助机位的照片或视频素材作为获得视差的参考。通常辅助机位的画面要与主机位画面有足够多的共同特征点(一般在7个点以上),这样在后期的反求软件中我们可以根据专有的辅助解算功能计算出场景中的点云信息,也就是特征点之间的真实空间关系。图3中借助了9个辅助机位成功解算出了场景特征点的真实空间关系,理论上只需要一个辅助机位即可,但是为了验证结果的可靠有效,应该多角度多机位排布。最后有一种情况很容易让人忽视,在棚内拍绿幕的时候机位的运动轨迹和绿幕墙几乎完全平行,并且该机位使用的是一个很长的焦距,这种情况在后期解算时大概率会发生严重的偏差。因为绿幕和机位运动方向几乎平行,也就是说摄影机的光轴方向和绿幕是一直处于几乎垂直的状态,并且由于使用的是长焦,就意味着此时摄影机的视角很窄,在画面构图中除了绿幕墙上标记的点以外几乎找不到其他的特征点。这样画面中的特征点到相机的距离其实都相差无几,其实这是不太容易察觉到远近视差关系的,在后期反求软件也很难提取到有效的视差线索用以解算。这种情况有两种解决方案:第一种方法是在绿幕墙前面增加一些标记杆(图4),从而提供一些与绿幕墙有明显视差的特征点,当然标记杆也要处理成和背景一致的颜色,否则会增加抠像工作量,标记杆也要轻便灵活便于随时增减调整。第二种方法是与现场摄影师或者导演协商能否使用更短的焦距以便获得更大的视野。如果能够获取到更大范围的特征点,那么即便是特征点处于同一平面,其和摄影机在相同距离也可获得更大的反差,这样反求软件也能够从画面中感知到视差。之前这种方法不推荐使用的原因是最终剪辑时为了获取预想的构图方式,还需要对素材进行裁切,这样会损失分辨率。但是在今天已经出现了8K大画幅摄影机的情况下这种方式其实也未必不可行,超高的分辨率在后期可以提供足够大的画幅裁切空间。
图1 高速运动的列车窗外素材所捕获的特征点轨迹
图2 PFtrack中的跟踪类型界面选项以及在无位移模式下的点云分布情况
图3 辅助机位解算的节点连接以及空间点云和各机位的分布情况
图4 标记杆在摄影机视野变窄的情况下的应用
图5 对极几何原理
我们知道Matchmoving软件是通过检测画面中的视差来反求解算的,这里的检测方式其实是通过对极几何(Epipolar geometry)的相关原理来实现的。图5中C1和C2是两个相机中心,P点是真实空间中的一个点,pl和pr是P点在左右两个相机上的投影,那么C1→pl就是由C1相机反向发出的光线。单凭左边的相机无法知道P点位置到底在哪里,它可能存在于P1、P2、P3……但是一旦引入右边的相机C2,C2同样过像点发出一条光线,它们相交的位置就能确定P点的位置。在图中P、C1、C2三点构成的面就叫做两个画面的对极平面,它们分别与左右两个像平面相交于pl→e1和pr→e2,分别记作“l”和“l′”,就是两条对极线。C1和C2的连线叫做基线,它与两个图像平面的交点就是对极点。画面中的所有对极线都会相交于各自的对极点,当然基线也有可能不与图像平面相交(对极点处于像平面之外)。从对极几何可得知,对于左边图像上的任意一点x,在右边图像中都有一条与之对应的对极线l′,并且右边图像上与之相对应的像点x′也必定在该对极线上面。因此,存在一个从左图像点x到右图对极线l′的映射:
x→l′
(1)
而基础矩阵(fundamental matrix)表示的也就是这种点到直线的映射关系。基础矩阵F有繁复的展开推导过程,因为也不是本文的重点,这里直接给出:
(pl)F pr = 0
(2)
从上面的原理公式和图5 我们可以看出,处于同一个场景中的不同位置之上拍摄的画面之间其实存在着某种关联约束——对极约束,这种约束关系就是Matchmoving实现反求解算的核心依据,而这种约束的建立主要是基于采样画面中的特征点来实现。并不是画面中所有的特征点都可以被用于反求和解算,它们必须要满足一些条件才能够被软件很好地识别并求出正确的结果。这需要我们在前期拍摄的时候对此有充分的准备措施。
3.2.1足够的特征点数量
由刚才的公式知道了反求解算的本质就是矩阵F的求解过程,可以对刚才的公式继续推导演变为:
(x′)K′R×SKx=0
(3)
其中K为相机的内参矩阵,R为两个机位间的旋转矩阵,S为两个机位之间位移向量的反对称矩阵,R和S 其实就构成了需要求解的相机轨迹,x′与x是两幅图像上的任意一对点对。每一组点对的匹配提供了计算F系数的一个线性方程,而F的自由度为7,所以要解这个方程组至少需要7个点对,也就是至少要确保在每帧画面中能够至少找到7个特征点。这是最稳妥的办法,也有一些改进的算法利用已知帧的位置去反推其它帧的位置,可能就不必在所有的帧都必须有7个点,但是往往由于成像质量噪点等的影响,一般情况下还是会尽可能地在前期拍摄时保证每帧画面可提取超过7个特征点。当计算出了R和S,就可以利用三角测量法进而计算出像点在空间中的真实位置P。
3.2.2 特征点要相对场景保持静止
我们反求的是摄影机相对于场景的运动,运动都是相对的,一般将摄影机视作运动,拍摄场景视作静止,那么选取的所有特征点之间都必须保持相对静止或者说是一个刚性的连接。这里着重要提出的是有一些点容易被忽视或者误判为静止的点,比如高光点、非镜面反射点、前后景物遮挡交叉产生的点,这样的点都会随着相机拍摄角度的变化而产生相对于场景的运动。还有在棚内拍摄的时候有一些戏需要用到风机,而风机会扰动绿幕,这样在绿幕上的点就不能够再使用了,需要再另外添加一些刚性的点如图6所示,这里可以添加一些标记杆。
图6 摄影棚中常见的风扇以及标记杆
3.2.3 与蓝绿背景存在明显的亮度或者色度上的反差
Matchmoving软件具备一些自动比对识别跟踪的功能,从而极大地提高了跟踪效率。这些功能主要通过画面中亮度和色度的反差来进行比对和识别,一般是以亮度的反差为优先选取模式,因为跟踪反求的素材通常是代理文件,经过压缩和采样,色度一般都会有较大损失,而亮度的损失很小。所以我们在前期布置特征点的时候最好依据这一特性来进行布置,如果背景是绿色,那么特征点就会使用比绿幕的亮度更高或者更低一些的绿色来标记,这样不仅容易识别跟踪,还会节省抠像的工作量。
3.2.4 形态多样化、边缘锐利
这里也是基于自动跟踪的功能进行前期优化。如果我们的特征点都是非常相似的点,间距也比较近,那么在识别的时候软件很有可能将邻近的点识别为同一个点,这样跟踪会产生较大的偏差,会严重影响我们的解算结果。而边缘锐利会使特征点点位更加容易辨别。如图7如果是一个圆点,在较远的距离上可以很好地识别为一个点,但是一旦机位向前推进或者变焦,特征点开始变大成为了一个圆,识别中心就很可能会发生偏移,而锐利的边缘就不太容易发生这种情况。
图7 各种形态的标记点
3.2.5 特征点在空间中的位置不能离合成位置太远
图8 近处有无标记点的跟踪对比
有时在室外拍摄的时候,场地可能非常空旷,前景较难提取有效的特征点,绝大部分特征点都处于很远处,但是需要在前景合成CG物体。那么此时仅仅通过远处的特征点进行的解算结果用于近处的CG参考物体,很可能会发生抖动、匹配不稳定的问题。如图8所示,如果仅提取远处树上的特征点用于解算,这些特征点反映在画面上可能也就是几个像素的直径,但是它们在真实空间中的尺寸可能很大,达到几十公分甚至几米,中间还可能会有成像质量如噪点等因素的影响,此时即便跟踪发生了很大的偏差,人眼和软件都不太容易察觉并进行纠正,这显然会影响跟踪质量。这时需要在合成位置的附近人为添加一些特征点来辅助解算。
3.2.6 有大小疏密间隔的分布以及有固定间距的分布
在棚内拍摄时考虑到机位运动的随机性,有时会远离绿幕,有时则贴得很近,那么在周边布点时最好间或有两到三种尺寸的标记点(图9),这样可以适应机位的远近变化,当机位推进时使用小一些的点,机位拉远后则可以继续跟踪较大一些的点。如果我们将场景中的某些点进行固定间距分布,那么相当于已知了这些点的空间分布关系,也就是图5中P点确切的值,根据之前的公式去推论,可以通过较少的点得到更准确的相机轨迹以及场景空间尺寸。这种方法是排布标记点的基本法则。
图9 标记点的大小以及疏密分布
一副图像的生成除了与外部环境有关之外,更与摄影机本身的各种参数设置有着密不可分的关系,相机的内参K可以描述摄影机的一些重要特性,它在之前的公式里也出现过。它主要包含四个部分: 内参矩阵、畸变系数、运动模糊与噪点和准确完整的现场空间信息。
(1)内参矩阵
(4)
k就是内参矩阵,正常情况下f=f为焦距大小,s一般都视作理想值为0,x、y为像素坐标系下的主点坐标,如果已知f和主点的值,那就已知了k的值,所以在前期拍摄现场,每个镜头都应认真记录拍摄时的焦距以及感光元件大小(通常该值固定不变)。已知这两个值就知道了真实的视场角大小,从而能帮助我们缩小解算的范围,如果有变焦的操作还需要记录下变焦的大致范围以备后期参考,这和固定机位匹配情况完全一致。
(2)畸变系数
图10 畸变的常见类型
畸变是由摄影机系统设计、制作、装配所引起的像点偏离其理想位置点的现象,畸变主要分为径向畸变和切向畸变,我们用畸变系数来描述畸变的情况。电影镜头一般加工的精度都比较高,畸变系数较小并且一般都属于径向畸变。径向畸变又分为桶形畸变和枕形畸变(图10),一般都可以直接提取画面中的信息进行矫正,但是为了更精准地计算畸变的系数,一般会在前期拍摄的时候用一些特定的方法记录畸变系数。方法就是提前将影片拍摄要用到的机身和镜头依次组合然后拍摄棋牌格图案,并将图案按照机身和镜头的编号逐一记录,在后期Matchmoving人员可以准确地通过相应的画面采样计算畸变系数。另外有些时候由于创作的需要会使用变形镜头来拍摄,变形镜头也是利用镜头的光学特性对影像进行了挤压,我们在处理这一类素材时通常不直接使用棋盘格来校正,而是先得到镜头的变形系数,利用系数在反求软件中将素材还原到正常的宽高比后再进行畸变的校正。在还原时原则上要保持素材高度不变,只对宽度进行拉伸,但是为了能尽可能保持画面的锐度一般会反向操作。
(3)运动模糊与噪点
除了摄影机的内部参数,成像时产生的运动模糊和噪点也会直接对跟踪质量产生很大的影响。我们需要尽一切可能将这两样干扰降到最低,一些导演或摄影师有时会想要在实拍时故意制造这些干扰,他们将之视作效果,前期视效人员在这种时候必须要坚定自己的立场并明确告诉他们这些效果在后期都非常容易实现,在前期还是必须尽量保持画面的干净清晰完整,尽可能地记录场景原本信息。遇到噪点大的画面尽量降低感光度,给更多的光,遇到运动模糊较大的情况就减小叶子板开角或者增大电子快门速度同时可能也要给出更多的光。前期视效人员必须随时和摄影师、灯光师等现场工作人员保持畅通无阻的联系。
(4)准确完整的现场空间信息
如果已知现场的空间信息,可以为后期的解算提供很大的帮助。之前我们采用的方式是测量记录标记点之间的距离,但是这种方法能够记录的信息比较有限,而经常利用到的很多特征点都是在标记点以外的点,这些点可以通过全站仪来进行测量,并现场拍照为这些点做好编号。当然最好的方法是将整个拍摄现场用激光扫描进行扫描生成场景的点云,这和用全站仪测量得到的数据是同一种数据,只不过点的密度和数量要大得多,速度也更快,几乎可以做到无死角记录。如图11在前期拍摄现场利用激光扫描仪得到的点云可以导入PFtrack并与画面中对应的二维特征点指定匹配从而完成反求解算,这样得到的相机轨迹可以高度还原实拍现场的真实相机轨迹。当然激光扫描的方式比较昂贵,我们也可以用图像扫描的方式来完成现场点云的重建,但是精度会稍差。
图11 PFtrack中导入从外部导入点云的跟踪情况
Matchmoving的完整流程是需要覆盖前后期的,有很多镜头如果在前期的工作没有做充分会直接影响后期的工作效率和成败,但是前期的工作又必须是在充分了解熟悉了Matchmoving的后期工作原理机制后予以展开。在前期的每一个动作和步骤都必须要思路清晰目的明确,问题一旦明确,处置需要非常果断,要尽可能地把问题放在前期解决掉。꿲
注释
①LDS全称为Lens Data System,是ARRI专门针对前期镜头数据记录开发的系统。
②yaw是偏航角,特指围绕Y轴方向的旋转,pitch是特指俯仰角。
③PFtrack是一款功能非常齐全也是比较主流的Matchmoving软件。