Bayer Ordered Dithering
我正在为几个月前制作的Paint.net更新一个插件,它被称为模拟颜色深度,它将图像中的颜色数量减少到选定的BPP,并且很长一段时间它已经包含了抖动但是从未订购过抖动我认为这将是一个很好的补充,因此我开始在互联网上搜索有用的东西,我最终在这个维基页面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);
}
}
但结果太明亮所以我决定再次查看维基页面然后我看到阈值地图右边有一个“1/65”让我想到两个错误扩散(是的,我知道,怪异的呵呵) ?)并将我从bayer8x8[x % 8, y % 8]
得到的值除以65,然后将该值与颜色通道相乘,但要么结果很杂乱,要么仍然太亮(我记得它),但结果与我在别处看到的一样,无论是太亮,太高的对比度还是太乱,我都没有找到任何真正有用的搜索互联网,所以有谁知道我怎么能让这个拜耳抖动正常工作?
在此先感谢Cookies
没有找到相关结果
已邀请:
3 个回复
呸溉
芳菱挨啡
这里GAP应该是两个最接近的颜色阈值之间的距离。这取决于每像素的位数。 例如,如果要将图像转换为每个像素的红色分量使用4位,则总共有16个红色级别。它们是:R = 0,R = 17,R = 34,...... R = 255。所以GAP将是17。
拭十年
是目标图像应该具有的颜色数量,
是除数(这是从我的代码(使用paint.net类)到使用GetPixel和SetPixel进行简单位图编辑的规范化)