算法:从多帧对齐到噪声方差估计的工程实现)
131、多帧降噪(VST)算法:从多帧对齐到噪声方差估计的工程实现一、一个让我失眠三天的bug去年做某旗舰机型的夜景模式,实验室里拍出来的样张,暗部噪点像撒了芝麻,但亮部细节糊成一团。我盯着屏幕看了两小时,最后发现是VST(Video Signal Temporal)多帧降噪的噪声方差估计出了偏差——低照度下噪声模型不再是简单的高斯分布,而我的方差查表法在暗部区域直接失效。那天晚上我躺在床上还在想,为什么理论上的最优权重分配,到了工程实现里就变成了灾难?这个坑让我意识到,多帧降噪从来不是简单的“多帧平均”,它是一场与噪声统计特性、运动对齐精度、硬件资源限制的博弈。今天这篇笔记,我就把这几年代码里踩过的坑、填过的土,一五一十写下来。二、多帧对齐:别被光流法忽悠了2.1 对齐算法的选择陷阱很多人一上来就上光流法,觉得高大上。但我在手机平台上吃过亏——光流法在纹理丰富的区域确实准,可到了天空、墙壁这些弱纹理区域,光流估计的误差能把后续降噪搞崩。更致命的是,光流法对旋转和缩放运动的鲁棒性很差,手持拍摄时轻微的抖动旋转,光流场就乱成一锅粥。我现在的做法是:分层对齐策略。第一层用全局仿射变换(Affine Transform),基于陀螺仪数据做粗对齐,这一步能解决90%的手抖问题。第二层用局部块匹配(Block Matching),只在纹理区域做精细对齐,平坦区域直接跳过。