主要内容

二维真实压缩

从一个给定的形象,真正的压缩的目标是最小化所需的比特数来表示,而存储信息的可接受的质量。小波为有效解决这个问题。金宝搏官方网站压缩的完整链条包括迭代阶段的量化、编码、解码,除了小波处理本身。

这个例子的目的是展示如何分解,压缩、解压缩灰度或真彩图像使用各种压缩方法。为了说明这些功能,我们认为面具和真彩图像的灰度图像的辣椒。

全球的阈值和哈夫曼编码压缩

首先我们加载和显示面具灰度图像。

负载面具图像(X)轴广场colormap(粉色(255))标题(“原始图像:面具”)

图包含一个坐标轴对象。坐标轴对象与原始图像标题:面具包含一个类型的对象的形象。

衡量实现压缩的压缩比(CR)和Bit-Per-Pixel (BPP)比例。CR和BPP代表相同的信息。CR表明压缩存储使用CR %的初始存储大小而BPP的比特数是用来存储图像的一个像素。对灰度图像的初始BPP是8。真彩图像的初始BPP是24,因为8位用于编码的三个颜色(RGB颜色空间)。

压缩方法的挑战是找到最好的折中低压缩比和良好的感知结果。

我们开始用一个简单的级联全球系数阈值和哈夫曼编码方法。我们使用默认的小波bior4.4默认级别,最大可能的水平(见WMAXLEV函数)除以2。所需的BPP将0.5和压缩存储在文件命名mask.wtc

冰毒=“gbl_mmc_h”;%方法名称选择=“c”;% ' c '代表压缩[CR, BPP] = wcompress(选项,X,“mask.wtc”冰毒,BPP的,0.5)
CR = 6.7200
BPP = 0.5376

实现Bit-Per-Pixel比率实际上是约0.53(关闭所需的0.5)的一个6.7%的压缩比。

Uncompression

现在我们把图片解压文件检索mask.wtc和比较原始图像。

选择=“u”;%代表uncompression“u”Xc = wcompress(选项,“mask.wtc”);colormap(粉红色(255))

图包含一个坐标轴对象。坐标轴对象与原始图像标题:面具包含一个类型的对象的形象。

