第四章 概念
4.1图像
这个国际标准规定了PNG数据流,对PNG编码器的一些要求,编码器是生成
PNG数据流的,解码器是解释PNG的数据流的,PNG的编辑器是用来把一个
PNG数据流转换成另一个数据流的。它没有指定一个应用与一个PNG的编码
器或者是解码器或者是编辑器的任何一个的接口。一个图像对于编码器的表示
形式,对于解码器的传递的形式都没有被指定。如下的四种图像是被区分的。
A 源图像是图像展示给编码器的样子。
B 引用图像它仅是概念性的存在,它是矩形的像素的矩形的数组,所有的像素都有相同的宽度和高度
并且包括了相同的数量的无符号的整型的采样,无论是三通道(红绿蓝)还是四通道(红绿蓝阿尔法)
一个特定的类型(红绿蓝或者是阿尔)的采样的数组被叫做一个通道。每一个通道有一个采样深度,
它的范围在1到16之间,它是在一个通道中每个采样使用的比特的位的数量。不同的通道可能有不同
的采样深度。红绿蓝采样确定一个像素的颜色的红绿蓝组分的强度;如果它们都是0,像素是黑的,
如果它们都是最大值(2的采样深度次幂减去一),像素是白的。阿尔法采样决定一个像素透明度,当
它是0时,表示完全透明,最大值意味着完全不透明。在一个三通道的引用图像中,所有的像素都是
完全不透明的。对于一个四通道的引用图像中的所有的像素都是不透明的,也是可能的。不同在于后者
有一个特定的采样深度,而前者没有。像素的每一个水平行叫做一个扫描行。在每一个扫描行中,像素
从左往右地有序地排列,并且扫描行被从上到下地有序地排列。一个PNG编码器可能把源图像直接转换
成PNG图像,但是,从概念上看,它首先把源图像转换成一个引用的图像,然后,再把引用的图像转换
成PNG图像。根据源图像的类型不同,从源图像到一个引用的图像的转换,可能要求有信息上的损失。
转换在这个国际标准的范围之外。引用图像然而,总是能够从一个PNG的数据流中精确地恢复出来。
C 通过一系列的转换,从引用的图像中得到了PNG图像: 阿尔法分离,索引化,RGB合并,
阿尔法收紧,采样深度缩放。五种类型的PNG图像被定义(见6.1颜色类型和值)(如果PNG
编码实际上直接把源图像转换成PNG图像,源图像的格式与PNG图像的格式相似,编码器
可能避免做这些转换中的一部分)在PNG图像中,尽管不是从1到16的所有的采样深度都被
显式地支持,在引用的图像中的每一个通道的重要的位的数量可能被记录。在PNG图像的所有
的通道有相同的采样深度。 一个PNG编码器从PNG图像生成了一个PNG数据流。一个PNG
解码器以PNG数据流为输入,重建了PNG图像。
D 被传输的图像从PNG图像组装而成,PNG图像是从解码一个PNG数据流中得到的。
从传输的图像中没有特定的格式被指定。一个图像显示器表示一个图像给用户,尽可
能地接近原始的源图像的样子。
图4.1 四种图像类型的关系
图4.2 采样与通道,像素和采样深度之间的关系
4.2颜色空间
RGB的颜色空间的采样被指定为如下的三种方式之一:
a. 一个ICC的概要文件
b. 当采样是这个颜色空间时通过显式地指定颜色为RGB
c. 通过指定在图像和引用的白点中的红绿蓝三原色的亮度和x,y色度
对于高端的应用,第一种方法提供了更多的灵活性和控制度。第二种方法
启用了一个被显示的特定的颜色空间。第三个方法启用了被指定的RGB数据的色度
结合了被应用的亮度校正。当第一种方法和第二种方法被使用时,建议也提供显式的
亮度信息,给不支持完整的ICC概要文件和RGB颜色空间的解码器使用。这样的PNG
解码器仍然能够机智灵活地使用亮度信息。PNG解码器也强烈地被鼓励使用这样的信息
加上关于显示系统的信息,为了把一个图像显示出来给显示器,让显示器给够尽可能地
还原成图像的原作者看到的那个样子。
亮度校正不应用于阿尔法通道,如果存存在的话。 阿尔法采样总是表示为一个完全不透明
的一个线性的小数。