我正在更新几个月前制作的Paint.net插件,它被称为模拟颜色深度,它将图像中的颜色数量减少到所选的BPP,并且很长一段时间它已经具有包括抖动,但从未订购抖动,我认为这将是一个很好的补充,所以我开始在互联网上搜索一些有用的东西,我结束了在这里的维基页面http://en.wikipedia.org/wiki/Ordered_dithering,并试图做的写在伪代码Bayer 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相乘,然后将该值与颜色通道相乘,但是结果很乱或者仍然太亮(因为我记得它),但结果与我无关在其他地方看过,无论是太亮,太高对比度还是太乱,我还没有发现任何通过互联网搜索真正有用的东西,所以有谁知道我可以如何让这个拜耳抖动正常工作?
由于提前,饼干
你有问题吗? – dtb 2010-12-14 16:23:44
woops,在写其他东西时忘了它:S – 2010-12-14 17:39:07
这不能回答你的问题,但数字半色调(http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=4433)可能是一个很好的资源来咨询。本教材是维基百科文章中大部分材料的父母参考资料。 – 2010-12-14 17:49:59