春卷的话:本文系我同事@Laze Sun周末撰写的一篇技术文,较为全面的分析了到目前为止应用在手机上的各种防抖技术。尽管这篇文章有些长,内容也略偏技术流,但对于想要了解移动设备影像技术发展的朋友而言仍不失为一篇值得推荐的好文!
——————————
周三早上一点,苹果发布了 iPhone 12 系列,在发布会后,不乏有网友希望我们来详细讲解一下 iPhone 12 Pro Max 上首发的传感器位移式光学图像防抖究竟是个什么玩意儿。所以我们这次就从最基础的传统电子防抖出发,以时间为顺序一点点向各位科普手机上的防抖技术都有哪些。
1.传统电子防抖
实际上电子防抖在手机上的出现比我们想象中早得多。早在功能机时代就已经有不少机器在视频功能里加入了电子防抖。
早期电子防抖的原理是:通过分析前后帧画面的变化,建立特征点,反求出在拍摄时的手机运动,之后再通过反求出来的运动轨迹反向补偿达到稳定画面的目的。
(图片来自电子防抖专利文件,利用分析画面移动状况补偿抖动)
这种方式的优势在于只要输入视频流即可进行图像稳定,不需要附加任何设备,也不需要魔改现有的视频格式或加入时间戳。这种不挑设备的好处让这项技术在手机发展初期很受欢迎,甚至现在不少非线性编辑软件中都有电子防抖功能。
但是缺点也显而易见:
第一,由于对摄像机的反求需要分析画面,那么只有画面中的特征点越多、用于分析的帧越多、算法的精度越高,反求的结果才会越精准;然而这些都需要强大的算力支撑——而算力恰恰是手机这种移动设备所欠缺的。
第二,因为画面是反求摄像机运动的唯一参考,所以传统的电子防抖很容易被场景欺骗。
第三,由于反向补偿仅仅补偿图像位置,也就是说手抖导致的运动模糊电子防抖无法消除,所以对于整体画面来说,锐度会有间歇性下降。
(图片来自谷歌博客)
这也是为什么后来有了光学防抖。
2.光学防抖
光学防抖的原理是利用手机中已经有的陀螺仪进行手机运动姿态的采集,然后通过马达驱动单个镜头或者整个镜组移动来补偿运动。
按照镜组的移动方式,光学防抖可以分为两种:平移式和移轴式。前者以诺基亚 Lumia 920 为代表,后者以 htc One (m7) 为代表。
顾名思义,平移式通过直接平移镜头来补偿运动,而移轴式则是选择旋转镜头来补偿。
(移轴式光学防抖,图片来自 APP 公司)
(平移式光学防抖,图片来自佳能)
两种光学防抖各有优劣:其中平移式适合矫正设备平移时产生的抖动、纠偏幅度大、成本较高;而移轴式适合矫正设备在旋转时(航向、俯仰轴)产生的抖动,纠偏幅度较小,容易生产。
由于采用移轴式光学防抖的镜组光轴通常都不垂直于像平面(例如图像传感器),所以会导致额外的画质损失;再加上前文所说纠偏幅度有限的问题,所以该方案已经极少被手机厂商使用。
(图片来自 APP 公司)
而平移式虽然能够保证光轴时刻垂直于像平面,但由于广角镜头的形变,无法完美纠正在旋转方向上的抖动,所以在视频录制时会出现类似果冻的画面效果。
(图片来自谷歌博客,注意画面中央和边缘的抖动幅度)
相对于传统的电子防抖,基于物理层面进行矫正的光学防抖还是有很大优势的:
它不会产生运动模糊,同时来自于手机陀螺仪的数据也避免了被场景欺骗的可能。此外,通过对光学防抖组件进行编程,还可以实现超分辨等画质提升的进阶玩法。
(图片来自谷歌博客)
但是缺点也同样存在。除了之前所说难以完美纠正旋转方向上的抖动之外,光学防抖受体积和空间的限制,修正的幅度比较有限——通常为 1°~2°,这就导致在面对走动产生的大幅度抖动场景时,会有些力不从心。
另外,随着图像传感器越做越大,镜头也变得越来越重,为了驱动更加沉重的镜头又需要更大更强力的防抖马达。这对于寸土寸金的手机空间来说也是一大挑战。
3.陀螺仪电子防抖
在光学防抖逐渐在手机中普及的同时,电子防抖阵营也开始了升级:新方案不再通过识别画面来反求运动信息,而是直接从陀螺仪数据读取数据。
相较于传统电子防抖,该方案的优势在于直接使用手机真实的运动信息进行防抖补偿,所以做到防抖效果更好的同时还减轻了算力要求,使得在手机或者运动相机上实现高品质的电子防抖成为可能。
(左为原始素材,右为陀螺仪电子防抖,图片来自三星半导体)
相对于光学防抖来说,由于不需要改动镜头模组,相机模组的结构更简单,因此成本更低、空间占用更少且相对更耐用。
另外,只要允许更大尺度的裁剪,电子防抖能提供比光学防抖多得多的补偿范围,即便在剧烈运动下仍能保证画面稳定,例如 OPPO Reno4 Pro 上的视频超级防抖 Pro。
(左为原始素材,右为视频超级防抖 Pro,图片来自 OPPO)
此外,使用陀螺仪的电子防抖同样能够分析前后帧的运动趋势,从而给出更好的修正结果。例如谷歌就利用机器学习来判断视频流内哪些运动是用户无意中的手抖,哪些是故意的运镜从而分别进行不同的修正——这是依靠实时修正的光学防抖做不到的。
(经过电子防抖修正之后的运镜,来自谷歌博客)
虽然利用了陀螺仪和陀螺仪同步器,但是电子防抖终究是电子防抖,抖动造成的运动模糊还是难以消除的。
那么有没有一种两全其美的方法呢?
4.光学 + 电子混合防抖
解决方法就是这么暴力:既然光学防抖和电子防抖各有各的好,那么我们为啥不直接全都要呢?
简单点说就是同时采用光学和电子防抖对图像进行稳定。一方面,利用光学防抖来尽可能减少因为抖动造成的图像模糊;另一方面,利用电子防抖超大的补偿范围来弥补光学防抖对大范围抖动修正不足的问题。
(左为原始素材,右为混合防抖,图片来自 OPPO)
当然这种方式的难点在于如何让光学防抖和电子防抖进行联动:在混合防抖的流程中,由于光学防抖已经用陀螺仪数据稳定过一次画面了,如果电子防抖再拿相同的数据稳定画面就而会弄巧成拙。所以在这个方案里电子防抖除了需要输入陀螺仪数据以外还需要输入光学防抖的动作数值用于防止这俩防抖的修正效果打架。
(混合防抖流程,图片来自谷歌博客)
虽说这是当前基于光学防抖模组的最佳移动端方案,但是这种方案还是有其局限性:例如为了电子防抖的补偿范围还是需要对成像范围进行裁切,再比如对超过光学防抖修正范围的运动模糊还是无能为力。
从某种程度上说,混合防抖其实也只能算是无奈之举:我们都知道只要架个手机用的三轴自稳云台其实前面所说的问题都迎刃而解,可是又有多少人愿意多带一台和手机一样大的三轴自稳云台出门呢?
除非把这玩意儿装在手机里。
5.微云台
没错,vivo 依靠 vivo X50 Pro (和APEX 2020)做到了。
和OIS 仅移动镜组不同的是,vivo X50 Pro所采用的微云台方案移动的是整个相机模组。也就是说,对于图像传感器来说,镜头的光轴在防抖的过程中并不会像光学防抖那样发生移动,所以不会产生因为光轴变化导致伪像,同时也不必担心镜组覆盖的像场不够导致边角光线损耗。所以微云台在结构上可以完美修正在航向和俯仰轴上的抖动而不产生伪像,同时还能实现比 OIS 更大的修正范围——按照 vivo 的说法是 3° 以上。
(微云台防抖动作,图片来自 vivo)
微云台结构最大的难点就是怎么把模组塞到轻薄的手机里。由于无法像 OIS 一样仅驱动光学镜组,微云台的防抖马达需要有足够动力驱动一整个相机模组一起运动,但传统三轴稳定器或者云台相机所使用的无刷电机往往体积巨大,难以塞入手机中;而贸然缩小马达尺寸又会因为难以克服活动组件之间的摩擦等不利影响导致响应速度难以跟上手抖的速度。
vivo 的办法是开源节流:开源方面,使用在 OIS 中常用的线性电机作为动力驱动,相对于云台相机常用的无刷电机,线性电机更容易做小,形状也更规则有利于手机内部的堆叠;而节流部分则通过滚珠悬架的方式来减少摩擦力(也就是异形磁动框架和双滚珠悬架)。
(微云台结构,图片来自 vivo)
其实微云台啥都好,就是 BOM 成本是传统模组的 2 到3倍,估计也就财大气粗的 vivo 砸得起这个钱(逃……)。
6.传感器防抖
最后回到一开始提到的iPhone 12 Pro Max上。实际上,iPhone 12 Pro Max 上使用的传感器防抖——也就是苹果所说的“传感器位移式光学图像防抖”并不是为了像 vivo X50 Pro 上的微云台那样从根本上一劳永逸地解决光学防抖和电子防抖在画质上的缺陷,而是为了解决我在第二章提到的另一个问题:如何解决底变大所以要更大的防抖马达去驱动更大更沉的光学镜头的问题。
苹果的答案是:既然镜头更重了,那么就不移动镜头,转而去移动重量更轻的传感器。这样就有可能在更小的体积内实现类似于浮动镜组方案的光学防抖效果。
(传感器防抖结构,图片来自 Apple)
从解决思路上看,传感器防抖和微云台完全不同。不过从理论上看,传感器防抖的防抖效果并不会比光学防抖有多大的优势,而该有的问题也都依然存在。所以我们猜测 iPhone 12 Pro Max 在抑制抖动伪像等场景下大概率会不如 vivo X50 Pro 。当然具体效果如何还是需要等待我们实测。
我们常听说一句话:技术总是螺旋发展的。手机镜头防抖技术的发展也是一样:当我们觉得光学防抖已经完全取代了电子防抖的时候,陀螺仪电子防抖出现了;当我们觉得光学 + 电子防抖的混合防抖已经是手机防抖的终点的时候,vivo X50 Pro 的微云台出现了。从目前的一些专利和算法看,针对手机相机模组的新技术未来还有很多有望落地,我们也希望厂商们能够不断创新,给消费者来带更多好玩且高性能的产品。