我正在更新我几个月前制作的 Paint.net 插件,它被称为模拟颜色深度,它将图像中的颜色数量减少到选择的 BPP,并且很长一段时间它都包含抖动但从未订购抖动我认为加入它会是一个很好的补充,所以我开始在互联网上搜索有用的东西,我最终在这个 wiki 页面上http://en.wikipedia.org/wiki/Ordered_dithering,并试图按照伪代码中写的做
for (int y = 0; x < image.Height; y++)
{
for (int x = 0; x < image.Width; x++)
{
Color color = image.GetPixel(x, y);
color.R = color.R + bayer8x8[x % 8, y % 8];
color.G = color.G + bayer8x8[x % 8, y % 8];
color.B = color.B + bayer8x8[x % 8, y % 8];
image.SetPixel(x, y, GetClosestColor(color, bitdepth);
}
}
但结果太亮了,所以我决定再次检查 wiki 页面,然后我看到阈值图右侧有一个“1/65”,这让我想到了两个错误扩散(是的,我知道,很奇怪吧?) 并将我得到的值除以bayer8x8[x % 8, y % 8]
65,然后将该值与颜色通道相乘,但结果要么很乱,要么仍然太亮(我记得),但结果与我在其他地方看到的完全不同,要么太亮,太高对比度或太乱,我没有找到任何真正有用的搜索互联网,所以有谁知道我怎样才能让这个拜耳抖动正常工作?
提前致谢, 饼干