把大图缩到小尺寸后,物体边缘外侧会出现一圈发白的重影或黑边,高对比度的地方最明显,比如电线、栏杆、文字轮廓。图片本身没有损坏,这是重采样核产生的振铃(ringing)。
原理不难理解:把图像看作信号,缩小时需要低通滤波以避免混叠。Lanczos、bicubic 这类核为了让结果更锐利,在频域上带有负瓣,遇到高对比度边缘(含大量高频成分)时就会在边缘两侧过冲,表现为一亮一暗的“鬼影”。核越锐、负瓣越大,振铃越明显。
解决顺序是这样。第一步,缩小优先用面积加权的方式(Box 或面积平均),不要用最近邻,最近邻会造成锯齿与细节丢失。第二步,确实需要锐度时再用 Lanczos,但对高对比边缘先做一次轻微低通(小半径高斯),或先做一次二倍面积缩小,再缩到目标尺寸。第三步,分步缩小:一次缩到一半、再缩到目标,通常比一步到位更保真、振铃更少。
第四步是验收方式。务必在目标尺寸下看效果,把画面放大到 400% 找振铃会过度处理——实际交付尺寸上根本看不出来。第五步,如果最终导出 JPEG,过度平滑会让色带更明显,可以保留极少量噪声或加很轻微的抖动来掩盖。
几个注意点:锐化要放在缩放之后,先锐化再缩会把振铃放大;在线性光敏感的场景要考虑在线性空间做重采样,直接在 Gamma 空间缩放会让亮部与暗部权重偏移;带透明通道的图要先在正确的合成方式(预乘与非预乘统一)下处理,否则边缘会出现黑边;如果素材本身就是压缩过度的 JPEG,先修掉块效应再缩,否则你放大的是压缩伪影。