液晶屏的Dithering功能简介

看液晶屏手册,发现有一个引脚控制Dithering功能,Dithering功能简单的说就是用有限的颜色经过处理呈现出更多“显示颜色”的技术。

比如只用黑白两种颜色(0和255),表示下面的灰度图(0到255之间):




如果只是简单的二值化,大于128显示白色(255),小于128显示黑色(0),那么效果为:



这样显示效果惨不忍睹。那怎么使用黑白两色表示出0-255的灰度值呢?控制一个区域内黑白两种点数目的比例就可以了。在一个区域内用很小的白点和黑点填充,如果白点和黑点的数目各占一半,这个区域看起来就是灰度值128,其他灰度值也一样。这就是Dithering技术,也叫图像抖动技术。用Dithering技术处理后,效果为:



还有一个例子:

把经过Dithering处理的图像放大后,可以看到图像中只有黑白两种颜色。

彩色图像也是同样的道理,把有限的颜色经过Dithering处理,可以呈现出更多的颜色:



如果上面的用红色和蓝色,组合出紫色。

让我们简单看下灰度变换急dither抖动算法帮助理解

1.灰度变化:

色深是一个可以显示灰阶个数的参数。对于8bit的显示器来说,灰阶数就是256个;对于10bit的显示器来说,灰阶数就是1024个,所以位数越高的显示器,灰阶范围也就越大,图像的明暗变化也就越平滑。

如下图1所示,是一个变化不平滑的灰阶,它对于图像的明暗显示局限性非常的大;

                                              图1

图2是8bit的灰阶范围图,但是由于8bit无法将全部的灰阶显示出来,所以灰阶图上会出现一条一条的条带,这种现象称为“色带”。



                                                               图2

图3是16bit的灰阶范围图,可以看到16bit的灰阶范围更为广阔,明暗变化也更为平滑。

                                                                     图3

2.抖动算法

对于8bit的显示器,加入我们给它足够的补偿,那么8bit的显示器对于灰阶的显示也会更加的平滑。抖动算法( dithering)就是实现这一目的的重要方法,也可以知道,抖动算法就是高精度信号转换到低精度信号时,对损失部分信号的填补与增益。

为什么高精度信号转换为低精度信号时会失真?

试想,高精度信号是一个保留1位小数的等差数列:1.0,1.6,2.2,2.8,3.4……

而低精度信号只能保留每项为整数,这时候这个等差数列会变成什么样?

四舍五入:1,2,2,3,3

向下取整:1,1,2,2,3

向上取整:1,2,3,3,4

常规方法下生成的新数列没有一个能还原出原数列等差排列的效果:新信号不仅丢失了精度,更重要的是变化的幅度不再均匀——这才是最要命的,而这其实就是图像信号中色带(banding)的产生原因。

而抖动算法正为此而生,抖动算法通过在原信号之间增加噪音,使得新信号呈现出和原信号更多的一致性。


下面是一个抖动算法效果的演示:


上图中,左图为原图,原生具有8bit的高位深。当其以低位深输出时,中间的图是不加抖动的结果,而右图使用了一种error diffusion dithering的算法,于是结果迥异。右图虽然增加了噪点,但完全避免了色带的产生。

这个演示告诉了你,在选择显示器时,原生10 bit面板固然最好,但即使8 bit面板仍然能很好地表现10 bit内容。上图是8 bit内容抖动到有效精度不到3bit情况下的结果,可想而知,10 bit内容抖动到8 bit的效果会更好得多,而且基本上不会增加太多可闻的噪点。

Novatek: T-con NT71875支持Dithering function (12bits to 10bits,10bits to 8/6 bits).  

撰写:mary.xu@aitgroup.com.cn

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论