Conceitos básicos de denoising de wavelet

1. Introdução

     Na vida real e no trabalho, o ruído está em toda parte.Em muitos campos, os dados coletados em astronomia, imagens médicas e visão computacional geralmente contêm ruído. O ruído pode advir do processo de aquisição de dados ou de efeitos ambientais. Por várias razões, sempre haverá ruído, e a presença de ruído muitas vezes obscurece as informações que o próprio sinal precisa representar. Portanto, no processamento real do sinal, muitas vezes é necessário pré-processar o sinal, e a etapa mais importante do pré-processamento é a redução de ruído.

     A análise de wavelet é uma nova ferramenta de processamento de sinal desenvolvida nos últimos anos.Este método é derivado da análise de Fourier.As wavelets (wavelets), ou seja, ondas em uma área pequena, têm valores diferentes de zero apenas em um intervalo muito limitado, e não como Ondas senoidais e cosseno não têm começo nem fim. A wavelet pode ser traduzida para frente e para trás ao longo do eixo do tempo, ou pode ser esticada e compactada proporcionalmente para obter wavelets de baixa e alta frequência. A função wavelet construída pode ser usada para filtrar ou comprimir o sinal, para que o sinal útil no sinal ruidoso possa ser extraído.

 


 

Segundo, o princípio de denoising wavelet

 

A idéia básica do denoising do limiar de wavelets proposta por Donoho é que, após o sinal ser submetido à transformação de wavelets (usando o algoritmo Mallat), os coeficientes de wavelets gerados pelo sinal contêm informações importantes do sinal.Depois que o sinal é decomposto pela wavelet, os coeficientes da wavelet são maiores e os coeficientes da wavelet são ruídos. O coeficiente de wavelet do ruído é menor e o coeficiente de wavelet do sinal.Escolhendo um limiar apropriado, o coeficiente de wavelet maior que o limite é considerado gerado pelo sinal e deve ser retido. Se for menor que o limite, é considerado gerado pelo ruído. , Defina como zero para atingir a finalidade de denoising.

     Do ponto de vista da ciência de sinais, o denoising de wavelets é um problema de filtragem de sinais. Embora o denoising de wavelet possa ser considerado como filtragem passa-baixo em grande parte, porque pode reter com sucesso as características do sinal após o denoising, ele é superior aos filtros passa-baixo tradicionais a esse respeito. Pode-se observar que o desdobramento de wavelets é na verdade uma combinação de extração de recursos e filtragem passa-baixo.O fluxograma é o seguinte:

     O que outras pessoas estão dizendo

      Um modelo barulhento pode ser expresso da seguinte maneira:

     O que outras pessoas estão dizendo

     Entre eles, f (k) é um sinal útil, s (k) é um sinal barulhento, e (k) é ruído e ε é o desvio padrão da figura do ruído.

     Suponha que e (k) seja ruído branco gaussiano. Geralmente, o sinal útil aparece como parte de baixa frequência ou algum sinal relativamente estável, e o sinal de ruído aparece como sinal de alta frequência. Realizamos decomposição de wavelets no sinal s (k). Nesse momento, a parte de ruído é geralmente incluída em HL, LH, HH, como mostrado na figura abaixo, desde que os coeficientes de wavelet correspondentes sejam processados ​​para HL, LH, HH e, em seguida, o sinal seja reconstruído para atingir o objetivo de redução de ruído.

      O que outras pessoas estão dizendo

     Podemos ver que o princípio do denoising wavelet é uma classe relativamente simples, semelhante ao nosso método comum de filtro passa-baixo, mas como o wavelet encontra a parte que retém a extração do recurso, o desempenho é superior ao método tradicional de denoising. Of.

     


 

O que outras pessoas estão dizendo

 

