A1.31.4Dithering设计
加入平滑过渡或抖动噪声可削弱边缘增强带来的伪影
别名: 抖动 · error diffusion · 误差扩散 · 噪声掩蔽
概念解释
既然渐变里的可见条纹很多时候不是量化精度不够,而是边缘增强把本已很小的台阶放大出来的结果,那么解决办法也不必然是提高位深,而可以从根本上破坏边缘增强能够触发的那种规整台阶结构——常见做法是加入抖动(dithering)噪声,或者拉宽、软化每一级之间的过渡,让原本清晰、规则、位置固定的阶跃边缘变得模糊、不规则甚至消失。
机制
边缘增强依赖的是一条位置固定、方向一致的亮度阶跃——感受野必须能稳定地跨在同一条边界上,中心和外周才会出现持续的不对称抵消,从而产生持续、方向一致的过冲。抖动噪声的做法是在每个像素上叠加一个微小的随机或伪随机扰动,把原本笔直的一条分界线打散成犬牙交错、逐像素随机分布的边界——这样一来,任何固定位置的感受野都不再稳定地跨在同一条边界上,不对称抵消不再持续发生在同一批位置、同一个方向上,过冲效应被空间上的随机化平均掉,不再聚集成一条肉眼可辨的窄带。平滑过渡(拉长渐变的过渡区间、增加中间级数)走的是另一条路:直接降低相邻区域之间的亮度差异梯度,让单个台阶本身变得足够小,即使边缘增强仍在起作用,过冲幅度也随之等比例缩小到难以察觉的程度。两种做法的共同点是都没有改变渐变整体呈现的平均亮度趋势,只是分别从"打乱边缘的规整性"和"缩小单步的陡峭程度"这两个不同角度,让边缘增强机制失去了可以稳定放大的目标。
边界
- 抖动噪声的强度需要拿捏:噪声幅度过小起不到打散边界的作用,条纹依然可见;噪声幅度过大则会在画面上引入肉眼可见的颗粒感或噪点,变成另一种新的视觉瑕疵,需要在两者之间找平衡,具体幅度取决于原始台阶大小、显示设备分辨率与观看距离。
- 平滑过渡的做法要求实际有更多可用的中间级数或更宽的渲染精度可分配;如果最终输出格式本身的位深已经是硬约束,单纯拉长渐变区间而不增加级数,并不能真正降低每一步的物理陡峭程度。
- 这两种方法解决的是边缘增强对渐变台阶的放大问题;如果条纹的成因其实是量化级数本身严重不足、物理台阶已经超出常规可见阈限,单靠抖动掩盖只会让画面显得脏,而不是真正解决分层过粗的问题,这种情况需要先解决量化级数,而不是加噪声。
怎么落地
- 在渐变可能触发假轮廓的场景(背景渐变、光影过渡、数据可视化色标),渲染或导出阶段默认加入适度的抖动或误差扩散处理,而不是等用户报告"看到条纹"后再排查。
- 抖动强度按目标显示设备与观看场景校准,不要套用一个固定幅度的参数在所有输出尺寸和距离上;小尺寸近距离查看的素材能承受的噪声幅度通常低于大尺寸远距离观看的素材。
- 有条件调整渐变本身参数时,优先拉宽跨度或增加中间级数以降低单步陡峭程度,与抖动噪声两种手段配合使用,比单独依赖任何一种更稳妥。
- 验证办法:在目标设备和典型观看距离下,对比加噪声/平滑前后同一条渐变的实拍或截图,确认条纹是否已经难以察觉,同时检查画面是否因此引入了新的可察觉颗粒感,两头都要看。