多数计算机图形图像,是通过光栅显像显示给用户的。这种系统将图像作为像素阵列进行显示,像素即图像元素。这些像素采用RGB颜色空间。
一、光栅显像
台式机和投影显示器的显示技术有多种。这些显示器的分辨率和物理尺寸各不相同。编程人员通常假设像素排成矩形阵列,又称为光栅。
像素
光栅显示器上可显示元素称为像素。在显示器上,通常用有序对(i,j)来表示像素的索引,即表示该像素所在的行和列。如果一台显示器具有m行,n列像素,则左下角的元素是像素(0,0),右上角的元素是像素(m-1,n-1)。
我们需要用实际的二维屏幕坐标来表示像素的位置。随着API的不同,这些系统在细节上会有所不同,但是最常使用的是用整数点阵作为像素中心,如下图中4X3屏幕所示。由于像素占据一定的空间,所以距离像素中心具有0.5个单位的过冲。
物理像素,就是硬件上实际可显示的元素。不同的显示系统采用不同的物理像素,多数显示系统的像点呈水滴状或者呈方形。水滴状像点,即在像素中间密度最大,向边缘方向密度逐渐减小;方形像点,几乎都是正方形,并且各正方形之间有一段小间隙,这样可使控制电路获得像素信息。
二、显示器的亮度和γ值
现代显示器采用数字信号输入方式,接收的是数字信号表示的像素"值",然后将其转化为亮度值。断电后显示器的亮度实际上不是零,因为屏幕能够反射环境管线。不过我们可以认为此时显示器呈"黑色",显示器完全打开是呈"白色"。对像素颜色用0到1的数值来表示。黑色为0,白色为1,介于黑白中间的中间灰色为0.5。注意这里"中间"指的是从像素发出光线的强度,而不是指观察到的亮度。
为了在显示器上产生图像,要明白两个关键问题。第一,显示器输入信号的处理是非线性的。对于多数显示器,一般利用γ值来近似表示其非线性,具体数值公式如下:
显示亮度=(最大亮度)pow(α,γ) (1)
其中α是介于0到1之间的输入亮度值。如显示器的γ值为2.0,输入值α=0.5,则显示亮度是最大亮度的1/4。用γ值表示显示器的非线性知识一阶近似,实际中在估计设备的γ值时不需要很高的精度。一种度量非线性的直观方法是,找到能产生黑白之间的中间亮度的α值,即下式中的α值:
0.5=pow(α,γ) (2)
如果能找到满足上式的α值,则能够求出γ值:
γ=ln(0.5)/lnα (3)
一旦知道了γ值,就可以对输入进行伽马校正,使得输入值α=0.5可以在屏幕上显示出介于黑白中间的灰度效果。变换方法为:
α=pow(α,1/γ) (4)
把该式带入(1)式可得:
显示亮度=γ*(pow(α,1/γ))*(最大亮度)=α*(最大亮度)
实际显示器的另一个重要特征是,输入值通常经过了量化处理。因此,我们能够在浮点范围[0,1]内处理亮度值。输入显示器的信息一般是大小固定的非负整数,取值范围一般是0-255,可采用8位二进制数存储。
三、RGB颜色
计算机图形学中,多数显示效果都有RGB颜色空间确定。RGB颜色空间比较简单,经转换能够直接控制多数计算机屏幕的显示。下面我们将从用户观察的角度讨论RGB颜色空间,RGB颜色空间的基本思想是,将红、绿、蓝三种基色光混合产生新的颜色。对于RGB加性颜色空间,我们有下列混合效果: