098、夜景模式的"多帧炼金术"——为什么是6-8帧而不是20帧?从信噪比提升与运动鲁棒性的工程平衡去年秋天,我在某旗舰机项目上被一个夜景bug折腾了整整两周。实验室里,我们用三脚架固定手机,对着窗外霓虹灯拍了一组20帧的夜景样张,放大看暗部细节,噪点确实压得干干净净,纹理也锐利得能数清对面楼顶的避雷针。可一到手持实拍,问题就炸了——画面边缘的灯牌文字开始出现重影,像是隔着一层毛玻璃在看世界,更诡异的是,某些场景下暗部居然出现了彩色条纹,像极了老式电视机的雪花屏。当时团队里有人提议:"要不把帧数加到30帧?反正算法算力够,多帧总归是多多益善。"我当场否了这个方案,因为直觉告诉我,问题不在帧数不够,恰恰相反,是帧数太多,把运动鲁棒性这个隐藏变量给逼到了墙角。先别急着骂我玄学,咱们把账算清楚。夜景多帧的核心逻辑,是用时间换信噪比——每多叠加一帧,随机噪声的方差理论上就除以帧数N,信噪比提升10log10(N)dB。从6帧到8帧,信噪比提升约1.25dB,人眼勉强能感知;从8帧到20帧,理论上还能再涨4dB,听起来很美对吧?但这里有个工程上绕不开的坑:帧与帧之间的配准误差。手持拍摄时,手的微颤、呼吸的起伏、甚至心跳的脉动,都会让每帧画面产生亚像素级的位移。你以为算法在做完美对齐?实际上,任何配准算法都有残差,这个残差在低照度下会被放大——因为暗部区域的梯度信息弱,特征点稀疏,匹配本来就容易漂移。帧数越多,累积的配准误差就越大,最终叠加出来的不是更清晰的图像,而是一张被"平均"掉的模糊脸。我踩过的那个坑,具体是这样的:当时我们用的是8帧方案,但为了追求极致暗光表现,我把单帧曝光时间从1/15秒拉长到了1/8秒。结果呢?8帧里只要有1帧因为手抖产生了超过2个像素的位移,融合后整