主要内容

二维真实压缩

从给定的图像开始,真正的压缩的目标是最小化表示图像所需的比特数,同时存储可接受质量的信息。小波有助于这个问题的有效解决。金宝搏官方网站除了小波处理本身之外,整个压缩链还包括量化、编码和解码的迭代阶段。

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

通过全局阈值和霍夫曼编码压缩

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

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

Figure包含一个轴对象。带有标题的轴对象原始图像:掩码包含一个类型为Image的对象。

压缩比(CR)和每像素位(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

在6.7%的压缩比下,实现的比特像素比实际上约为0.53(接近预期的0.5)。

Uncompression

现在,我们将从文件中获取的图像解压缩mask.wtc并将其与原始图像进行比较。

选择=“u”% 'u'表示解压Xc = wcompress(选项,“mask.wtc”);colormap(粉红色(255))

Figure包含一个轴对象。带有标题的轴对象原始图像:掩码包含一个类型为Image的对象。

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

图中包含2个轴对象。带有标题的轴对象1原始图像包含一个类型为Image的对象。轴对象2压缩图像包含一个类型为Image的对象。

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

递进压缩法

现在我们来演示渐进式压缩方法的使用,从使用Haar小波的EZW算法开始。关键参数是循环的数量;增加压缩比可以提高采收率,但压缩比会变差。

冰毒=“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原始图像包含一个类型为Image的对象。轴对象2与标题压缩图像- 6步包含一个类型为Image的对象。

在这里,只使用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步包含一个类型为Image的对象。压缩图像- 12步包含一个类型为Image的对象。

当使用12步时,最终的BPP比率约为0.92。

现在我们尝试用小波来改进结果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个轴对象。压缩图像- 12步包含一个类型为Image的对象。轴对象2与标题压缩图像- 11步包含一个类型为Image的对象。

对于第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原始图像包含一个类型为Image的对象。压缩图像- 12步包含一个类型为Image的对象。

最终的压缩比(2.8%)和位像素比(0.23)非常令人满意。回想一下,CR意味着只使用初始存储大小的2.8%来存储压缩后的图像。

真彩图像处理

最后,我们演示了如何压缩wpeppers.jpg真彩图像。真彩色图像可以使用与灰度图像相同的方案压缩,方法是对三种颜色的每一个成分应用相同的策略。

使用的渐进式压缩方法是SPIHT (Set Partitioning in Hierarchical Trees),编码循环的数量设置为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原始图像包含一个类型为Image的对象。压缩图像- 12步包含一个类型为Image的对象。

删除(“wpeppers.wtc”

在保持良好视觉感知的同时,压缩比(1.65%)和位元比(0.4)非常令人满意。

更多关于图像的真正压缩

有关图像的真实压缩的更多信息,包括一些理论和例子,请参阅以下参考:

米西提,M., Y.米西提,G. Oppenheim, j . M.。波吉(2007),“小波及其应用”,ISTE DSP系列。