去噪信号和图像
这个例子讨论了从有噪声的数据中恢复信号的问题。一般的去噪过程包括三个步骤。该过程的基本版本遵循以下步骤:
分解:选择一个小波,选择一个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)标题(“软阈值”)
如上图所示,硬过程在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)
第二次去噪噪声信号,这一次使用从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)轴紧标题(“第二去噪信号”)
由于只有少量的大系数表征原始信号,两个去噪后的信号与原始信号相比都很好。您可以使用小波信号去噪器探讨其他去噪参数对噪声信号的影响。
处理非白噪声
当您怀疑是非白噪声时,必须通过对电平噪声的电平依赖估计来重新调整阈值。作为第二个例子,让我们在电信号的高度扰动部分尝试这种方法。让我们用一下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)轴紧标题(的去噪信号)
结果是相当好的,尽管在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)标题(原始图像的)
图(“颜色”,“白色”colormap(粉红色(255))image(wcodemat(x,sm)) title(“嘈杂的图像”)
图像(wcodemat (xd, sm))标题(”“去噪图像)