主要内容

基于二维小波分析的数据压缩

这个例子的目的是展示如何使用二维小波分析压缩图像。压缩是小波最重要的应用之一。与去噪一样,压缩过程包含三个步骤:

  • 分解:选择一个小波,选择一个电平N,计算N级信号的小波分解。

  • 阈值细节系数:对于从1到N的每一级,都选择一个阈值,并对细节系数进行硬阈值处理。

  • 重构:利用第N层的原始逼近系数和1到N层的修正细节系数计算小波重构。

与去噪过程的区别在步骤2中被发现。有两种可用的压缩方法:

  • 第一种方法是对信号进行小波展开,并保留最大的绝对值系数。在这种情况下,可以设置全局阈值、压缩性能或相对平方范数恢复性能。因此,只需要选择一个参数。

  • 第二种方法是应用可视确定的水平相关阈值。

加载一个图像

让我们检查一个真实的例子,压缩给定的和未优化的小波选择,产生一个几乎完全的平方范数恢复的图像。

负载女人加载原始图像图像(X)标题(原始图像的) colormap(地图)

图中包含一个轴对象。标题为“Original Image”的axis对象包含一个类型为Image的对象。

x = x (100:200,100:200);%选择ROI

方法1:全局阈值设置

给定小波基的压缩特征主要与信号小波域表示的相对稀缺性有关。压缩背后的概念是基于这样一个概念,即规则信号分量可以使用以下元素精确地近似:少量的近似系数(在适当选择的水平)和一些细节系数。

n = 5;%分解水平w =“sym8”近对称子波[c、l] = wavedec2 (x, n, w);多电平二维小波分解

在第一种方法中,WDENCMP函数对小波分解结构进行压缩处理[c、l]的形象。

选择=gbl(的%全局阈值用力推= 20;%的阈值sorh =“h”%硬阈值keepapp = 1;不能设定近似系数的阈值[xd, cxd lxd、perf0 perfl2] = wdencmp(选择c l, w, n,用力推,sorh, keepapp);图像(x)标题(原始图像的) colormap(地图)

图中包含一个轴对象。标题为“Original Image”的axis对象包含一个类型为Image的对象。

图图像(xd)标题('压缩图像-全局阈值= 20') colormap(地图)

图中包含一个轴对象。标题为Compressed Image - Global Threshold = 20的axis对象包含一个Image类型的对象。

压缩的分数(%)

perf0
perf0 = 74.3067

L2-norm复苏(%)

perfl2
perfl2 = 99.9772

当前分解稀疏矩阵的密度为:

cxd =稀疏(cxd);cxd_density = nnz (cxd) /元素个数(cxd)
cxd_density = 0.2569

方法2:分级依赖阈值

WDENCMP功能还允许水平和方向相关的阈值。在这种情况下,近似不变。水平、对角线和垂直三个方向的水平相关阈值如下:

选择=“lvd”%等级相关阈值Thr_h = [17 18];%的水平阈值Thr_d = [19 20];%对角阈值Thr_v = [21 22];%垂直阈值THR = [thr_h;thr_d;thr_v];

在第二个示例中,请注意WDENCMP函数对图像执行压缩处理x

[xd2, cxd2 lxd2、perf02 perfl22] = wdencmp(选择,x, w, 2,用力推,sorh);图像(x)标题(原始图像的) colormap(地图)

图中包含一个轴对象。标题为“Original Image”的axis对象包含一个类型为Image的对象。

图图像(xd2)标题(“压缩图像-等级相关阈值”) colormap(地图)

图中包含一个轴对象。标题为Compressed Image - Level-Dependent threshold的axes对象包含一个Image类型的对象。

压缩的分数(%)

perf02
perf02 = 77.3435

L2-norm复苏(%)

perfl22
perfl22 = 99.6132

当前分解稀疏矩阵的密度为:

cxd2 =稀疏(cxd2);cxd2_density = nnz (cxd2) /元素个数(cxd2)
cxd2_density = 0.2266

总结

采用水平相关阈值方法,小波分解密度降低3%,l2范数恢复率提高3%。如果小波表示过于密集,可以在小波包框架中使用类似的策略来获得更稀疏的表示。然后,您可以根据适当选择的类熵标准确定最佳分解,该标准对应于所选的目的(去噪或压缩)。