拜耳订购抖动

Coo*_*net 4 c# image-processing 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);  
    }  
}
Run Code Online (Sandbox Code Playgroud)

但结果太明亮所以我决定再次查看维基页面然后我看到阈值地图右边有一个"1/65"让我想到两个错误扩散(是的,我知道,怪异的呵呵) ?)并将我得到的值除以bayer8x8[x % 8, y % 8]65,然后将该值与颜色通道相乘,但要么结果是混乱的,要么仍然太亮(我记得它),但结果与我在别处看到的一样,要么太亮,太高的对比度或太乱,我没有找到任何真正有用的搜索互联网,所以有谁知道我怎么能让这个拜耳抖动正常工作?

在此先感谢Cookies

Run*_*ack 5

我不认为您的原始算法(来自维基百科)有任何问题.亮度差异可能是监视器伽玛的伪像.检查Joel Yliluoma的位置抖动算法,这篇关于伽马校正的附录,关于由Joel Yliluoma(http://bisqwit.iki.fi/story/howto/dither/jy/#Appendix%201GammaCorrection)发明的抖动算法,以查看效果的解释(注意:页面非常重要).

顺便说一句,也许该文章中详述的(显然是公共领域)算法可能是您问题的解决方案......