一般来说,计算机为了存储图像中每一个像素的颜色,会将颜色分解成几种色彩,对每种色彩进行量化存储。常见的一种方法是分解成红绿蓝三种颜色,对应英文缩写为RGB
。每种色彩有0-255
一共256
种状态。计算机存储空间的一个字节是8
个比特,每个比特可以记录0和1两种状态,使用一个字节就可以存储256
种状态,三个字节(24
比特)就可以组合出常见的各种颜色了。
如果直接存储每个像素的RGB
颜色值,每个像素都需要占用3个字节。有些图像中有大量的色彩是相同的,那么就可以在图像文件中划出一个区域存放一个“调色板”来存储图像中的每一种颜色,然后在记录每个像素的时候,只是记录这个像素的颜色对应到“调色板”的第几号颜色。这种做法就称为索引像素格式,或者叫索引色,也有其他的叫法,大同小异。
一般索引色格式的图片,常见的扩展名有GIF
和PNG
。而且调色板中最多不超过256
中颜色,也可以缩减为128、64、32
种色彩或者更少。
如果原始图像中颜色数量很多,转换成索引色的时候就会丢失一些色彩,这时还需要通过一些算法,让图像看起来损失不太大。
索引图像
索引图像是一种把像素值直接作为RGB
调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值。
一幅索引图包含一个数据矩阵data
和一个调色板矩阵map
,数据矩阵可以是uint8,uint16
或双精度类型的,而调色板矩阵则总是一个m×3
的双精度矩阵。
调色板通常与索引图像存储在一起,装载图像时,调色板将和图像一同自动装载。
概述
索引图像是一种把像素值直接作为RGB
调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值。
一幅索引图包含一个数据矩阵data
和一个调色板矩阵map
,数据矩阵可以是uint8,uint16
或双精度类型的,而调色板矩阵则总是一个m×3
的双精度矩阵。
索引模式和灰度模式比较类似,它的每个象素点也可以有256
种颜色容量,但它可以负载彩色。灰度模式的图像最多只能有256
种颜色。当图像转换成索引模式时,系统会自动根据图像上的颜色归纳出能代表大多数的256
种颜色,就象一张颜色表,然后用这256
种来代替整个图像上所有的颜色信息。
索引的图像只支持一个图层,并且只有一个索引彩色通道。
索引模式的图像就像是一块块由彩色的小瓷砖所拼成的,由于它最多只能有256种彩色,所以它所形成的文件相对其它彩色要小得多。索引模式的另一个好处是它所形成的每一个颜色都有其独立的索引标识。当这种图像在网上发布时,只要根据其索引标识将图像重新识别,它的颜色就完全还原了。
索引模式主要用于网络上的图片传输和一些对图像象素、大小等有严格要求的地方。
工作原理
MATLAB
自带的woman
信号构成的图像的像素索引矩阵和调色板矩阵。woman
图像是一幅典型的索引图像。其图像矩阵大小为256×256
,表示有65535
个像素点构成。调色板大小为256×3
,表示有256
种颜色。我们看到图像索引矩阵的(1,1)单元的内容为124,也就是说这一点像素的颜色就是调色板矩阵的第125行所定义的颜色。可以看到调色板矩阵的第125
行为[0.60536,0.60536,0.60536]
,表示RGB
三个分量的比重都比较重且在图像中的地位相同。
图像矩阵中的数值与调色板的关系依赖于图像矩阵的类型:如果图像矩阵是双精度类型的,那么数值1将指向调色板的第一行,数值2将指向调色板的第二行,依次类推;如果图像矩阵是uint8
或uint16
类型的,那么将产生一个偏移量:数值0表示调色板的第一行,数值1表示调色板的第二行,依次类推。
在实际操作中应该注意到,调色板通常与索引图像存储在一起;装载图像时,调色板将和图像数据一同自动装载。