当前位置:文档之家› 图像压缩算法性能的测试与分析工具

图像压缩算法性能的测试与分析工具

图像压缩算法性能的测试与分析工具1蔡正兴,张虹中国矿业大学计算机科学与技术学院,江苏徐州 (221008)摘要:本文研究了图像压缩算法性能的评价方法,提出了图像压缩算法性能的测试算法,包括横向比较测试和纵向分解测试,并在此基础上设计并实现了压缩算法性能的测试与分析工具。

该工具能够测试和分析压缩算法的性能,并自动生成各种分析图表,为用户提供了方便,具有较大的实用价值。

为了提高评价的效率、准确性和全面性,文中提出了测试图像的选择方法和测试结果的分析方法,具有一定的理论意义。

关键词:压缩性能,测试方法,分析方法,图像选择方法1. 引言近年来,图像压缩得到快速发展[1],各种算法层出不穷,比如有损的压缩算法可以在低失真的条件下达到高压缩比[2,3],而无损的压缩算法则可以保证重建图像的无失真[4]。

因此在实际应用中得知各种压缩算法的性能及特点是必要的。

在评价图像压缩算法性能时主要考虑压缩比、重建质量、时间复杂度、空间复杂度和实现代价这几个方面[5],其中较为重要的是压缩比、重建质量和时间复杂度。

为了计算这些压缩性能指标,常常使用一些工具软件,比如在图像处理领域广泛使用的MATLAB系列软件,它提供了大量的内置函数[6],操作方便,功能强大,但它不是评价图像压缩算法性能的专业工具,需要进行二次开发,不能有效的分析和评价压缩性能。

其次,利用性能指标来评价压缩方法,尽管方便快捷,但还不能反映图像压缩算法的全部特点。

例如,在考虑变换编码系统的失真性质时,一般采用MSE(均方误差),有时利用MSE计算得到的重建质量很好,但视觉效果却不好,这是因为MSE对图像中的失真显著性不敏感[7],可见,性能指标仅仅是对压缩算法进行宏观上的评价,无法评价每个过程对压缩性能的影响。

再次,在评价压缩性能时,不可避免地要使用测试图像,用户在选择测试图像时带有随机性,不利于全面地评价压缩方法。

针对这些不足,本文设计了图像压缩算法性能的测试与分析工具——AutoTA。

AutoTA的目标是自动地对图像压缩算法进行测试与分析,并生成各种分析图表,全面的评价图像压缩算法的性能。

AutoTA具有广泛的应用前景,科研人员利用AutoTA可横向比较各种压缩算法的性能,也可纵向分析压缩算法的特点;工程技术人员也可以根据AutoTA的测试结果,在实际应用中选择合适的图像压缩算法。

2. 压缩算法性能指标压缩性能指标是评价压缩算法的重要方面,也是AutoTA分析图像压缩算法性能的重要依据,下面将描述相关的性能指标。

2.1压缩比压缩比是指压缩过程中输入数据量和输出数据量之比,反映了图像压缩算法的压缩性能,当压缩比小于1时为正压缩,当压缩比大于1时为负压缩。

压缩比的计算公式为:1本课题得到国家自然科学基金项目(编号:60372102)、教育部博士点基金项目(编号:20030290011)、软件新技术国家重点实验室课题(编号:A200309)资助。

=输入文件大小压缩比输出文件大小…………………..…………….1 这里输入文件指的是原始文件,输出文件指的是压缩后的文件。

值得注意的是,这种度量方法必须指明输入输出的显示形式,否则将是不可靠的[8]。

2.2峰值信噪比在有损图像压缩中,峰值信噪比用来衡量与原始图像相比较的重建图像的质量,与人类视觉系统所察觉到的误差有有限的近似关系[7],易于计算,定义为:2(21)PSNR=10lg B MSE− …………………………………2 其中B 表示该图像的色深,MSE 为原图像和恢复图像的失真均方差,定义为:1212112121200121([,][,]) N N n n MSE n n n n N N χχ−−∧===−∑∑ (3)其中12[,]n n χ表示原图像在处数值, []表示重建图像在处数值。