次要情节(1、2、1);图像(X);轴广场;标题(原始图像的)次要情节(1、2、2);图像(Xc);轴广场;标题(“压缩”)包含({[的压缩比:num2str (CR,“% 1.2 f % %”)),(“BPP:”num2str (BPP,' % 3.2 f ')})

图包含2轴对象。坐标轴对象1标题原始图像包含一个类型的对象的形象。坐标轴对象2标题压缩图像包含一个类型的对象的形象。

结果是令人满意的,但是一个更好的压缩比之间的妥协和视觉质量可以获得使用更复杂的真正的压缩方法,涉及更严格的阈值和量化的步骤。

压缩进步的方法

我们现在说明压缩渐进方法的使用,从EZW算法使用Haar小波。关键参数是循环的数量;增加它会导致更好的恢复,但更大的压缩比。

冰毒=“ezw”;%方法名称wname =“哈雾”;%小波的名字nbloop = 6;%的循环[CR, BPP] = wcompress (“c”,X,“mask.wtc”冰毒,“maxloop”nbloop,“wname”,“哈雾”);Xc = wcompress (“u”,“mask.wtc”);colormap(粉红色(255))次要情节(1、2、1);图像(X);轴广场;标题(原始图像的)次要情节(1、2、2);图像(Xc);轴广场;标题(“压缩- 6步骤”)包含({[的压缩比:num2str (CR,“% 1.2 f % %”)),(“BPP:”num2str (BPP,' % 3.2 f ')})

图包含2轴对象。坐标轴对象1标题原始图像包含一个类型的对象的形象。轴与标题压缩图像对象2——6步骤包含一个类型的对象的形象。

这里,仅使用6步骤产生一个非常粗糙的解压图像。现在我们检查稍微更好的结果使用9步骤使用12步骤最后一个令人满意的结果。

[CR, BPP] = wcompress (“c”,X,“mask.wtc”冰毒,“maxloop”9“wname”,“哈雾”);Xc = wcompress (“u”,“mask.wtc”);colormap(粉红色(255))次要情节(1、2、1);图像(Xc);轴广场;标题(“压缩- 9步骤”)包含({[的压缩比:num2str (CR,“% 1.2 f % %”)),(“BPP:”num2str (BPP,' % 3.2 f ')]})[CR, BPP] = wcompress (“c”,X,“mask.wtc”冰毒,“maxloop”12“wname”,“哈雾”);Xc = wcompress (“u”,“mask.wtc”);次要情节(1、2、2);图像(Xc);轴广场;标题(“压缩- 12步骤”)包含({[的压缩比:num2str (CR,“% 1.2 f % %”)),(“BPP:”num2str (BPP,' % 3.2 f ')})

图包含2轴对象。轴与标题压缩图像对象1 - 9步骤包含一个类型的对象的形象。轴与标题压缩图像对象2 - 12步骤包含一个类型的对象的形象。

最后BPP比率大约是0.92当使用12步骤。

现在我们试图通过使用小波改进结果bior4.4而不是哈雾和观察循环12和11个步骤。

[CR, BPP] = wcompress (“c”,X,“mask.wtc”,“ezw”,“maxloop”12“wname”,“bior4.4”);Xc = wcompress (“u”,“mask.wtc”);colormap(粉红色(255))次要情节(1、2、1);图像(Xc);轴广场;标题(“压缩- 12步骤”)包含({[的压缩比:num2str (CR,“% 1.2 f % %”)),(“BPP:”num2str (BPP,' % 3.2 f ')]})[CR, BPP] = wcompress (“c”,X,“mask.wtc”,“ezw”,“maxloop”11“wname”,“bior4.4”);Xc = wcompress (“u”,“mask.wtc”);次要情节(1、2、2);图像(Xc);轴广场;标题(“压缩- 11步骤”)包含({[的压缩比:num2str (CR,“% 1.2 f % %”)),(“BPP:”num2str (BPP,' % 3.2 f ')})

图包含2轴对象。轴与标题压缩图像对象1 - 12步骤包含一个类型的对象的形象。轴与标题压缩图像对象2 - 11步骤包含一个类型的对象的形象。

十一的循环,我们看到,结果可以被认为是令人满意的,和BPP比率大约是0.35。通过最近的一个方法,SPIHT(设置分区分层树),BPP可以进一步提高。

[CR, BPP] = wcompress (“c”,X,“mask.wtc”,“spiht”,“maxloop”12“wname”,“bior4.4”);Xc = wcompress (“u”,“mask.wtc”);colormap(粉红色(255))次要情节(1、2、1);图像(X);轴广场;标题(原始图像的)次要情节(1、2、2);图像(Xc);轴广场;标题(“压缩- 12步骤”)包含({[的压缩比:num2str (CR,“% 1.2 f % %”)),(“BPP:”num2str (BPP,' % 3.2 f ')})

图包含2轴对象。坐标轴对象1标题原始图像包含一个类型的对象的形象。轴与标题压缩图像对象2 - 12步骤包含一个类型的对象的形象。

最后的压缩比(2.8%)和Bit-Per-Pixel比率(0.23)非常满意。回想一下,CR意味着压缩存储只使用初始存储大小的2.8%。

真彩图像处理

最后,我们说明了如何压缩wpeppers.jpg真彩图像。真彩图像可以使用相同的方案压缩灰度图像采用相同的策略这三个颜色组件。

使用的渐进压缩方法是SPIHT(设置分区分层树)和编码循环的数量设置为12。

X = imread (“wpeppers.jpg”);[CR, BPP] = wcompress (“c”,X,“wpeppers.wtc”,“spiht”,“maxloop”12);Xc = wcompress (“u”,“wpeppers.wtc”);colormap(粉红色(255))次要情节(1、2、1);图像(X);轴广场;标题(原始图像的)次要情节(1、2、2);图像(Xc);轴广场;标题(“压缩- 12步骤”)包含({[的压缩比:num2str (CR,“% 1.2 f % %”)),(“BPP:”num2str (BPP,' % 3.2 f ')})

图包含2轴对象。坐标轴对象1标题原始图像包含一个类型的对象的形象。轴与标题压缩图像对象2 - 12步骤包含一个类型的对象的形象。

删除(“wpeppers.wtc”)

的压缩率(1.65%)和Bit-Per-Pixel比率(0.4)非常满意,同时保持良好的视觉感知。

更多关于真正的压缩图像

关于真正的压缩图像的更多信息,包括一些理论和例子,看到以下参考:

Misiti, M。,Y. Misiti, G. Oppenheim, J.-M. Poggi (2007), "Wavelets and their applications", ISTE DSP Series.