当前位置:C++技术网 > 精选软件 > 色彩基础知识全面了解:6 什么是抖动色?抖动色的形成原理是什么?抖动色有什么用?

色彩基础知识全面了解:6 什么是抖动色?抖动色的形成原理是什么?抖动色有什么用?

更新时间:2015-12-21 19:07:16浏览次数:1+次

    抖动色,字面上就有点让人难以理解。抖动的意思就是要动起来,是一个动态的。而颜色就是一个颜色而已。那么抖动色,如何抖动呢?难道是有一个像GIF图片一样动态轮流显示不同颜色的颜色吗?

    现实中,确实有这样的一个东西,就是一个圆盘,中间有一个轴,可以让圆盘旋转。然后盘片上面相隔涂上不同的颜色,如下图所示:

有不同颜色相间的色轮

【有不同颜色相间的色轮】
    这个轮盘旋转后,当旋转速度达到一个值之后,你会发现神奇的事情就发生了,你看到的盘子就是一种另外的颜色。因为多个颜色轮流进入人眼,并且达到一个频率之后,在眼睛中就形成了一种合成的颜色。
    难道抖动色就是这个吗?如果是这样的,那计算机如何用抖动色来显示一个颜色呢?这样不是挺复杂的嘛。
    说了这么多,我想你也开始在思考这个问题了吧。那我现在就开始详细的说一下。
    抖动色技术产生的背景就是显示系统的能力有限。比如黑白颜色显示系统,只能显示黑色和白色两种颜色,没有其他任何颜色。然而,有时候我们却要做出超出显示系统能力的事情,就是为了节约成本。这样做之后,原有的显示设备就可以不用更换,就不用花更多的钱,只需要升级一下软件即可获得额外的能力。所以,抖动色的目的就是在这个背景下发展出来的。适用的场合有黑白系统要显示额外的灰色,256色系统要显示更多的颜色等等。需要提醒一下,真彩色显示系统,即24位深度的颜色显示系统不需要抖动色了。因为你需要的颜色,基本都能显示。24位深度就是红绿蓝三基色每一个基色都用8位表示,从而可以组合出256*256*256种颜色,就很够用了。所以对于真彩色显示系统,抖动色就没有什么意义了。
    然而以前很多设备或者现在一些比较简单的设备,使用的颜色比较少,用不着真彩色,也可以节省成本,额外多用几种颜色,就可以用抖动色实现。
    说了这么多抖动色的背景,按耐不住要知道抖动色的原理了吧。那就开始吧。
    我们说的色彩轮盘并不是我们要说的抖动色。抖动色其实不会动,只不过在人眼看起来会形成晃动。你看一些格子的衣服,格子越小,越容易看花眼。这个和眼睛的成像系统有关。人眼通过捕获图像来识别物体和信息,同时,在运动过程中,人眼还会进行视野的矫正。这样在你晃动脑袋时,看的东西还是会水平正立的。
    你可以做一个实验:你左右偏头,开始快速的将脑袋歪向左肩膀,然后又快速的将脑袋歪向右肩膀,同时你看着一个物体,随便是什么,远的近的都可以,在整个过程中,你会发现,你始终发现看的东西都是正的。而你用相机歪着拍和正着拍效果是不一样的。这原因就是人眼视觉系统会自动将图像校准到水平时看到的样子,然后传送给大脑处理。所以,即使是你歪得很厉害,也会发现图像是正立的。
    当然,每一个人对这个校准的处理的能力都是不一样的,在快速的左右摆动脑袋时,都不能明显感觉到脑袋的校准。也就提现不了视觉系统矫正的能力。那么你接下来这么做:你盯着一个东西,然后眼睛不要调节焦点,就锁定一个东西,然后慢慢慢慢的从左到右或者从右到左的歪向一边,你会发现,你开始产生眩晕。不过你也可以发现,图像始终都是正立的。产生眩晕的结果就是因为在慢慢的移动的过程中,会产生大量的校准需求,如果你的校准能力不行,就会产生眩晕呕吐的感觉。
    而你看格子衣服会产生眩晕是因为格子和格子之间相距太近,而且都是一样的,人在稍微晃动之后,会让视觉系统产生定位不准,因此看不清楚这种画面,哈哈哈,画面太美,无法直视呀!!定位不准就出问题了,视觉系统就会将这个信号反馈给大脑,也产生了眩晕的效果。
    那么抖动色,其实也是利用眼睛而已。当线条之间隔得太近,就会让眼睛无法定位,就产生模糊的效果,就形成了一个整体的画面。而抖动色中抖动的不是颜显示的颜色,而是人眼的晃动。当这些线条格子太小了,人眼只看到是一片色块,而不是单个的格子,所以不会眩晕了。所以,抖动利用的是人眼的特点。而最后人眼看到的是什么颜色,就是颜色合成的事情了。
    在黑白颜色显示系统中,只有黑白两种颜色,然而将黑白间隔到很小,然后重复显示,就会形成格子衣服的效果,只不过格子很小后,你不会犯晕,同时通过黑白间隔配比的比例,可以决定最后呈现在眼睛的颜色是偏白还是偏黑,这样就形成了不同程度的灰色。

    我们看下面这张图,用程序生成的抖动色画面:

抖动色形成图1-颜色较浅,浅灰色

【抖动色形成图1-颜色较浅,浅灰色】

抖动色形成图2-颜色较深,深灰色

【抖动色形成图2-颜色较深,深灰色】
    如果你看这两张图片显得有格子,似乎像素大了点而已,可以远一点看,更加直观。在windows中是使用画刷来实现,然后通过配置画刷的不同颜色占的比例来实现“抖动”。我这里是用简单的划线方式来模拟的。在后面的文章将会用代码来模拟实现,本文就是讲解抖动色的原理。