主要内容

去噪信号和图像

这个例子讨论了从有噪声的数据中恢复信号的问题。一般的去噪过程包括三个步骤。该过程的基本版本遵循以下步骤:

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

  • 阈值细节系数:对于从1到N的每个级别,选择一个阈值,并对细节系数应用软阈值。

  • 重构:利用原N级近似系数和修改后的1 - N级细节系数,计算小波重构。

必须特别强调两点:

  • 如何选择阈值,

  • 以及如何执行阈值。

软阈值还是硬阈值?

阈值可以使用该函数完成wthresh返回输入信号的软阈值或硬阈值。硬阈值是最简单的方法,而软阈值具有很好的数学性质。让用力推表示阈值。

THR = 0.4;

硬阈值可以描述为将绝对值低于阈值的元素设置为零的通常过程。硬阈值信号是x如果x >用力推,如果x,则为0 用力推

Y = linspace(-1,1,100);Ythard = wthresh(y,“h”,用力推);

软阈值分割是硬阈值分割的延伸,首先将绝对值低于阈值的元素置零,然后将非零系数缩小至0。软阈值信号为符号(x)(x-用力推)如果x >用力推如果x是0 用力推

Ytsoft = wthresh(y,“年代”,用力推);副地块(1,3,1)地块(y)标题(“原始”) subplot(1,3,2) subplot(1,3,2) subplot(ythard)“硬阈值”) subplot(1,3,3) plot(ytsoft)标题(“软阈值”

图中包含3个轴对象。标题为Original的坐标轴对象1包含一个类型为line的对象。标题为Hard Thresholding的Axes对象2包含一个类型为line的对象。标题为“软阈值”的Axes对象3包含一个类型为line的对象。

如上图所示,硬过程在x =处产生不连续 ± T,而软程序没有。

阈值选择规则

回顾降噪程序的第2步,函数thselect执行阈值选择,然后对每个级别设置阈值。第二步可以使用wthcoeff,直接对原始信号的小波分解结构进行处理。函数中实现了四个阈值选择规则thselect.通常,当输入信号是高斯白噪声时,展示它们的作用是很有趣的。

rng默认的Y = randn(1,1000);

规则1:使用Stein's无偏风险估计(SURE)原则进行选择

THR = thselect(y,“rigrsure”
THR = 2.0518

规则2:固定的形式阈值等于根号(2*log(长度(y)))

THR = thselect(y,“sqtwolog”
THR = 3.7169

规则3:混合使用前两个选项进行选择

THR = thselect(y,“heursure”
THR = 3.7169

规则4:使用极大极小原则进行选择

THR = thselect(y,“minimaxi”
THR = 2.2163

Minimax和SURE阈值选择规则更保守,当信号的小细节位于噪声范围附近时更方便。另外两条规则可以更有效地去除噪声。

让我们以多诺霍和约翰斯通的“块”测试数据作为第一个例子。生成原始信号xref和加标准高斯白噪声的噪声版本x。

Sqrt_snr = 4;设置信噪比Init = 2055615866;%设定兰特种子[xref,x] = wnoise(1,11,sqrt_snr,init);

首先去噪信号使用wdenoise使用默认设置。将结果与原始信号和噪声信号进行比较。

Xd = wdenoise(x);Subplot (3,1,1) plot(xref)轴标题(原始信号的) subplot(3,1,2) plot(x)轴标题(噪声信号的)子图(3,1,3)图(xd)轴标题(去噪信号-信噪比= 4

图中包含3个轴对象。标题为Original Signal的Axes对象1包含一个类型为line的对象。标题为“噪声信号”的Axes对象2包含一个类型为line的对象。标题为降噪信号-信噪比= 4的Axes对象3包含一个类型为line的对象。

第二次去噪噪声信号,这一次使用从x分解中获得的细节系数的软启发式SURE阈值,在3级由sym8小波。与之前去噪后的信号进行比较。

Xd2 = wdenoise(x,3,“小波”“sym8”...“DenoisingMethod”“确定”...“ThresholdRule”“软”);图subplot(3,1,1) plot(xref)轴标题(原始信号的)子图(3,1,2)图(xd)轴标题(第一个去噪信号:默认设置)子图(3,1,3)图(xd2)轴标题(“第二去噪信号”

图中包含3个轴对象。标题为Original Signal的Axes对象1包含一个类型为line的对象。axis对象2,标题为First降噪信号:默认设置包含一个类型为line的对象。axis对象3的标题为Second降噪信号包含一个类型为line的对象。

由于只有少量的大系数表征原始信号,两个去噪后的信号与原始信号相比都很好。您可以使用小波信号去噪器探讨其他去噪参数对噪声信号的影响。

处理非白噪声

当您怀疑是非白噪声时,必须通过对电平噪声的电平依赖估计来重新调整阈值。作为第二个例子,让我们在电信号的高度扰动部分尝试这种方法。让我们用一下db4小波和三级分解。为了处理复合噪声的性质,让我们尝试电平相关的噪声大小估计。

负载leleccum指数= 2000:3450;X = leceleccum (indx);加载电信号并选择部分。

使用软固定形式阈值和水平相关的噪声大小估计去噪信号。

Xd = wdenoise(x,3,“小波”“db4”...“DenoisingMethod”“UniversalThreshold”...“ThresholdRule”“软”...“NoiseEstimate”“LevelDependent”);Nx =长度(x);图中subplot(2,1,1) plot(indx,x)轴标题(原始信号的) subplot(2,1,2) plot(indx,xd)轴标题(的去噪信号

图中包含2个轴对象。标题为Original Signal的Axes对象1包含一个类型为line的对象。标题为降噪信号的Axes对象2包含一个类型为line的对象。

结果是相当好的,尽管在2410左右传感器故障开始之前和之后的噪声性质的时间异质性。

图像去噪

对一维情况所描述的去噪方法也适用于图像,并很好地适用于几何图像。二维去噪过程同样有三个步骤,并且使用二维小波工具代替一维小波工具。对于阈值选择,如果使用固定的表单阈值,则使用prod(size(y))而不是length(y)。

生成一个有噪声的图像。

负载女人Init = 2055615866;rng (init);x = x + 15*randn(size(x));

在这种情况下,使用固定形式的门限估计水平噪声,阈值模式是软的,并保持近似系数。

[thr,sorh,keepapp] = ddencmp(“窝”西弗吉尼亚州的, x);用力推
THR = 107.9838

使用全局阈值选项去噪图像。

Xd = wdencmp(gbl(的, x,“sym4”2用力推sorh keepapp);图(“颜色”“白色”) colormap(粉红色(255))sm = size(地图,1);图像(wcodemat (X, sm)标题(原始图像的

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

图(“颜色”“白色”colormap(粉红色(255))image(wcodemat(x,sm)) title(“嘈杂的图像”

图中包含一个轴对象。标题为“噪声图像”的axis对象包含一个图像类型的对象。

图像(wcodemat (xd, sm))标题(”“去噪图像

图中包含一个轴对象。标题为Denoised Image的axes对象包含一个Image类型的对象。

总结

基于小波分解的去噪方法是小波最重要的应用之一。看到wdenoise而且小波信号去噪器获取更多信息。

另请参阅

|

相关的话题