论文部分内容阅读
在这个短视频为王的信息时代,大家就算不发到相关社交媒体平台,相信也时不时会用手机拍一些家庭、生活、工作相关的视频内容,即便是现代手机摄像头基本都具备光学防抖和数字补偿算法的加持,但很多时候也一样会不可避免地产生画面的抖动,比如边走边拍,比如坐在车船上拍摄,或跟拍一些正在移动的对象,比如拍小朋友、宠物等等。对于熟悉Premiere、AfterEffect等专业视频软件的用户来说,其实基本就是傻瓜化的一键操作,不过这些付费软件的使用成本较高,大多数普通用户都只能“敬而远之”,那么开源的3D软件Blender有没有办法解决呢?答案是肯定的!
大多数人拍摄的视频往往都是大量的位移抖动,机位的倾斜相对较少,这种情况的防抖处理是比较简单的,特别是针对移动主体的拍摄,通过防抖处理可以很快速地将主体牢牢固定在视场固定点,大幅提升视觉稳定性。
但如果你拍摄的视频含有一定幅度的倾斜摇摆,比如在摇晃的船上进行拍摄,就需要在Blender中使用相对复杂一点点的Python表达式来解决这个问题,并且在理解本教程时也需要一定的中学数学基础,还望知悉。
无论上述哪一种抖动,我们的后期“防抖”首先都需要通过跟踪来获取锚点信息,而且这个跟踪相比反求摄像机来说要简单很多,首先我们看第一种情况,如图1所示,这段素材的抖动就是走路时带来的机位震动,当导出到PC端观看会产生明显的不适感,无论传播或留档都建议先做好防抖工作。首先我们要在画面中找到1个位置进行跟踪,注意,因为我们在不断地往前移动,所以跟踪的搜索区域要尽量大,这样才能保证机位拉近时不会脱离目标。
在这一个位置完成跟踪后,我们选择“重建”,“将空物体链接到轨迹”,这时候我们在3D视图中会看到一个空物体,播放时会看到这个空物体会按照跟踪轨迹进行摆动,并且它与摄像机是默认配对状态,也就是无论摄像机如何移动都没有问题,这跟我们之前做的物体跟踪是有区别的。
接下来我们新建一个平面,并用视频作为材质,当然也可以使用“图像作为平面”插件直接导入视频平面,结果是一样的,并让摄像机取景完全覆盖整个视频,如图2所示。
这时候我们按空格键播放视频,会看到空物体在视频平面上游走,而我们这时候要做的,就是让视频平面与空物体在X、Y轴上进行反向移动,因为空物体链接的正是我们拍摄机位的位移,我们只需要抵消掉这个位移,就能实现画面的稳定了,这时候如图3一样为视频平面添加一个“复制位置”的物体约束,并将目标设定为空物体,翻转X和Y,这时候再回到摄像机进行播放,可以看到画面已经以跟踪点为中心实现了稳定效果,这时候我们只需要调整摄像机机位、焦距等数值,就能获得最终的增稳效果了。
注意,所有的稳定效果如果不想有黑边,都必须接受画面裁切,抖动越剧烈裁切幅度就越大,所以并不是所有的素材都适合做防抖,在拍摄时还是尽量要多留意。
对于画面存在倾斜的素材,如图4所示,我们就需要利用2个跟踪点来计算画面倾角,并通过设置驱动器来让视频平面根据跟踪点位置进行自动旋转处理。
与前一种方法不同的地方在于,对画面倾角的校正不能使用物体约束,而是要通过X、Y位置和Z轴旋转的驱动器来实现,首先我们右键打开视频平面的X位置驱动器,如图5设置驱动器变量,第一个变量我命名为varx,取左跟踪点空物体的X位置,第二个变量则是vary,取右跟踪点空物体的X位置,然后表达式为-(varx+vary)/2,意思是视频平面的X位置取兩个跟踪点X位置中间点的反值,这就抵消掉了X轴的抖动位移。而Y位置驱动器可以复制X位置的驱动器,但需要将类型改成Y位置,这样就实现了X、Y轴的位移防抖。
接下来我们对Z旋转进行驱动器设置,具体设置如图6。旋转的抵消逻辑是计算两个空物体连线与我们3D空间中X轴所形成的夹角,然后求反值来进行抵消即可,所以驱动器设置首先是分别计算两个空物体在X和Y轴上的距离,也就是用varR-varL取得在X轴上两点的距离,用warR-warL取得Y轴上两点的距离,再利用反正切函数atan就可求得我们想要的夹角度数,然后再在最前面加一个负号,就能实现倾斜角的抵消。
基本上通过两种手法,可以让我们拍摄的短视频有效地实现后期防抖效果,但注意,这种防抖显然需要场景中有固定存在的跟踪点才能实现,与Premiere、AfterEffect可以自动连续采样的防抖算法还是有一定的差距,但在有作用的前提下,胜在效果更可控,而且顺便也让大家理解了防抖数字算法的基础。当然,想要防抖效果最大化,前提是拍摄的素材最好不要太抖,否则即便是专业后期软件也很难救得了场……
第一步,判断防抖需求
大多数人拍摄的视频往往都是大量的位移抖动,机位的倾斜相对较少,这种情况的防抖处理是比较简单的,特别是针对移动主体的拍摄,通过防抖处理可以很快速地将主体牢牢固定在视场固定点,大幅提升视觉稳定性。
但如果你拍摄的视频含有一定幅度的倾斜摇摆,比如在摇晃的船上进行拍摄,就需要在Blender中使用相对复杂一点点的Python表达式来解决这个问题,并且在理解本教程时也需要一定的中学数学基础,还望知悉。
第二步,单点跟踪,对固定位置进行稳定计算
无论上述哪一种抖动,我们的后期“防抖”首先都需要通过跟踪来获取锚点信息,而且这个跟踪相比反求摄像机来说要简单很多,首先我们看第一种情况,如图1所示,这段素材的抖动就是走路时带来的机位震动,当导出到PC端观看会产生明显的不适感,无论传播或留档都建议先做好防抖工作。首先我们要在画面中找到1个位置进行跟踪,注意,因为我们在不断地往前移动,所以跟踪的搜索区域要尽量大,这样才能保证机位拉近时不会脱离目标。
在这一个位置完成跟踪后,我们选择“重建”,“将空物体链接到轨迹”,这时候我们在3D视图中会看到一个空物体,播放时会看到这个空物体会按照跟踪轨迹进行摆动,并且它与摄像机是默认配对状态,也就是无论摄像机如何移动都没有问题,这跟我们之前做的物体跟踪是有区别的。
接下来我们新建一个平面,并用视频作为材质,当然也可以使用“图像作为平面”插件直接导入视频平面,结果是一样的,并让摄像机取景完全覆盖整个视频,如图2所示。
这时候我们按空格键播放视频,会看到空物体在视频平面上游走,而我们这时候要做的,就是让视频平面与空物体在X、Y轴上进行反向移动,因为空物体链接的正是我们拍摄机位的位移,我们只需要抵消掉这个位移,就能实现画面的稳定了,这时候如图3一样为视频平面添加一个“复制位置”的物体约束,并将目标设定为空物体,翻转X和Y,这时候再回到摄像机进行播放,可以看到画面已经以跟踪点为中心实现了稳定效果,这时候我们只需要调整摄像机机位、焦距等数值,就能获得最终的增稳效果了。
注意,所有的稳定效果如果不想有黑边,都必须接受画面裁切,抖动越剧烈裁切幅度就越大,所以并不是所有的素材都适合做防抖,在拍摄时还是尽量要多留意。
第三步,两点跟踪,解决画面倾斜问题
对于画面存在倾斜的素材,如图4所示,我们就需要利用2个跟踪点来计算画面倾角,并通过设置驱动器来让视频平面根据跟踪点位置进行自动旋转处理。
与前一种方法不同的地方在于,对画面倾角的校正不能使用物体约束,而是要通过X、Y位置和Z轴旋转的驱动器来实现,首先我们右键打开视频平面的X位置驱动器,如图5设置驱动器变量,第一个变量我命名为varx,取左跟踪点空物体的X位置,第二个变量则是vary,取右跟踪点空物体的X位置,然后表达式为-(varx+vary)/2,意思是视频平面的X位置取兩个跟踪点X位置中间点的反值,这就抵消掉了X轴的抖动位移。而Y位置驱动器可以复制X位置的驱动器,但需要将类型改成Y位置,这样就实现了X、Y轴的位移防抖。
接下来我们对Z旋转进行驱动器设置,具体设置如图6。旋转的抵消逻辑是计算两个空物体连线与我们3D空间中X轴所形成的夹角,然后求反值来进行抵消即可,所以驱动器设置首先是分别计算两个空物体在X和Y轴上的距离,也就是用varR-varL取得在X轴上两点的距离,用warR-warL取得Y轴上两点的距离,再利用反正切函数atan就可求得我们想要的夹角度数,然后再在最前面加一个负号,就能实现倾斜角的抵消。
本章小结:了解防抖算法的基础
基本上通过两种手法,可以让我们拍摄的短视频有效地实现后期防抖效果,但注意,这种防抖显然需要场景中有固定存在的跟踪点才能实现,与Premiere、AfterEffect可以自动连续采样的防抖算法还是有一定的差距,但在有作用的前提下,胜在效果更可控,而且顺便也让大家理解了防抖数字算法的基础。当然,想要防抖效果最大化,前提是拍摄的素材最好不要太抖,否则即便是专业后期软件也很难救得了场……