2012-02-06 76 views
4

有时我有一个真正的彩色图像,通过使用抖动算法,我可以将颜色降低到256.我想知道抖动算法是如何实现这一点的。想了解为什么抖动算法可以减少颜色深度?

我知道抖动可以减少错误,但算法如何减少颜色深度,特别是从真实颜色到256色甚至更少。

回答

6

抖动通过在定义的调色板中“混合”颜色来模拟更高的颜色深度,以创建一种真正不存在的颜色幻觉。实际上,它与您的计算机显示器已经在做同样的事情:获取颜色,将其分解为原色,并将它们显示为彼此相邻。你的电脑显示器用可变强度的红色,绿色和蓝色来做它,而抖动则用一组固定强度的颜色来进行。由于您的眼睛的分辨率有限,因此它将输入相加,并且您感觉到平均颜色。

以同样的方式,报纸可以通过抖动黑色墨水以灰度打印图像。他们不需要大量的中间灰色来获得体面的灰度图像;他们只是在页面上使用更小或更大的黑色墨点。

当您抖动图像时,会丢失信息,但您的眼睛以大致相同的方式感知它。从这个意义上说,它有点像JPEG或其他有损压缩算法,它们丢弃了你的眼睛无法看到的信息。

4

抖动本身确实不是减少颜色的数量。相反,在减少颜色的过程中应用抖动以使得减色的伪影更不明显。

在两种其他颜色之间的中途的颜色可以通过一种颜色的一半而另一种的一半来模拟。这也可以推广到其他百分比。一种颜色的10%和另一种颜色的90%的混合颜色可以通过使10%的像素是第一颜色并且90%的像素是第二颜色来模拟。这是因为眼睛会倾向于将随机变化视为噪音,并将它们平均化为区域颜色的整体印象。

最有效的抖动算法将跟踪原始图像和减色的算法之间的差异,并在转换未来像素时考虑该差异。这称为误差扩散 - 当前像素上的误差被扩散到其他像素的转换中。

为转换选择最佳256色的过程与抖动分开。