0

(英语不是我的母语,而且已经很晚了)。

几天来我面临一个问题,经过多次失败的尝试,我决定来这里寻求帮助或至少一个方向。

我们将讨论抖动和色带。我不会在这里解释这些是什么,我只是假设读者已经知道了。

好吧,让我们从一张图片开始

没有抖动的图像

在此图像上,没有抖动。色带很容易看到,如果不是在墙上,至少在地板上。因为我正在生成这个图像,所以在生成过程中我确实可以为每个像素获得更高的精度。如果通道是从 0 到 255 的整数,我确实可以访问 5.24 之类的值(重要的是“.24”——这就是我所说的“更高的精度”)。我最初的想法是根据像素在屏幕上的位置使用噪声。如果我们断言噪声产生值在 0 和 1 之间,对于 5.24,算法看起来像

if (noise(x,y) < 0.24) 颜色 = 6 否则颜色 = 5

我也使用了“白噪声”,我得到了这个结果 图像抖动,使用白噪声

它更加平滑,但我们得到了非常高的噪音。另外,还有色带,这将是我遇到的问题。通过用“蓝噪声”替换白噪声,我得到了最后一张图像

抖动的图像,使用蓝噪声

这对于生成的图像的噪点要好得多,但是......仍然有色带。

我试图找出原因。我认为这是因为我使用了我所说的“线性分割”或“线性渐变”或“线性插值”……或“线性”的东西,但它是线性的。这是我已经给出的公式

if (noise(x,y) < 0.24) 颜色 = 6 否则颜色 = 5

如果不是 0.24 而是 0.5,则表示 (5,5,5) 和 (6,6,6) 的 50/50 混合。但是,这样的图像看起来更接近(6,6,6)而不是(5,5,5)。不知何故,我认为认为(0,0,0)和(1,1,1)之间的步长与(200,200,200)和(201,201,201)之间的步长相同是错误的。我认为它不应该被认为是一个加法,而是一个比率。并且上面的公式并没有真正考虑到“5”(对于 5.24 和 200.24,它的行为方式相同)。

不知道自己解释得好不好,已经很晚了。

总结一下,我正在寻找一个公式,不仅考虑到“.24”部分,不仅考虑到像素的位置,还考虑到“5”部分。

我认为某处存在指数(因为光学中总是有指数),结果将取决于显示器(我正在寻找的更多与 cymk 相关,而不是与 rgb 相关)。

但是,还有什么我可以做的吗?这种“颜色值的非线性增加”有名称吗?有什么我可以问谷歌的吗?

非常感谢。

4

0 回答 0