12[,]n n ∧χ21,n n 12[,]n n 2.3时间复杂度时间复杂度是指图像压缩算法编解码的速度,希望编解码的速度很快。

在许多应用中,编解码将在不同的时间,不同的地点和不同的系统中运行[8],因此编解码速度对评价压缩算法的效率和通用性具有重要的意义。

AutoTA 中采用读取CPU 中的存储器值的方法来计算编解码时间,描述如下:在压缩或解压缩算法运行前,先读取CPU 内部64位计数器的值并存储;在压缩或解压缩算法运行结束后,再次读取CPU 内部64位计数器的值并存储;将两次的存储值相减,得到运行的时钟周期数,用该值除CPU 的频率就得到算法运行的时间。

计算公式为:2T T T H−=1 ………………………………………………....4 其中表示算法运行结束时CPU 计数器的值,表示算法运行前CPU 计算器的值,H 代表CPU 的频率。

2T 1T 还有一些压缩性能指标如空间复杂度,实现代价等无法精确衡量,本文暂不讨论。

3. AutoTA 系统设计3.1系统结构AutoTA 以目前常见的几种压缩算法为测试和分析对象,主要包括离散余弦变换(DCT)算法、离散小波变换(DWT)算法、哈夫曼编码算法、算法编码算法、JPEG 压缩算法和JPEG2000压缩算法。

在实现这些压缩算法的同时,重点在于实现对图像压缩算法的测试和分析,测试的目的在于获得性能指标等数据,而分析则是利用这些数据对压缩性能进行评价,因此AutoTA 应该具备[9][7]图像压缩算法的测试功能、分析功能、测试图像选择功能、图像压缩质量控制功能、性能指标的计算功能、压缩算法的分解功能等。

由此,图像压缩算法的性能测试与分析工具可划分为五个部分:初始化设定、测试图像选择、压缩算法实现、参数计算和性能分析。

初始化部分选择待测试的压缩算法和测试策略,进行压缩图像的质量控制和性能指标的选择;测试图像选择主要是系统根据设定的测试算法自动的选择测试图像;压缩算法实现部分根据要求实现相应的压缩算法;参数计算部分进行性能指标的计算或者跟踪压缩算法每一步的数据变化;性能分析部分根据测试策略和计算得到的各种数据,自动生成各种性能分析图表。

系统结构如图1所示。

图1 AutoTA 系统框架3.2工作原理由AutoTA的框架图可知,用户需要选择测试策略,并指定待测试的压缩算法,可以是一种或多种,由测试策略确定;确定压缩算法后,用户需要进行系统参数的设置,这和具体的测试策略有关,比如恢复图象质量,跟踪数据块大小等;然后,AutoTA将自动地选择测试图像,并调用指定的图像压缩算法,计算需要的参数,如性能指标等,并存储于数据库中;最后系统将分析这些数据,并绘制图表。

3.3 AutoTA的实现技术AutoTA的关键在于压缩算法的测试方法,测试图像的选择方法和测试结果的分析方法。

以下将详细介绍它们的实现算法。

3.3.1 AutoTA测试方法为了全面的评价图像压缩算法,避免利用性能指标评价压缩算法的误差,本文提出了两种测试方法: 横向比较测试和纵向分解测试。

横向比较测试是将待评价的图像压缩算法与其他压缩算法进行比较,比较的内容是压缩性能指标;纵向分解测试是将待评价图像压缩算法分步骤实现,并记录每一步的数据,纵向观察数据的变化。

测试方法是AutoTA的基础,它决定整个系统的流程。

下面给出测试策略的实现算法:1)系统初始化。

令n=0,testmethod=0,imagemethod=3,imagecount=1,imagequality=100,blocksize=4,x=0,y=0。

