主要内容

信号和图像去噪

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

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

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

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

特别要注意两点:

  • 如何选择门槛,

  • 以及如何执行阈值。

软阈值还是硬阈值?

使用该函数可以实现阈值设置wthresh它返回输入信号的软阈值或硬阈值。硬阈值法是最简单的方法,而软阈值法具有良好的数学特性。让用力推表示阈值。

用力推= 0.4;

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

y = linspace (1100);ythard = wthresh (y,“h”,用力推);

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

ytsoft = wthresh (y,“年代”,用力推);次要情节(1、3、1)情节(y)标题(“原始”)子地块(1,3,2)地块(ythard)标题(“硬阈值”) subplot(1,3,3) plot(ytsoft) title(“软阈值”

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

从上图可以看出,硬程序在x =处造成了不连续 ± 而软程序则不会。

阈值选择规则

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

rng默认的y = randn (1000);

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

用力推= thselect (y,“rigrsure”
用力推= 2.0518

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

用力推= thselect (y,“sqtwolog”
用力推= 3.7169

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

用力推= thselect (y,“heursure”
用力推= 3.7169

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

用力推= thselect (y,“minimaxi”
用力推= 2.2163

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

让我们使用Donoho和Johnstone的“blocks”测试数据作为第一个例子。生成原始信号xref和添加标准高斯白噪声的噪声版本x。

sqrt_snr = 4;%设置信噪比init = 2055615866;%结籽[xref x] = wnoise (sqrt_snr 1, 11日,init);

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

xd = wdenoise (x);次要情节(1,1)情节(xref)轴标题(原始信号的)子图(3,1,2)图(x)轴标题(噪声信号的)子图(3,1,3)图(xd)轴标题('去噪信号-信噪比= 4'

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

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

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

图中包含3个轴对象。标题为“原始信号”的轴对象1包含一个类型为line的对象。标题为First Denoised Signal: Default Settings的坐标轴对象2包含一个类型为line的对象。标题为Second Denoised Signal的轴对象3包含一个类型为line的对象。

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

处理非白噪声

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

负载leleccumindx = 2000:3450;x = leleccum (indx);加载电信号并选择其中的一部分。

使用软固定形式阈值和电平依赖噪声大小估计对信号进行降噪。

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

图中包含2个轴对象。标题为“原始信号”的轴对象1包含一个类型为line的对象。标题为“去噪信号”的轴对象2包含一个类型为line的对象。

尽管在2410左右传感器故障开始前后的噪声性质存在时间不均一性,但结果相当好。

图像去噪

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

生成有噪声的图像。

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

在这种情况下,采用固定形式的阈值对电平噪声进行估计,阈值模式较软,逼近系数保持不变。

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

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

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

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

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

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

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

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

总结

基于小波分解的去噪方法是小波的重要应用之一。看到wdenoise小波信号降噪为更多的信息。

另请参阅

|

相关的话题