直方图零点与图像无损压缩定量关系研究
2018-08-25关晨曦周诠
关晨曦,周诠
(中国空间技术研究院西安分院空间微波技术重点实验室,陕西西安710100)
由于直方图能给出该图像概貌性的描述,比如图像的灰度范围、每个灰度的频度和灰度的分布、整幅图像的平均明暗和对比度等,由此可得出进一步处理的重要依据。对于一些直方图具有丰富零点的、呈“稀疏”性的图像。文献[1]对这个问题进行了探讨,并提出了一种进行图像“直方图收缩”的预处理技术。对“稀疏”直方图进行了“收缩”,再利用现有的无损压缩技术(如JPEG-LS、JPEG2000等)对新图像进行压缩,则能提高压缩比。但是这种方法具有局限性,只有直方图比较稀疏的图像才适合。为此,文章作了一种定量关系研究,提出直方图稀疏度的概念,探讨说明稀疏性在直方图收缩以及无损压缩中的有效性。
1 图像的灰度直方图
一幅灰度图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征。图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所占的多少。图像的直方图是图像的重要统计特征,可以认为是图像灰度分布密度函数的近似。通常图像的灰度分布密度函数与像素所在的位置有关。设图像在点(x,y)处的灰度分布密度函数为p(z;x,y),那么图像的灰度密度函数为:
式中,D是图像的定义域,S是区域D的面积。一般来讲,要精确得到图像的灰度分布密度函数比较困难,所以实际中用图像的直方图来代替。灰度直方图是一个离散函数,它表示数字图像每一灰度级与该灰度级出现频率的对应关系。设一幅数字图像的像素总数为N,有L个灰度级,具有第k个灰度级的灰度rk的像素共有nk个,则第k个灰度级出现的概率为:
直方图的性质[2]:
1)直方图反映了图像中的灰度分布规律。它描述每个灰度级具有的像元个数,但不包含这些像元在图像中的位置信息。
2)任何一幅特定的图像都有唯一的直方图与之对应,但不同的图像可以有相同的直方图。
4)明亮图像的直方图倾向于灰度级高的一侧;低对比度图像的直方图窄而集中于灰度级的中部,高对比度图像的直方图成分覆盖的灰度级很宽而且像素的分布不太均匀。
5)直观上来说,若一幅图像其像素占有全部可能的灰度级并且分布均匀,则这样的图像有高对比度和多变的灰度色调。
由于自然图像其灰度通常分布在狭窄的区间,引起图像细节不清晰。采用直方图修整后可使图像的灰度间距拉开或者灰度分布均匀,从而增大了反差,使图像细节清晰,达到图像增强的目的[3]。直方图的修整法通常有直方图均衡化和直方图规定化两类[4]。直方图均衡化方法是一种非线性映射方法[5],被广泛地应用于图像量化和图像增强中。应用各灰度级概率累积函数作为变换函数,将高动态范围图像数据映射为一幅灰度分布均匀的8位显示图像[6-7]。
2 直方图收缩算法
图像直方图由于其计算代价较小,且具有图像平移、旋转、缩放不变性等众多优点,广泛应用于图像处理的各个领域[8-9],特别是灰度图像的阈值分割[10]、基于颜色的图像检索以及图像分类[11-13]。
文献[1]提出了一种进行图像“直方图收缩”的预处理技术,经过处理之后的图像非常有利于进行无损压缩,但是,这种算法具有局限性,只有直方图比较稀疏的图像才适合[14],为此,文章提出了一种“直方图稀疏度”的概念,并以大量图像为例,说明直方图稀疏度在直方图收缩以及无损压缩中的有效性。
2.1 直方图收缩算法
对于直方图较稀疏的图像I,
从上图中可以看出,经由自适应卡尔曼处理后的数据与原始数据的差值更小。经典卡尔曼的滤波效果相比之下,要差了很多。
直方图为:
假设其中hi=0,则直方图变为:
即将原图中对应像素i+1,…,255替换为i,…,254。对于原图中所有零点都作此处理,得到新的图像I′,此时新图像的直方图由稀疏变成了收缩,再结合现有的无损压缩技术(如JPEG-LS、JPEG2000等)对新图像I′进行无损压缩,则比直接对原图进行无损压缩的压缩比要高。注意,在传输之前,建立一个有256项的一维数组,记录原始图像中所有非零像素点值,按0~255顺序排列,计作映射表,将其作为一个单独的文件保存,在传输过程中,将映射表作为图像数据的一部分存在压缩码流中,由于接下来进行无损压缩,所以映射表可以完全恢复。
2.2 举例说明
以jet图像为例,灰度范围是0~255之间,每个灰度出现的次数为:
(7,0,31,0,64,0,123,0,0,180,0,256,0,359,0,0,385,0,342,0 ,…,3,0,0,0,0,0,0,1)
经过直方图收缩,将出现次数为0的灰度值个数进行统计,共152个,按上述公式将对应像素进行替换,直方图变为:
(7,31,64,123,180,256,359,385,342,…,0,0,0,0,0,0,0,0,0)
图1 举例图像
图2 (a)图对应直方图
如图2所示,左边是原始图像对应直方图,右边是直方图经过修改以后的图像。
图(a)经过jpeg2000无损压缩的压缩比为1.92,直方图修改后的对应的图像经过jpeg2000无损压缩的压缩比为2.66。
对于图(b)来说,对应直方图为图3,在肉眼看来并无区别,同样,用jpeg2000无损压缩的压缩比为1.31,直方图修改后的对应的图像经过jpeg2000无损压缩的压缩比为1.31,直方图收缩的方法并不适用。也就是说,通过直方图收缩的方法来提高无损压缩比并不是对所有图像的适合,那么适合的图像都具有什么特征呢,为此,文章提出直方图稀疏度的概念。
图3 (b)图对应直方图
3 直方图稀疏度
对于图像I,直方图为
统计H中零点灰度值,假设有k个,则直方图稀疏度为
其中0≤S<1,当直方图稀疏度越大,说明直方图越容易收缩,经过直方图收缩处理后的图像用无损压缩方法得到的压缩比比直接对原图像进行无损压缩得到的压缩比要大。压缩比的大小,取决于图像本身,为此,作以下实验。
4 实验过程及结论
实验选取120幅512*512灰度图像,网址是http://decsai.ugr.es/cvg/dbimagenes.90幅图像用来测试直方图稀疏度与无损压缩的压缩比之间的关系,30幅图像用来验证直方图稀疏度的有效性。实验选取jpeg2000的无损压缩方法[15-16]和常用的无损压缩技术ZIP和RAR,这里使用WinRAR压缩工具进行zip和rar格式的压缩。
4.1 实验过程
1)首先使用jpeg2000、ZIP、RAR等无损压缩技术对图像分别进行无损压缩得到压缩比r1;
2)根据公式(3)分别计算图像的直方图稀疏度s;
3)使用直方图收缩的方法即2中的方法对图像直方图进行修改得到新图像,对新图像使用jpeg2000、ZIP、RAR等无损压缩方法得到压缩比r2;
按照上述实验过程对90幅图像进行同一处理,得出部分结果如下表,并画出散点图,表示出稀疏度和压缩比1及压缩比2之间的关系
表1 直方图稀疏度与各种无损压缩结果(保留三位小数)
图4 jpeg2000压缩结果
图5 ZIP压缩结果
图6 RAR压缩结果
4.2 实验结论
根据表中结果以及散点图可知,对于jpeg2000无损压缩算法,只要图像稀疏度大于0.4,通过直方图收缩的方法来提高无损压缩比是有效的,稀疏度越大,压缩比提高的越大,对于ZIP压缩技术,直方图稀疏度的大小对于直方图收缩的方法来提高无损压缩比的效果不太明显,对于RAR无损压缩,压缩比可以有效提高0~0.2以上。最后用剩余的30幅图像来验证直方图稀疏度的有效性,误差不超过0。
5 结 论
实验证明直方图收缩的预处理方法对提高无损压缩的压缩比有很好的作用,但并不是所有图像都适合。为此,文章提出了一种直方图稀疏度的概念,即,在图像压缩之前先统计直方图稀疏度,如直方图稀疏度在0.4以上,则可以先对图像进行直方图收缩,再用无损压缩的方法,压缩比能提高多少取决于稀疏度的大小,直方图稀疏度越大,即越接近1,则通过预处理后能提高的压缩比也越大。