调色板色度压缩
调色板的概述
大多数彩色图像采集设备及图像处理软件都采用24位真彩色图像数据结构记录图像信息,即以红(R)、绿(G)、蓝(B)彩色模式记录色彩。其中在数据结构中,R、G、B各用一个字节表示,R、G、B的取值各有 256级,可表达1677万多种颜色。将色彩空间化减到图像中常用的颜色。为此,我们设想利用人眼对色彩分辨能力的有限性,采用一个字节共8位的数据结构来显示、存储或传递24位真彩色图像,即建立256色或更少的颜色信息作为索引值,来模拟1677万种颜色,以实现彩色图像的颜色压缩,这就须建立适当的调色板,对图像的色彩数据的表达做转换处理,即用适当数量(一般采用256种)的颜色索引值来填写调色板。
一般来讲,选择一个合适的调色板并非一件很容易的事。尽管人眼对颜色的分辨力是有限的,但要从1677万多种颜色中选取256种或更少的颜色作为一幅彩色丰富的图像的颜色的替代,仍然是一件十分困难的事情。压缩彩色图像颜色总数的算法有多种。主要可分为以下3类:一类是依据图像的彩色分布情况来确定调色板,对24位彩色图像中所有的色彩做统计分析,取统计结果位于前面的256种颜色作为表达原图像的颜色,并把这256种颜色设置为调色板中的颜色;一类是事先将调色板设置好,按照一定的算法将图像的颜色与调色板相匹配,即固定调色板法;另一类是利用抖动算法实现图像颜色的压缩。
三类调色板的比较
固定调色板可以增大效率和一定的压缩率,但是如果一幅图像中所含的颜色较为接近,倒如,在一幅图像表现的是一幅田野,田野有草绿色,葱绿色,墨绿色,浅绿色等颜色,但通过固定调色板算法进行彩色压缩,这4种不同的绿色将有可能由同一种绿色来表示,这种结果损失了图像色彩细微处的差异。所以固定调色板算法不适宜用于色彩分布特点集中的图像。现在主流采用抖动算法和颜色统计算法。
算法适用范围
矢量化图像、颜色数目较少的图像。
算法实现(基于颜色统计的方法)
八叉树调色算法要建立一个八叉树,每个节点有8个子节点,共8级,一级一级的延伸下去,最后一级是“树叶”。首先需要取得颜色的RGB值,假设颜色是淡蓝色(红:240,绿:250,蓝:255)。
表1:淡蓝色对应的统计表
从每个位平面的二进制数,组成一个0到7之间整数,然后这个整数就是这个颜色在八叉树中对应级的位置,那么我们就在八叉树的第1级第7个子节点处添加一个节点,以此类推。随着颜色数的增加,八叉树的树叶就在不断增多。当八叉树的树叶数量到达256的时候,我们就需要把一些叶子合并。通常就合并最后添加的颜色所在树枝的树叶。先合并树叶,合并完了再网上合并树枝。最后,所有颜色采集完了以后,就遍历整个八叉树,取出所有树叶的颜色,这样就得到了调色板。调色结果如下所示:
八叉树结构 |
八叉树调色板 |
固定调色板生成256色位图 |
八叉树生成256色位图 |
图1 八叉树生成调色板的结果
调色索引图像怎么压缩?
思路1:将颜色按RGB大小进行排序,则索引图像将形成彩色图像灰度化的轮廓,这时采用现有的方法(SPECK、SPIHT、JPEG2000等)进行压缩。但是因为颜色代表颜色索引值,索引值变化后,会产生“颜色失调”的现象。
图2 SPIHT压缩(bpp=0.8)
即使颜色比较相近,当压缩比例达到一定程度,在视觉上仍然变得不可接受,尝试根据大部分颜色的变化对索引表进行变更,仍不能有效解决问题。
图3 SPIHT压缩(bpp=0.2)
思路2:对图像进行无损压缩。尝试DPCM和RLC编码,压缩率只能达到15:1左右。
图4 无损压缩方法 CR=15
综上:调色板压缩方法更适用于颜色数更少的矢量图(典型如GIF压缩)。要做到颜色不失真,压缩率比较小。要做到压缩率比较高,会产生局部的颜色失调。
2 基于压缩感知的压缩方法
基于非均匀采样和压缩感知的图像压缩算法:针对不同图像内容对重构贡献的不同,提出了一种新的采样方式,即对图像边缘及其周边像素点密集采样,对剩余像素点进行随机抽取。在解码端通过采样点位置信息构造出各图像块对应测量矩阵,利用SL0算法进行重叠块重构,提高了图像重构精度,并有效改善了纹理区域的视觉效果。
基于分类稀疏字典和变采样率采样的图像压缩算法:该算法首先利用图像库训练分类稀疏字典,在编码端根据Canny检测算子将原始图像分为不同类型图像块,再生成与各字典匹配的最佳观测矩阵分别对各图像块随机投影。在解码端利用SL0算法分别重构各类图像块,最终得到高精度重构图像。
文献中涉及到一些最优化知识,这部分知识没有学过,故没有去验证。
论文的图像采样率分别选取为 0.3,0.4 和 0.5,压缩比例不高。但是论文中提到可以跟其他压缩方法相结合,对于提高压缩质量是有帮助的。