Image processing 对图像应用扩散时,如何控制抖动;“百分比”;像Photoshop那样?

Image processing 对图像应用扩散时,如何控制抖动;“百分比”;像Photoshop那样?,image-processing,python-imaging-library,Image Processing,Python Imaging Library,要将扩散应用于图像,可以使用类似Floyd Steinberg(FS)的算法,但如何控制像Photoshop一样抖动的“百分比”在传统的“保存为Web”功能中有一个选项?在Python中,使用PIL,可以使用im.convert('1')将图像转换为黑白,并自动应用FS抖动。但似乎抖动是100%。我希望它能更接近88%的Photoshop效果。如何做到这一点?(使用库或修改FS算法) 抖动%对图像的影响示例(通过Photoshop生成): 抖动25%: 抖动50%: 抖动75%: 抖动1

要将扩散应用于图像,可以使用类似Floyd Steinberg(FS)的算法,但如何控制像Photoshop一样抖动的“百分比”在传统的“保存为Web”功能中有一个选项?在Python中,使用PIL,可以使用im.convert('1')将图像转换为黑白,并自动应用FS抖动。但似乎抖动是100%。我希望它能更接近88%的Photoshop效果。如何做到这一点?(使用库或修改FS算法)

抖动%对图像的影响示例(通过Photoshop生成):

抖动25%:

抖动50%:

抖动75%:

抖动100%:


我不确定Photoshop中到底发生了什么,但从我的搜索以及我在对这个问题的评论中所描述的,我得到了一个似乎有效的想法。因此,这可能不是正确的答案,但也可能是类似的答案

我将在灰度到单色(将间隔
[0,1]
映射到set
{0,1}
)的情况下描述这个想法,当然可以外推到彩色情况

p
为所需百分比(这样
p
位于
[0,1]
)。该算法将执行Floyd Steinberg,但只将错误推送到间隔
[(1-p)/2,(1-p)/2+p]
内的邻居。所以如果我所有的邻居都在这个范围之外,我的错误就会被扔掉。否则,我的错误会被推到该范围内的任何一个错误上(Floyd Steinberg通常指定的比例相同)


我对这是否会产生预期的结果犹豫不决(我不是100%确定),但至少看起来是相似的。让我知道你的调查进展如何

我不确定Photoshop中到底发生了什么,但从我的搜索以及我在对这个问题的评论中所描述的,我有了一个似乎有效的想法。因此,这可能不是正确的答案,但也可能是类似的答案

我将在灰度到单色(将间隔
[0,1]
映射到set
{0,1}
)的情况下描述这个想法,当然可以外推到彩色情况

p
为所需百分比(这样
p
位于
[0,1]
)。该算法将执行Floyd Steinberg,但只将错误推送到间隔
[(1-p)/2,(1-p)/2+p]
内的邻居。所以如果我所有的邻居都在这个范围之外,我的错误就会被扔掉。否则,我的错误会被推到该范围内的任何一个错误上(Floyd Steinberg通常指定的比例相同)


我对这是否会产生预期的结果犹豫不决(我不是100%确定),但至少看起来是相似的。让我知道你的调查进展如何

我不熟悉Photoshop的扩散。当你将百分比设置得更低时,你能解释一下你在Photoshop中习惯的行为吗?它是否只是图像的一部分抖动?它会在抖动图像和非抖动图像之间进行某种程度的淡入淡出吗?也许你可以给出一系列显示无抖动、完全抖动和各种百分比的图像,比如25%、50%和75%?@B.Eckles,谢谢你的反馈,我在帖子中补充了这一点。谢谢,@E.W.Hm,这很吸引人。我想到的前两个想法是,他们正在改变推到相邻单元格上的错误量(在Floyd Steinberg中),或者他们正在做一些事情,比如在应用算法之前缩放图像颜色。四处搜索,我发现他们可能正在做的事情有一个轻微的参考:它谈到了“像素数"都是抖动的。我不太清楚这意味着什么,但它可能会给你/某人/我们一个想法。这页上有一大堆我没有时间阅读的信息,但特别是看到了链接部分:结合我之前发布的链接,让我想到,也许百分比控制着“中间”的百分比颜色会抖动。换句话说,如果颜色高于或低于某个阈值,则只需将其设置为上限或下限。如果它们在中间区域,它们就会抖动。我不熟悉Photoshop的扩散。当你将百分比设置得更低时,你能解释一下你在Photoshop中习惯的行为吗?它是否只是图像的一部分抖动?它会在抖动图像和非抖动图像之间进行某种程度的淡入淡出吗?也许你可以给出一系列显示无抖动、完全抖动和各种百分比的图像,比如25%、50%和75%?@B.Eckles,谢谢你的反馈,我在帖子中补充了这一点。谢谢,@E.W.Hm,这很吸引人。我想到的前两个想法是,他们正在改变推到相邻单元格上的错误量(在Floyd Steinberg中),或者他们正在做一些事情,比如在应用算法之前缩放图像颜色。四处搜索,我发现他们可能正在做的事情有一个轻微的参考:它谈到了“像素数"都是抖动的。我不太清楚这意味着什么,但它可能会给你/某人/我们一个想法。这页上有一大堆我没有时间阅读的信息,但特别是看到了链接部分:结合我之前发布的链接,让我想到,也许百分比控制着“中间”的百分比颜色会抖动。换句话说,如果颜色高于或低于某个阈值,则只需将其设置为上限或下限。如果它们在中间区域,它们会抖动。另一个想法是在执行Floyd Steinberg之前过滤图像。例如,增加对比度以获得“较低百分比抖动”,降低对比度以获得较高百分比。不知道是不是