用于像素着色器的Floyd-Steinberg抖动替代品

我知道Floyd-Steinberg抖动算法不能用像素着色器实现,因为该算法是严格顺序的。但也许存在一些高度并行的抖动算法,它的视觉输出类似于Floyd-Steinberg算法? 所以问题是 - 什么是抖动算法适合在像素着色器(最好是GLSL)上实现,输出质量(非常)类似于Floyd-Steinberg抖动? BTW。允许多次传递算法,直到不超过2次传递,并且这些传递之间的CPU开销很小。 有任何想法吗 ? 编辑:我需要从24位颜色到21位颜色抖动。 (也就是说 - 我需要将8位/通道转换为7位/通道。) 编辑2 也许我没有很好地解释问题。所以我会尝试扩展一些确切的问题。 问题是这个 - 考虑一下我们有这张照片: 我们有上面的图片,但用抖动算法处理: 现在这是测试你的抖动对我有好处的程序: 1.将这些图片作为一张图片加载到Photoshop中,分为2层。 2.选择“图层”混合模式为“差异”。 3.对图层执行“合并可见”操作,以获得一个图层。 4.执行操作=>图像/调整/均衡 之后你必须得到这样的形象: 正如你所看到的那样 - 单色红色的中间像素根本没有抖动。 左右图像区域的抖动也有点不同。尝试用这种行为重建抖动算法。     
已邀请:
如果你从8位减少到7位,你几乎不丢弃任何信息。你确定你甚至需要抖动吗? 如果您需要抖动,添加随机噪音然后剪辑,它将对您的应用程序有很大帮助。     
您可以使用有序的抖动。它看起来比Floyd-Steinberg更粗糙,但像素之间没有依赖性。 编辑:因为你只删除一个位,这几乎是微不足道的。有序抖动背后的原理是创建一个偏移过渡阈值的模式;在这种情况下,偏差将为0或1,图案将为2x2像素。这两个变化将使这个模式比维基百科文章中的模式更不讨厌 - 你甚至可能比Floyd-Steinberg更喜欢它。 这是一些伪代码:
bias = (X xor Y) and 0x01
value = pixel + bias
if value > 255: value = 255
pixel = value and 0x7e
编辑2:这是我的差异结果,尽我所能。在不知道如何将7位值映射回8位的情况下,我无法做得更好。     

要回复问题请先登录注册