老录像带/监控录像翻新:去隔行 + 降噪 + 锐化一条龙
单位有批 2008 年的监控录像要整理,画质糊得像打了马赛克、还有横纹(隔行扫描)、雪花噪点。想让它"能看",得走一条流水线:先去隔行、再降噪、最后轻微锐化。这篇讲我调出来的参数,以及为什么顺序不能乱。
顺序为什么是 去隔行 → 降噪 → 锐化
隔行扫描的画面,奇数行和偶数行是两帧拼的。如果先降噪,会把两场的信息搅一起;先去隔行把两场合成逐行帧,噪点才是"真噪点",这时降噪才有效;最后锐化补回细节,但锐化会放大噪点,所以必须放最后且别太狠。
第一步:去隔行
ffmpeg -i src.mp4 -vf "yadif=mode=1" step1.mp4
yadif 是最常用去隔行,mode=1 输出每帧都处理(比 mode=0 平滑)。监控那种动得慢的,也试试 bwdif(基于小波,更稳但慢)。
第二步:降噪
轻度用 hqdn3d(快,时域+空域):
ffmpeg -i step1.mp4 -vf "hqdn3d=4:3:6:4" step2.mp4
四个参数是空域/时域强度。监控雪花重就把时域调高。噪点特别狠换 nlmeans(非线性均值,慢但干净):
ffmpeg -i step1.mp4 -vf "nlmeans=s=4:r=7:p=3" step2.mp4
第三步:锐化
只补一点点,别过头成描边:
ffmpeg -i step2.mp4 -vf "unsharp=5:5:1.2:5:5:0.5" out.mp4
unsharp 是"反锐化掩模",中间两个 1.2/0.5 是强度,0.5 已经偏保守。
坑:重编码链别太长
我最初写成一条滤镜图,结果中间某个参数崩了全重来。后来拆成三步分别存中间文件,虽然多占盘,但好调试。另外每步都重编码,画质有损累积,源是烂录像无所谓,源是好的别这么造。
一点提醒
这条流水线救"能看",救不了"高清"。监控本来就 704x576,锐出花也还是那分辨率。真要放大用前面 AI 超分那篇。别指望滤镜点石成金。