关于视频图像dither

来源:互联网 发布:java 毫秒 编辑:程序博客网 时间:2024/05/16 12:24

dither,简单的说就是用现有的显示终端能够识别的颜色来模拟产生出其不能产生的像素,也就是用较小数量的颜色去模拟更多数量的颜色,如在16位色设备上显示24位色图片。 有点绕,举例说明。



显示器,每个pixel点只能识别红色和蓝色, 如果我要显示粉红色怎么办。我们可以将两个像素点 当成一个像素点来看,而这个大像素点包含 红色和蓝色,这样在远处,人的肉眼能够看到的颜色就是粉红色。

这样带来的潜在的问题就是整个系统的分辨率下降了一半。

来自wiki的图片说明:


An illustration of dithering. Red and blue are the only colors used but, as the red and blue squares are made smaller, the patch appears violet.

比如一台古老的显示器只能显示若干种颜色。假定它可以显示出红色和白色,但不能直接显示出粉红色,那么可以将要显示粉红色的区域用红色与白色交替的方法模拟出。如果眼睛距离屏幕足够远,不能看到单独的像素,那么这块区域看起来就是粉红色的

在传统硬件中,主要就是模拟更高级别的颜色,比如原来的显像管是每个像素RGB三个荧光点,每个荧光点256级强度,现在我们把四个像素看成一个像素,那么每四个像素,包含4xR 4xG 4xB个荧光点,每个每种颜色4个荧光点,即每种颜色强度应该是256x4 = 1000个强度级别,从而dither后的颜色分辨率(注意是指颜色),就比以前扩大了16倍。

这个一般针对嵌入式设备比较常见,因为LCD屏幕往往质量不一,好的Dither可以有限提高图形效果


Dithering技术在早期的视频适配器、现在的一些手机上使用的LCD,还有一些廉价的数码照相机上都有使用,这些设备的色域范围都要小于那些更先进的设备。例如,在照片图像可能包含数百万中颜色,但是在视频硬件上只支持256色,所以就需要使用这256色通过dither技术来近似的达到原图的效果。如果不使用dithering技术的话,那么原图里面那些不被支持的颜色可能会被这些颜色的近似颜色所代替,这样会导致最后显示出来的效果很差。

dither 就是利用人眼的 “天生积分器”的特性,得到更多的“感觉上”的灰色。比如人眼会把一个区域的颜色认为是灰色,(如果这个区域均匀的分布有白色和黑的像素,比如checkboard pattern),增加和减少黑色/白色像素会增加灰度值。 同理用于 各种颜色。

dither就是牺牲分辨率换取更多感知颜色数


原创粉丝点击