本发明涉及一种高效的图像压缩算法,具体地说,涉及一种相对低复杂度的高压缩率的图像压缩算法。
背景技术:
图像压缩算法有着广泛的社会应用价值。目前的图像压缩算法主要两类:基于离散傅里叶变化的压缩算法(如jpeg),基于离散小波变化的压缩算法(如spihtwaac,jpeg2000)。基于离散傅里叶变化的压缩算法复杂度低,压缩速率快,但压缩效率低。而基于离散小波变换的压缩算法压缩效率高,但复杂度高。
技术实现要素:
本发明的目的在于克服现有技术中存在的缺陷,提供一种高效的图像压缩算法,该算法压缩速度与spiht算法相当,但在同样的压缩比下的图像质量(psnr)比spiht高0.2到0.4db。该算法在相对低的复杂度的情况下,具有与spihtwaac算法和jpeg2000算法相当的图像压缩效率。
其具体技术方案为:
一种高效的图像压缩算法,包括以下步骤:
输入:图像;
输出:压缩比特流。
步骤一、对图像进行小波变化,生成金字塔结构的小波系数集合;
步骤二、对小波变化后的图像进行比特层级编码。
进一步,步骤二具体为:
首先声明一些定义:
lsp:重要小波系数列表;
lip:次要小波系数列表;
lis:次要集合列表;
d(i,j)集合:节点(i,j)的后裔;
l(i,j)集合:除第一代后裔以外的节点(i,j)其他后裔;
1.初始化:输出n=log2(max(i,j)|ci,j|);设置lsp为空列表,将处于金字塔最高级的节点添加到lip,将有后裔的节点的d集合放到lis中。
2.分类处理;
3.细化处理:对于每一个在lsp中的表项(除了那些在上一次的分类处理过的表项),输出他们的第n位的值。
4.n=n-1,然后返回第2步。
再进一步,步骤2具体为:
2.1for对于在lip中的每一个节点ci,j做:
if|ci,j|>=2n,将ci,j添加到lsp中,然后输出1和ci,j的符号位。
else输出0
endif
endfor
2.2for每一个在lis的集合si,j做:
ifsi,j是d集合则
ifsi,j中有重要值,
then输出1并用d类集合编码方案对其四个第一代后裔进行编码。
if没有重要的第一代后裔,则将si,j为1类型l集合,并将其添加在lis集合列表中。
elsesi,j为2类型l集合,也将其添加在lis集合列表中。
endif
else输出0
endif
ifsi,j是1类型l集合则
用一类l集合编码方案对其四个分支存在重要值的情况进行编码。并对将哪些没有重要值的分支作为新的d集合移到lis集合列表中。
对于那些有重要值的分支;
用d类集合编码方案对其进行编码,
if没有重要的第一代后裔,则该分支为1类型l集合,并将其添加在lis集合列表中。
else该分支为2类型l集合,也将其添加在lis集合列表中。
endif
ifsi,j是2类型l集合则
用2类l集合编码方案对其四个分支存在重要值的情况进行编码。
ifsi,j没有重要的值,则将该2类型l集合si,j添加到lis集合列表的最前面。
elsethen
将那些没有重要值的分支作为d集合添加到lis集合列表的最前面。
对于那些有重要值的分支,用d类集合编码方案对其进行编码。
if该分支的第一代后裔没有重要值,则将该分支以1类型l集合的身份将其添加到lis列表的最后。
else将该分支以2类型l集合的身份将其添加到lis列表的最后。
endif
endif
endif
endfor。
与现有技术相比,本发明的有益效果:
本发明的算法压缩速度与spiht算法相当,但在同样的压缩比下的图像质量(psnr)比spiht高0.2到0.4db。该算法在相对低的复杂度的情况下,具有与spihtwaac算法和jpeg2000算法相当的图像压缩效率。本发明具有相对低复杂度的高压缩率的特点,适合推广应用。
具体实施方式
下面结合具体实施方案对本发明的技术方案作进一步详细地说明。
一种高效的图像压缩算法,包括以下步骤:
输入:图像;
输出:压缩比特流。
步骤一、对图像进行小波变化,生成金字塔结构的小波系数集合;
步骤二、对小波变化后的图像进行比特层级编码。
进一步,步骤二具体为:
首先声明一些定义:
lsp:重要小波系数列表;
lip:次要小波系数列表;
lis:次要集合列表;
d(i,j)集合:节点(i,j)的后裔;
l(i,j)集合:除第一代后裔以外的节点(i,j)其他后裔;
1.初始化:输出n=log2(max(i,j)|ci,j|);设置lsp为空列表,将处于金字塔最高级的节点添加到lip,将有后裔的节点的d集合放到lis中。
2.分类处理
2.1for对于在lip中的每一个节点ci,j做:
if|ci,j|>=2n,将ci,j添加到lsp中,然后输出1和ci,j的符号位。
else输出0
endif
endfor
2.2for每一个在lis的集合si,j做:
ifsi,j是d集合则
ifsi,j中有重要值,
then输出1并用表1(d)对其四个第一代后裔进行编码
if没有重要的第一代后裔,则将si,j为1类型l集合,并将其添加在lis集合列表中。
elsesi,j为2类型l集合,也将其添加在lis集合列表中。
endif
else输出0
endif
ifsi,j是1类型l集合则
用表2的1类码字对其四个分支存在重要值的情况进行编码。并对将哪些没有重要值的分支作为新的d集合移到lis集合列表中。
对于那些有重要值的分支;
用表1的码字对其进行编码,
if没有重要的第一代后裔,则该分支为1类型l集合,并将其添加在lis集合列表中。
else该分支为2类型l集合,也将其添加在lis集合列表中。
endif
ifsi,j是2类型l集合则
用表2的2类码字对其四个分支存在重要值的情况进行编码。
ifsi,j没有重要的值,则将该2类型l集合si,j添加到lis集合列表的最前面。
elsethen
将那些没有重要值的分支作为d集合添加到lis集合列表的最前面。
对于那些有重要值的分支,用表1的码字对其进行编码。
if该分支的第一代后裔没有重要值,则将该分支以1类型l集合的身份将其添加到lis列表的最后。
else将该分支以2类型l集合的身份将其添加到lis列表的最后。
endif
endif
endif
endfor。
3.细化处理:对于每一个在lsp中的表项(除了那些在上一次的分类处理过的表项),输出他们的第n位的值。
4.n=n-1,然后返回第2步。
d集合编码方案:
用‘0’,‘1’表示是否为重要后代,如果四个后裔是0000,则编码为000;如果四个后裔是0001时,编码为001;如果四个后裔是0010时,编码为010;如果四个后裔是0100时,编码为011;如果四个后裔是1000时,编码为100;如果四个后裔是0011时,编码为1010;如果四个后裔是0110时,编码为1011;如果四个后裔是0101时,编码为1100;如果四个后裔是1001时,编码为1101;如果四个后裔是1010时,编码为11100;如果四个后裔是1100时,编码为11101,如果四个后裔是1110时,编码为111100;如果四个后裔是1101时,编码为111101;如果四个后裔是1011时,编码为111110;如果四个后裔是0111时,编码为1111110;如果四个后裔是1111时,编码为1111111。
1类l集合编码方案:
用‘0’和‘1’表示四个分支是否有重要后裔,如果四个分支是0001,编码为11;如果四个分支为0010,编码为10;如果四个分支为0100,编码为011;如果四个分支为1000,编码为010;如果四个分支为0011,编码为00111;如果四个分支为0110,编码为00110;如果四个分支为0101,编码为00100;如果四个分支为1001,编码为00100;如果四个分支为1010,编码为00010;如果四个分支为1100,编码为00011;如果四个分支为1110,编码为000011;如果四个分支为1101,编码为000010;如果四个分支为1011,编码为000001;如果四个分支为0111,编码为0000001;如果四个分支为1111,编码为0000000。
2类l集合编码方案:
用‘0’和‘1’表示四个分支是否有重要后裔,如果四个分支是0000,编码为0;如果四个分支是0001,编码为1000;如果四个分支为0010,编码为1001;如果四个分支为0100,编码为1011;如果四个分支为1000,编码为1010;如果四个分支为0011,编码为11000;如果四个分支为0110,编码为11001;如果四个分支为0101,编码为11010;如果四个分支为1001,编码为11011;如果四个分支为1010,编码为11101;如果四个分支为1100,编码为111000;如果四个分支为1110,编码为111001;如果四个分支为1101,编码为111100;如果四个分支为1011,编码为111101;如果四个分支为0111,编码为111110;如果四个分支为1111,编码为111111。
表1所提算法和spiht算法的图像压缩质量psnr的比较
表2图像lena512x512的运行时间的比较
我们对所提算法进行测试,测试所选用的图像来自学术界的经典图像数据库:南加州大学信号图像处理中心图像库(usc-sipiimagedatabase)(http://sipi.usc.edu/database/)和伦斯勒理工学院图像处理研究中心静态图像库(ciprstillimageslibrary)(http://www.cipr.rpi.edu/resource/stills/index.html)。
可以从表1中看到,所提出的图像压缩算法在不同的压缩比的情况下的压缩质量(psnr)优于spiht0.2db到0.4db.由表2,可以看到所提的图像压缩算法的速度与spiht算法的速度相当。
以上所述,仅为本发明较佳的具体实施方式,本发明的保护范围不限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换均落入本发明的保护范围内。