Terceiro, o método básico de denoising de wavelet

     De um modo geral, o processo de redução de ruído de um sinal unidimensional pode ser dividido em 3 etapas

      Wavelet decomposição do sinal. Selecione uma wavelet e determine um nível de decomposição N da wavelet e execute o cálculo da decomposição da camada N no sinal.

      Quantização limiar de coeficientes de alta frequência de decomposição de wavelets. Para cada camada de coeficientes de alta frequência (três direções) da camada 1 à camada N, um limite é selecionado para quantização do limite.

     Esta etapa é a etapa mais crítica, refletida principalmente no processo de seleção e quantização de limites.O Matlab fornece muitos métodos adaptativos na seleção de limites para cada camada.Não são introduzidos um por um. Quantização com limiar suave. A figura a seguir é a diferença entre os dois:

     O que outras pessoas estão dizendo

     A imagem da esquerda acima é uma quantização rígida de limiar e a imagem da direita é uma quantização suave de limiar. Usando dois métodos diferentes, o efeito é que o método do limite rígido pode reter bem as características locais, como as bordas do sinal.O processamento do limite suave é relativamente suave, mas causa distorções, como o desfoque da borda.   

      Wavelet reconstrução do sinal. A reconstrução do sinal por wavelets é realizada de acordo com os coeficientes de baixa frequência da camada Nth decompostos pela wavelet e os coeficientes de alta frequência das camadas 1 a N após a quantização.

Os problemas básicos do denoising do limiar da wavelet incluem três aspectos: a escolha da base da wavelet, a escolha do limiar e a escolha da função do limiar.
(1) Escolha da base da wavelet : geralmente esperamos que a wavelet selecionada atenda às seguintes condições: ortogonalidade, alto momento de fuga, suporte rígido, simetria ou antissimetria. Mas, de fato, as wavelets com as propriedades acima não podem existir, porque as wavelets são simétricas ou anti-simétricas, apenas as wavelets Haar e o alto momento de fuga e o suporte rígido são um par de contradições; portanto, na aplicação, geralmente escolhem ter suporte rígido Wavelet e selecione uma wavelet mais adequada de acordo com as características do sinal.
(2) Seleção do limiar : um fator importante que afeta diretamente o efeito denoising é a seleção do limiar.Os limiares diferentes terão efeitos denoising diferentes. Atualmente, existem principalmente limiar geral (VisuShrink), limite SureShrink, limite Minimax, limite BayesShrink, etc.
(3) Seleção da função de limite: a função de limite é uma regra para modificar os coeficientes da wavelet, e funções diferentes refletem inversamente estratégias diferentes para processar os coeficientes da wavelet. Existem duas funções de limite mais usadas: uma é uma função de limite rígido e a outra é uma função de limite flexível. Há também uma função Garrote entre funções de limite suave e difícil.
Além disso, para a avaliação do efeito denoising, a relação sinal-ruído (SNR) do sinal comumente usado e o erro quadrático médio da raiz (RMSE) do sinal estimado e do sinal original são usados ​​para julgar.

Referência:

A base do método de denoising do limiar da wavelet http://blog.sina.com.cn/s/blog_4d7c97a00101cib3.html

Use a análise wavelet no Python para redução de limite, use a função pywt.threshold

#coding=gbk
#使用小波分析进行阈值去噪声,使用pywt.threshold

import pywt
import numpy as np import pandas as pd import matplotlib.pyplot as plt import math data = np.linspace(1, 10, 10) print(data) # [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] # pywt.threshold(data, value, mode, substitute) mode 模式有4种,soft, hard, greater, less; substitute是替换值 data_soft = pywt.threshold(data=data, value=6, mode='soft', substitute=12) print(data_soft) # [12. 12. 12. 12. 12. 0. 1. 2. 3. 4.] 将小于6 的值设置为12, 大于等于6 的值全部减去6 data_hard = pywt.threshold(data=data, value=6, mode='hard', substitute=12) print(data_hard) # [12. 12. 12. 12. 12. 6. 7. 8. 9. 10.] 将小于6 的值设置为12, 其余的值不变 data_greater = pywt.threshold(data, 6, 'greater', 12) print(data_greater) # [12. 12. 12. 12. 12. 6. 7. 8. 9. 10.] 将小于6 的值设置为12,大于等于阈值的值不变化 data_less = pywt.threshold(data, 6, 'less', 12) print(data_less) # [ 1. 2. 3. 4. 5. 6. 12. 12. 12. 12.] 将大于6 的值设置为12, 小于等于阈值的值不变 

