157、时域降噪与多帧降噪:运动补偿、递归滤波与多帧融合的实战调参技巧

发布时间:2026/7/26 17:32:04
157、时域降噪与多帧降噪:运动补偿、递归滤波与多帧融合的实战调参技巧 157、时域降噪与多帧降噪:运动补偿、递归滤波与多帧融合的实战调参技巧去年夏天,我接手一个安防IPC项目,夜视模式下画面噪点像雪花一样铺满整个监控区域。客户要求“看得清车牌”,但实测时运动目标一出现,画面就糊成一团,静止时倒是干净了。我盯着示波器上的噪声波形,突然意识到:这不是单纯的增益问题,是时域降噪的“运动补偿”没调好,导致递归滤波把运动物体当成了噪声给抹掉了。后来花了三周,从运动检测阈值到递归系数,一点点抠参数,才把这个问题压下去。今天就把这些实战中踩过的坑,掰开了讲清楚。运动补偿:别让算法把“动”当成“噪”时域降噪的核心逻辑很简单:利用前后帧的像素相关性,把随机噪声平均掉。但问题在于,当场景中有运动物体时,像素位置变了,直接做帧间平均就会产生鬼影。运动补偿就是来解决这个矛盾的——先检测运动区域,再决定哪些像素该参与滤波。我见过最典型的错误,是直接把运动检测阈值设成固定值。比如某款手机方案,默认阈值是16(8bit数据),结果室内灯光下,人走路产生的像素变化刚好在15-20之间,算法一会儿判定为运动,一会儿判定为静止,导致画面出现“闪烁的拖影”。正确的做法是:阈值要跟着场景亮度走。暗光下噪声本身幅值就大,阈值得相应抬高;亮光下噪声小,阈值可以压低。我习惯用一个简单的线性映射:threshold = base_threshold * (current_luminance / reference_luminance),其中reference_luminance取场景平均亮度的80%分位值。运动补偿的另一个坑是“块效应”。很多方案把图像分成8x8或