传统图像编码方法一般已成定式,发展潜力不大。分形图像编码方法思想新颖,是极具发展潜力的压缩方法,但分形编码存在编码耗时过长的缺点。本文基于分形编码思想,从编码时间、压缩比以及解压效果三个方面对Jacquin基本分形编码方法进行研究和改进,提出一种改进的分形图像编码方法。通过对多幅图像进行实验,本文的改进方法在图像压缩时间、压缩比以及峰值信噪比PSNR值上均有提高。 The traditional image coding method has become the general format; development potential is not great. The method of fractal image coding compression method is a novel idea; it has great potential for development. Based on the theory of fractal coding and from coding time, compression ratio and the decompression effect three aspects, we make research and improvement on Jacquin’s basic fractal coding method, and propose an improved fractal image coding method. Experimental results show that compared to the Jacquin’s basic fractal coding method, the method in this paper is improved on the image compression time, compression ratio and peak signal to noise ratio.
齐凌云
四川大学计算机学院,四川 成都
收稿日期:2017年11月3日;录用日期:2017年11月16日;发布日期:2017年11月23日
传统图像编码方法一般已成定式,发展潜力不大。分形图像编码方法思想新颖,是极具发展潜力的压缩方法,但分形编码存在编码耗时过长的缺点。本文基于分形编码思想,从编码时间、压缩比以及解压效果三个方面对Jacquin基本分形编码方法进行研究和改进,提出一种改进的分形图像编码方法。通过对多幅图像进行实验,本文的改进方法在图像压缩时间、压缩比以及峰值信噪比PSNR值上均有提高。
关键词 :分形图像编码,压缩比,解压效果
Copyright © 2017 by author and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
多媒体的发展离不开图像技术的发展。图像中含有的大量信息使得图像具有大的尺寸,但是图像传输却需要图像具有小尺寸。因此若没有一个高效的图像编码方法,将不可能实现图像的传输。
传统的图像压缩算法大多是通过去除冗余信息,保留高频信息来实现图像压缩,一般已成定式,发展潜力不大。分形编码技术 [
本文提出一种改进的分形图像编码方法。在编码方面,不再对基本分形编码方法中定义域块进行8种变换,以此来加快编码时间。在解压效果方面,通过加上额外的误差信息作为编码结果来提升解码效果。误差信息同样是很庞大的数据。误差存储数量的多少、所存误差是否是重要信息都会影响到图像的解压效果。在保证高压缩比以及较好的图像解码质量的前提下,如何选取误差进行存储,成为研究实验中的重点。本文通过运用统计分类思想,对误差进行分区并将其映射到指定数值模型上。之后将处理后的误差按照高频和低频信息两部分进行存储,来实现改善解压图像质量的目的。
上世纪80年代,Mandelbrot在图像分析领域最先提出了分形理论和分形几何 [
1981年,J.E.Hutchinson将迭代函数理论(Iterated Function Theory)引入分形理论中 [
1990年,Barnsley的学生Jacquin发表博士论文,第一次提出局部函数迭代系统 [
虽然Jacquin提出的自动分形编码方法具有思想新颖、解码方法简单又快速、解码质量与分辨率无关等优点。但也存在许多问题,例如编码计算量大、编码时间过长、压缩比不够高、解码图像存在块效应等诸多问题。后期的研究大多是在Jacquin分形图像压缩算法的基础上进行改进研究 [
因为分形编码本身是失真的,因此以一定图像质量的损失为代价换取编码时间加快的做法成为快速分形编码研究的主流。基本分形编码方法中的8种变换使得虚拟码本数量很大,所以本文中的方法不再对定义域块进行8种变换,以此来缩短编码时间。但为了保证图像解压效果,本文方法会附加额外的误差信息作为编码结果。误差信息量同样很庞大,实验发现很多误差值很小,其对人眼视觉影响较小,可以忽略不进行存储。本文运用统计分类思想,对误差进行分区并将其映射到指定数值模型上。对映射处理后的误差进行存储,实现改善解压图像质量的目的。同时为了提高压缩比,本文对编码数据采用固定比特数的方式来存储。
改进的编码方法的具体算法步骤如下:
1、设输入图像I,图像大小为N × N。将图像I分割成互不相交的B × B大小的值域块Ri,且所有值域块的并集为原图像。即分割满足公式(1)。
I = ∪ i = 1 N / B × N / B R i ,且 R i ∩ R j = Φ ( i ≠ j ) (1)
2、将图像I分割成可以相交的F × F大小的定义域块Di,其中F = 2 × B。然后对每个定义域D块进行4邻域像素均值算法收缩为B × B大小的像素块,这些像素块组成“虚拟码本”。
3、在虚拟码本内,对每个值域块Ri寻找其最佳匹配块Dbest,使得块Ri可由最佳匹配块Dbest通过亮度变换来近似,即有 R i ≈ s ⋅ D b e s t + o ⋅ 1 ,其中1是亮度值均为1的常值块,s代表对比度收缩因子,o代表亮度偏移量。最佳匹配块Dbest的寻找需满足公式(2),即满足Ri与Dbest的仿射变换间的差异最小。公式(2)也可表示为公式(3),其中 E ( R , D ) 表示最小平方误差。公式(3)是关于s、o的二元多项式的最小值问题,由最小二乘法可以得到s、o的值。最后将仿射变换参数s,o以及最佳匹配块的位置参数dx,dy记录在矩阵中,即完成对一个值域块的编码。遍历图像中所有值域块,完成图像编码。
min j { min s , o ∈ R ‖ R i − ( s ⋅ D j + o ⋅ 1 ) ‖ } = min s , o ∈ R R i − ( s i ⋅ D b e s t + o i ⋅ E ) (2)
E ( R , D ) = min s , o ∈ R ‖ R − ( s ⋅ D + o ⋅ 1 ) ‖ 2 (3)
4、使用基本分形解压算法得到解压图像 I ′ ,并计算误差 Δ = I − I ′ 。对误差值按递增的顺序进行排序,形成一个数列,并计算该数列的上四分位数Qu、中位数Qm、下四分位数Ql、上限 Max = Q u + 1.5 ( Q u − Q l ) 、下限 Min = max { 0 , Q l − 1.5 ( Q u − Q l ) } 以及误差绝对值的最大值M。其中上四分位数Qu为居于数列四分之一位置处的误差数据值,中位数Qm为居于数列中间位置处的误差数据值,下四分位数Ql为居于数列四分之三位置处的误差数据值。
5、对误差值进行区域划分并进行映射。运用分类统计思想,我们对误差进行区域划分。将绝对值处在 { 0 , Max } 间的误差值映射为0,不进行存储。绝对值在 { Max , + ∞ } 间的误差分为14个区域,并映射到数字1至14,这样只用4 bit即可将误差值保存,其中用奇数值表示正值误差,偶数值表示负值误差。又因为要将同一区域内的所有点视为相同类型点,并以该区域均值代替区域内所有误差点的值,故为了保证解压图像的PSNR值,区域间隔的选取很重要,不能过大。本文区域间隔S的取值计算方法为 S = ( M − Max ) / 7 。因此, { Max + S × ( i − 1 ) , Max + S × i } 区域误差映射为数字 2 × i − 1 ( i = 1 ~ 6 ) 。 { − Max − S × i , − Max − S × ( i − 1 ) } 区域误差映射为数字 2 × i − 1 ( i = 1 ~ 6 ) 。 { Max + S × 6 , + ∞ } 区域误差映射为数字13, { − ∞ , − Max − S × 6 } 区域误差映射为数字14。求每个区域的误差均值,设为 m e a n i ,其中 i = 1 ~ 14 。将映射关系(i, m e a n i )存入编码文件中。
6、对误差进行存储。误差的存储分为两部分。一部分是高频信息存储,选择误差最大值存储。另一部分是低频信息存储,将误差图像分为2 × 2的矩阵,对矩阵中值小于4的所有误差点求均值,并以2 bit进行存储。最后将编码数据以.mat文件输出。
解码的具体算法步骤如下:
1、输入编码文件F。读取编码信息并计算出原图像尺寸。
2、定义原图像大小的单位矩阵作为初始图像,设为H。同压缩过程一样将图像分割成相同大小的值域块。对于每个值域块Ri依据编码数据中的位置信息找到相应的最佳匹配块 D b e s t ,对 D b e s t 块进行4邻域像素均值收缩算法和仿射变换操作,最后将结果赋值给该Ri块。对所有值域块R操作完成后,经过拼贴就完成了图像的一次迭代,设此时图像为 H ′ 。
3、判断是否达到预先设定的迭代次数,若已经达到预先设定的迭代次数,则执行步骤4,否则就以图像 H ′ 作为初始图像,再次执行步骤2来继续完成图像迭代。本文中设定的迭代次数为6。迭代次数的设定选择要综合考虑解压效果和解压时间两个因素。通过对多幅图像进行不同迭代次数选择的实验,发现迭代次数达到6时,对图像的解压效果不再有明显的增强效果。
4、提取编码中存储的误差信息以及误差映射信息。依据压缩方法中误差存储的规则,反向得出误差信息。再将误差加入图像 H ′ 中,完成解码。最后输出解压图像 H ′ 。
实验采用Windows 7、MatlabR2012b开发环境。实验中使用的图像大小均为256 × 256。依据本文提出的算法对多幅图像进行实验,算法设定的值域块R大小为8 × 8,定义域块D大小为16 × 16。解码时图像的迭代次数为6。
另外,我们采用PSNR(Peak Signal to Noise Ratio)峰值信噪比值对解码图像的质量进行评价,其中PSNR的计算公式见式(4)和式(5)。PSNR描述了原图和被处理后图像之前的均方误差相对于信号最大值平方的对数值,是一种评价图像的客观标准。设原始灰度图像为 I = f ( i , j ) ,解压后图像为 I ′ = f ′ ( i , j ) ,均方误差为MSE,其中 i = 1 , 2 , ⋯ , Y ; j = 1 , 2 , ⋯ , X 。
MSE = 1 Y X ∑ 1 Y ∑ 1 X ( f ′ ( i , j ) − f ( i , j ) ) 2 (4)
PSNR = 10 log 255 2 MSE (5)
实验结果和分析实验中选取了大量图片进行测试,下面选取其中3幅图像进行说明。原图如图1、图2、图3所示。
分别使用本文中的编码方法和Jacquin基本分形编码方法对上述3幅图像进行编码、解码操作。解码的最终效果如图4、图5、图6所示。其中图(a)表示使用本文方法的解压图像,图(b)表示使用基本分形编码方法的解压图像。
从图4、图5、图6的解压图像效果可以看出,相较基本分形编码方法,本文压缩方法的解压效果更好,人眼视觉效果更好,有更丰富的细节体现。此外还对两种压缩方法的编码时间、压缩比以及解压图
图1. Lena图
图2. Bird图
图3. Fruits图
像的PSNR值进行计算和比较,结果见表1。
从表1可以看出,相比基本分形编码方法,本文压缩方法在图像编码时间、压缩比和图像PSNR上均有提高,这说明本文提出的改进的分形图像编码方法是有效的。
图4. 使用本文方法和基本分形方法的lena图解压效果
图5. 使用本文方法和基本分形方法的bird图解压效果
图6. 使用本文方法和基本分形方法的fruits图解压效果