1. Compreendendo a transformação wavelet

Transformada de Fourier - transformação de transformada em wavelet de curto período.

Referências: As duas referências a seguir são muito claras e ajudam a entender a transformação wavelet.

Mas, para perspectivas matemáticas específicas, consulte outros materiais.

(1) Conheça a coluna: a imagem é fácil de entender e explicar o algoritmo I-wavelet transform

https://zhuanlan.zhihu.com/p/22450818

(2) Conheça a coluna: Análise de Fourier do tutorial sobre estrangulamento.

https://zhuanlan.zhihu.com/p/19763358

2. Decomposição de pacotes Wavelet

O pacote wavelet é proposto para superar o problema de que a decomposição da wavelet tem baixa resolução de frequência na banda de alta frequência e baixa resolução de tempo na banda de baixa frequência.

É um método de análise de sinal mais elaborado, que melhora a resolução do sinal no domínio do tempo.

A seguir, é apresentado um gráfico de comparação dos dois:

3. Espectro de energia

      O princípio de extrair recursos de energia espacial em várias escalas com base na decomposição de pacotes de wavelets é resolver a energia do sinal em diferentes escalas de decomposição e organizar esses valores de energia em vetores de características em ordem de escala para reconhecimento.

20180510 Atualização suplementar: a fórmula de cálculo específica é a seguinte: neste artigo, os coeficientes reconstruídos não são usados ​​para o cálculo do valor energético, e os coeficientes após a decomposição de pacotes de wavelets são usados ​​diretamente.

4. código do Matlab

Dadas duas partes do código, escreva duas funções. Uma é a decomposição e reconstrução de pacotes de wavelets, e a outra é a função do espectro de energia.

Endereço de download: https://download.csdn.net/download/ckzhb/10030651

Nome do código: wavelet_packetdecomposition_reconstruct

function wpt= wavelet_packetdecomposition_reconstruct( x,n,wpname )
%% 对信号进行小波包分解,得到节点的小波包系数。然后对每个节点系数进行重构。 
% Decompose x at depth n with wpname wavelet packets.using Shannon entropy.
%   
%  x-input signal,列向量。
%  n-the number of decomposition layers
%  wpname-a particular wavelet.type:string.
%
%Author hubery_zhang
%Date 20170714
 
%%
wpt=wpdec(x,n,wpname);
% Plot wavelet packet tree (binary tree)
plot(wpt)
%% wavelet packet coefficients.default:use the front 4.
cfs0=wpcoef(wpt,[n 0]);
cfs1=wpcoef(wpt,[n 1]);
cfs2=wpcoef(wpt,[n 2]);
cfs3=wpcoef(wpt,[n 3]);
figure;
subplot(5,1,1);
plot(x);
title('原始信号');
subplot(5,1,2);
plot(cfs0);
title(['结点 ',num2str(n) '  1',' 系数'])
subplot(5,1,3);
plot(cfs1);
title(['结点 ',num2str(n) '  2',' 系数'])
subplot(5,1,4);
plot(cfs2);
title(['结点 ',num2str(n) '  3',' 系数'])
subplot(5,1,5);
plot(cfs3);
title(['结点 ',num2str(n) '  4',' 系数'])
%% reconstruct wavelet packet coefficients.
rex0=wprcoef(wpt,[n 0]);
rex1=wprcoef(wpt,[n 1]);
rex2=wprcoef(wpt,[n 2]);
rex3=wprcoef(wpt,[n 3]);
figure;
subplot(5,1,1);
plot(x);
title('原始信号');
subplot(5,1,2);
plot(rex0);
title(['重构结点 ',num2str(n) '  1',' 系数'])
subplot(5,1,3);
plot(rex1);
title(['重构结点 ',num2str(n) '  2',' 系数'])
subplot(5,1,4);
plot(rex2);
title(['重构结点 ',num2str(n) '  3',' 系数'])
subplot(5,1,5);
plot(rex3);
title(['重构结点 ',num2str(n) '  4',' 系数'])
end