其中n表示测试次数,为正整数;testmethod表示测试策略,0代表横向比较测试,1代表分解测试,为布尔型数;imagemethod表示测试图像的选择方法,1代表同类图像,2代表不同类图像,3代表随机选取,为正整数;imagecount表示测试图像的数目,为正整数;imagequality表示压缩图像质量,其值在0到100之间变化,值越大表示图像质量越好;blocksize表示跟踪的块大小,为正整数且是2的方幂;x,y表示跟踪块的起始位置,为整数且大于等于0。

2)选择测试策略,即设定testmethod。

3)设定测试图像选择方法,即设定imagemethod。

4)对测试策略进行判断。

if testmethod=0,则设定测试次数n;设定imagecount为n;设定imagequality;选择需要计算的性能指标,包括PSNR、压缩比、压缩时间等。

调用测试图像选择算法;循环调用相应的图像压缩方法,循环次数为n;计算选择的性能指标,并存入数据库;调用压缩结果分析算法。

else设定n=1;设定imagecount为n;设定blocksize和x,y;设定imagequality;调用测试图像选择算法;调用相应的图像压缩方法;记录每一步变换后,跟踪块的数据,并存入数据库中;调用压缩结果分析算法。

end5)算法结束。

3.3.2测试图像选择方法测试图像对全面而准确地评价压缩算法具有重要意义,因为任何一种压缩算法都不可能对所有的图像都适用,因此在测试压缩算法时,需要有针对性地选择测试图像,本文认为测试图像的选择应遵循以下几个原则:1) 测试图像要包括多种类型;2) 每幅测试图像需要有多种特性,比如说在一幅以连续色调为主的图像中有一些离散色调,或者在大多数图像像素相似的情况下,有一些跳跃的像素等等;3) 测试图像应有不同的大小。

这里的大小是指图像的高度与宽度的乘积。

为了符合这些原则,本文提出了基于图像特征的测试图像选择方法。

该方法首先对图像进行颜色空间的转换,由RGB空间转换为HSV空间,然后对HSV空间进行区域分类,并使用区域生长算法对图像进行分割和合并,将得到一系列的块,计算各个块的尺寸,色度平均值和均方差,并作为该图像的特征,最后利用特征值选择符合要求的图像。

下面先给出颜色空间转换方法和区域生长方法的描述。

3.3.2.1颜色空间转换及色度空间划分规则一般认为R,G,B颜色空间与人眼的感知差异很大,这里采用较好符合人眼感知特性的HSV颜色模型。

首先将图像中每一像素的r,g,b值转换为h,s,v值(h∈[0,2π],s∈[0,1],v∈[0,1]),然后将转换后将色彩空间划分为三部分[10]:黑色区域:所有v<20%的颜色均归入黑色,令h=0,s=0,v=0;白色区域:所有s<20%且v>70%的颜色归入白色,令h=0,s=0,v=1;彩色区域:位于黑色区域和白色区域以外的颜色,其h, s, v值保持不变。

3.3.2.2 区域生长算法区域生长算法[11]主要用于图像分割与合并,描述如下:①将图像分成等面积的单元.②从左上角的第1个单元开始与其相邻的单元进行颜色比较,若两者相似且符合归并准则,那么就将两者归并形成一个小片,并且计算该小片的平均颜色.若相邻的某单元与其颜色不相似,则将该单元标以“未完成”.③继续将小片与其相邻单元逐个进行颜色比较,凡是与小片相似者并入小片使小片逐渐生长扩大,直到没有再可归并的单元为止.然后将此生长完毕的小片标以“已完成”.④对于下一个“未完成”的单元重复上面生长小片的步骤,直到所有的单元都已被标记为“已完成”.区域生长方法的关键是要使用合适的相邻单元合并的门限,本文设定颜色(c1,c2,c3)的距离门限为0.5[12],进一步提高区域生长方法的精度需要利用区域间的特征进行单元合并等后处理工作[13],这里不作讨论。

相关主题