【问题标题】:Rerunning the Floyd Steinberg algorithm on a image在图像上重新运行 Floyd Steinberg 算法
【发布时间】:2021-10-30 17:34:20
【问题描述】:

我在 Python 中实现了抖动算法的一个版本(来自图像处理)。我使用的算法是 Floyd Steinberg 算法。

我想知道如果我在同一张图像上一遍又一遍地重新运行我的算法,图像会如何变化。我注意到它根本没有改变:

第一次迭代:

第 10 次迭代:

首先,这是正确的行为还是我的实施有问题?这是正确的,我想知道为什么在一次迭代之后,它根本不会改变图像?背后有什么数学解释吗?

【问题讨论】:

  • 抖动将具有多种不同颜色的图像变成只有少数几种颜色的图像。应用算法后,您的图像只有几种颜色。如果您再次应用该算法,所有像素已经是它输出的少数颜色之一,因此没有什么可以改变的。
  • FS 是错误的“扩散”,对吧?所以它正在量化一个像素的颜色并将误差推入下一个像素......但如果它已经量化,那么推动的误差为零。 -- 另外,我认为你的 Lena 是镜像的。

标签: image-processing dithering


【解决方案1】:

是的,这是正确的行为。

而重复同样的算法不会改变图像的原因是:

该算法简化了图像,因此它尝试将像素的颜色更改为从一个小颜色集中最接近的颜色。因此,如果像素颜色与小颜色集中的 Cor 相等,则它是最接近自身的颜色,并且将保持不变。

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 2019-09-16
    • 2014-06-01
    • 1970-01-01
    • 2019-05-04
    • 2022-01-22
    • 2021-02-01
    • 1970-01-01
    • 2011-10-24
    相关资源
    最近更新 更多