Nome do código: wavelet_energy_spectrum

function E = wavelet_energy_spectrum( wpt,n )
%% 计算每一层每一个节点的能量
%  wpt-wavelet packet tree
%  n-第n层能量
% 
% Author hubery_zhang
% Date  20170714
%%
% 求第n层第i个节点的系数
E(1:2^n )=0;
for i=1:2^n 
E(i) = norm(wpcoef(wpt,[n,i-1]),2)^2; %20180604更新 原代码:E(i) = norm(wpcoef(wpt,[n,i-1]),2)
end
%求每个节点的概率
E_total=sum(E); 
for i=1:2^n
p_node(i)= 100*E(i)/E_total;
end
% E = wenergy(wpt); only get the last layer
figure;
x=1:2^n;
bar(x,p_node);
title(['第',num2str(n),'层']);
axis([0 2^n 0 100]);
xlabel('结点');
ylabel('能量百分比/%');
for j=1:2^n
text(x(j),p_node(i),num2str(p_node(j),'%0.2f'),...
    'HorizontalAlignment','center',...
    'VerticalAlignment','bottom')
end
 
end

Método de cálculo da convolução discreta unidimensional e bidimensional:

1.   Definição

Os sinais discretos f (n), g (n) são definidos da seguinte forma:

 

O que outras pessoas estão dizendo

N ----- é o comprimento do sinal f (n)

s (n) ---- é a sequência de resultados da convolução, o comprimento é len (f (n)) + len (g (n)) - 1

Tome o sinal de 3 elementos como exemplo:

f (n) = [1 2 3]; g (n) = [2 3 1];

s (0) = f (0) g (0-0) + f (1) g (0-1) + f (2) g (0-2) = 1 * 2 + 2 * 0 + 3 * 0 = 2

s (1) = f (0) g (1-0) + f (1) g (1-1) + f (2) g (1-2) = 1 * 3 + 2 * 2 + 3 * 0 = 7

s (2) = f (0) g (2-0) + f (1) g (2-1) + f (2) g (2-2) = 1 * 1 + 2 * 3 + 3 * 2 = 13

s (3) = f (0) g (3-0) + f (1) g (3-1) + f (2) g (3-2) = 1 * 0 + 2 * 1 + 3 * 3 = 11

s (4) = f (0) g (4-0) + f (1) g (4-1) + f (2) g (4-2) = 1 * 0 + 2 * 0 + 3 * 1 = 3

O resultado final é:

     s (n) = [2 7 13 11 3]

O diagrama de cálculo acima é o seguinte:

Em matemática, sabemos que a imagem de f (-x) é inversa de f (x) ao eixo y

     g (-m) é inverter a sequência de g (m) .O significado de g (nm) é deslocar n pontos de g (-m):

Basculante falhou a re-upload cancelada

Como mostrado na figura acima, g (m) é geralmente chamado de filtro ou máscara no processamento do sinal.A convolução é equivalente ao somatório do sinal f (n) após a máscara g (m) ser invertida. O Matlab calcula a função de convolução como conv,

>> A = [1 2 3];

B = [2,3,1];

convD = conv (A, B)

convD =

     2 7 13 11 3

A convolução bidimensional correspondente é definida da seguinte forma:

Basculante falhou a re-upload cancelada

O que outras pessoas estão dizendo

Acho que você gosta

Origin www.cnblogs.com/junge-mike/p/12761489.html
Recomendado
Clasificación