计算机图形学基础:光栅图像(Fundamentals of computer graphic:Raster Images) 学习笔记
《Fundamentals of computer graphics》4th edition: 3. Raster Images
本文仅仅是本人的学习笔记,由于自己能力有限,可能存在许多错误。 由于是学习笔记,内容不全,请以原著为主
光栅图像(Raster images)
光栅图像 (raster image)在很多地方更习惯把它称作位图( bitmap image)。我们可以简单的把一个位图理解成一个二维数组,数组的每一个元素记录了一个像素的信息。 除了位图我们还可使用矢量图(vector image)来描述图片。矢量图最大的优点就是与分辨率无关,我们可以很好的在高分辨率的显示器上显示它。矢量图的缺点是必须要进行光栅化处理才能在显示器上显示。所以矢量图一般用于高精度高解析度的图片。
(省略一大堆对输入输出光栅设备的描述)
1. 图形,像素与几何结构(Images, Pixels, and Geometry)
我们测量或是生成一幅图片时,一般用二维的关系去描述光线。所以在物理世界中,图像是定义在二维区域上的函数(几乎总是矩形的)。所以我们可以把图像抽象为一个函数:


R是一个矩形的区域,V是像素值可能值的集合。很明显这个式子表示的是一个连续的图像,但我们的光栅图像是离散的。举两个例子:
1、由摄像机或是扫描仪获得的像素颜色实际上是由测量这个像素点周围的一些小区域取平均值得到的。
2、一个用于显示的像素由红绿蓝亚像素(subpixel)组成

通过这种结构使得像素表面的平均值由相对应的光栅图像控制(取局部平均)。
上面两个例子,像素的颜色值都是取的局部的平均值,这种方法被称作为图像的点取样(point sample)。也就是说,当我们说一个像素的值是x的时候,指的就是这幅图片上这个像素点周围形成的网格的取值为x。
1.1像素值
理论上光的亮度是无界的,但是我们用的显示器都有明确的最大能显示光亮度的值,所以完全可以将光亮度表示为一个有界的值,通常简化的表示为[0,1]。例如一张像素值为8-bit的图,每个像素的可能值就是 0, 1/255, 2/255, 3/255 … 254/255, 1。使用浮点数做像素值储存的图片能表示的范围广,通常称为高动态范围(high dynamic range,HDR)图像,以将其与固定范围或用整数存储的低动态范围(low dynamic range,LDR)图像区分开来。下面是书上的一些例子和用法:

1.2 显示强度与gamma
这部分讲的就是γ校正的相关知识。
因为像素的输入亮度和显示器显示的亮度是非线性的关系。这种非线性关系大致可以表示为:

求γ的值得一种方法就是找介于黑白的中间值,即:

时 a的值,a的值可以让用户自己通过类似于拖动滑块改变灰度的方式确定。大概长下面这样子:

右边的灰度是用户自己控制的(书上说左边的黑白格子,离远了看或者是把眼镜摘掉看在模糊的情况下可以近似看做0.5时候的值,反正我是没看出来。。。)。
知道了a,很容易能求出γ,

我们得到γ后,进行gamma校正:

就得到校正后的像素了。说白了就是让输入和输出原本呈现非线性的关系通过gamma校正来达到输入等于输出的效果。
2.RBG颜色
过于简单。。不写了
3.Alpha合成(Alpha Compositing)
当两个图片进行混合的时候我们常用一个α系数去表示混合的比例:

cf是前景颜色,cb为背景颜色。α为1时前景完全不透明,为0时完全透明。
把α的值作为第四个通道储存在RGB图片中就形成了RBGA图片,α信息占8bit,可以看做是一张灰度图。
书上的示例:

一些常用的图片压缩格式
无损或有损

