You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多次运行Floyd Steinberg抖动算法图像无变化的合理性及原理问询

Floyd-Steinberg抖动算法多次运行输出无变化问题解答

结论

这一现象属于Floyd-Steinberg抖动算法的正常表现,不存在代码实现错误。

算法核心逻辑

Floyd-Steinberg属于误差扩散类抖动算法,核心处理流程为:

  • 逐像素读取原始图像的灰度值,将其量化为目标色域的离散取值(例如二值抖动下仅为0/255纯黑、纯白),作为该位置的输出像素值
  • 计算原始值与量化值的差值(即量化误差),按照7/16、3/16、5/16、1/16的权重,扩散到当前像素右侧、左下方、正下方、右下方四个还未被处理的相邻像素中

背后的数学原理

Floyd-Steinberg抖动算法的量化环节天生具有幂等性,即满足数学定义 f(f(x)) = f(x):同一操作执行多次的结果和执行一次的结果完全相等。
具体推导逻辑如下:

  • 第一次运行算法时,输入是包含连续灰度值的原始图像,每个像素量化后会产生非零误差,误差扩散后最终输出所有像素均属于目标离散色域的抖动图像
  • 第二次及之后运行算法时,输入图像的所有像素已经是目标色域的离散取值,每个像素的量化误差为0,没有任何误差可以扩散到相邻像素,因此输出结果和输入完全一致,无论迭代多少次都不会产生变化

现象匹配验证

你提供的两次运行结果也完全符合上述特性:
第一次迭代输出:
第一次迭代结果
第十次迭代输出:
第十次迭代结果

内容的提问来源于stack exchange,提问作者vesii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:54:04