(英语不是我的母语,而且已经很晚了)。
几天来我面临一个问题,经过多次失败的尝试,我决定来这里寻求帮助或至少一个方向。
我们将讨论抖动和色带。我不会在这里解释这些是什么,我只是假设读者已经知道了。
好吧,让我们从一张图片开始
在此图像上,没有抖动。色带很容易看到,如果不是在墙上,至少在地板上。因为我正在生成这个图像,所以在生成过程中我确实可以为每个像素获得更高的精度。如果通道是从 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 相关)。
但是,还有什么我可以做的吗?这种“颜色值的非线性增加”有名称吗?有什么我可以问谷歌的吗?
非常感谢。