wpdencmp

Шумоподавление или сжатие с использованием вейвлет

Описание

wpdencmp выполняет шумоподавление или сжатия сигнала или изображения с помощью вейвлет. Идеи и процедуры для шумоподавления и сжатия с использованием вейвлета или вейвлета разложений пакетов одинаковы. Посмотрите wdenoise или wdencmp для получения дополнительной информации.

пример

[xd,treed,perf0,perfl2] = wpdencmp(x,sorh,n,wname,crit,par,keepapp) возвращает деноизированную или сжатую версию xd входных данных x получают путем вейвлета порога пакетного коэффициента. wpdencmp также возвращает вейвлет древовидное разложение пакета treed от xd (см. besttree для получения дополнительной информации) и L2 восстановление и сжатие энергии счетов в процентах как perfl2 и perf0, соответственно.

[___] = wpdencmp(tree,sorh,crit,par,keepapp) использует вейвлет разложения пакетов tree данных, подлежащих деноизации или сжатию.

Примеры

свернуть все

В этом примере показано, как аннулировать использование вейвлет.

Использование wnoise чтобы сгенерировать сигнал тяжелого синуса и шумную версию.

init = 1000;
[xref,x] = wnoise(5,11,7,init);
figure
subplot(2,1,1)
plot(xref)
axis tight
title('Heavy Sine')
subplot(2,1,2)
plot(x)
axis tight
title('Noisy Heavy Sine')

Figure contains 2 axes. Axes 1 with title Heavy Sine contains an object of type line. Axes 2 with title Noisy Heavy Sine contains an object of type line.

Денуризируйте сигнал с шумом с помощью четырехуровневого вейвлета разложения пакетов. Используйте порядок 4 Daubechies наименее асимметричный вейвлет.

n = length(x);
thr = sqrt(2*log(n*log(n)/log(2)));
xwpd = wpdencmp(x,'s',4,'sym4','sure',thr,1);

Сравните с основанным на вейвлет результатом шумоподавления. Использование wdenoise с сопоставимыми входными параметрами. Постройте график различий между двумя деноизированными сигналами и исходным сигналом.

xwd = wdenoise(x,4,'Wavelet','sym4','DenoisingMethod','UniversalThreshold','ThresholdRule','Hard');
figure
subplot(2,1,1)
plot(x-xwpd)
axis tight
ylim([-12 12])
title('Difference Between Wavelet Packet Denoised and Original')
subplot(2,1,2)
plot(x-xwd)
axis tight
ylim([-12 12])
title('Difference Between Wavelet Denoised and Original')

Figure contains 2 axes. Axes 1 with title Difference Between Wavelet Packet Denoised and Original contains an object of type line. Axes 2 with title Difference Between Wavelet Denoised and Original contains an object of type line.

В этом примере показано, как обесценить изображение с помощью вейвлет.

Загрузите изображение и сгенерируйте шумный копий. для воспроизводимости установите случайный seed.

rng default
load sinsin
x = X/18 + randn(size(X));
imagesc(X)
colormap(gray)
title('Original Image')

Figure contains an axes. The axes with title Original Image contains an object of type image.

figure
imagesc(x)
colormap(gray)
title('Noisy Image')

Figure contains an axes. The axes with title Noisy Image contains an object of type image.

Обесценивайте шумное изображение, используя вейвлет разложение пакета. Использование ddencmp для определения шумоподавления. Сделать трехуровневое разложение с порядком 4 Daubechies наименее асимметричным вейвлет.

[thr,sorh,keepapp,crit] = ddencmp('den','wp',x);
xd = wpdencmp(x,sorh,3,'sym4',crit,thr,keepapp);
figure
imagesc(xd)
colormap(gray)
title('Denoised Image')

Figure contains an axes. The axes with title Denoised Image contains an object of type image.

Этот пример показывает, как сжать сигнал 1-D с помощью вейвлет.

Загрузите сигнал. Использование ddencmp для определения значений сжатия для этого сигнала.

load sumlichr
x = sumlichr;
[thr,sorh,keepapp,crit] = ddencmp('cmp','wp',x)
thr = 0.5193
sorh = 
'h'
keepapp = 1
crit = 
'threshold'

Сжатие сигнала с помощью глобального порога с помощью наилучшего базиса порогов. Используйте порядок 4 Daubechies наименее асимметричный вейвлет и выполните трехуровневое разложение вейвлет-пакета.

[xc,wpt,perf0,perfl2] = wpdencmp(x,sorh,3,'sym4',crit,thr,keepapp);

Сравните исходный сигнал со сжатой версией.

subplot(2,1,1)
plot(x)
title('Original Signal')
axis tight
subplot(2,1,2)
plot(xc)
xlabel(['L^2 rec.: ',num2str(perfl2),'%   zero cfs.: ',num2str(perf0),'%'])
title('Compressed Signal Using Wavelet Packets')
axis tight

Figure contains 2 axes. Axes 1 with title Original Signal contains an object of type line. Axes 2 with title Compressed Signal Using Wavelet Packets contains an object of type line.

Снова сжимает сигнал, но это делает трехуровневый вейвлет разложение. Оставьте все остальные параметры одинаковыми.

[thr,sorh,keepapp] = ddencmp('cmp','wv',x);
[xcwv,~,~,perf0wv,perfl2wv] = wdencmp('gbl',x,'sym4',3,thr,sorh,keepapp);
figure
subplot(2,1,1)
plot(x)
title('Original Signal')
axis tight
subplot(2,1,2)
plot(xc)
xlabel(['L^2 rec.: ',num2str(perfl2wv),'%   zero cfs.: ',num2str(perf0wv),'%'])
title('Compressed Signal Using Wavelets')
axis tight

Figure contains 2 axes. Axes 1 with title Original Signal contains an object of type line. Axes 2 with title Compressed Signal Using Wavelets contains an object of type line.

Большая часть коэффициентов устанавливается равной 0 при сжатии с использованием вейвлета разложения пакета.

Входные параметры

свернуть все

Входные данные для денуилизации или сжатия, заданные действительным вектором или матрицей.

Типы данных: double

Вейвлет вейвлет-пакета данных, подлежащих деноизации или сжатию, заданное как дерево вейвлет. Посмотрите wpdec и wpdec2 для получения дополнительной информации.

Тип порога для выполнения:

  • 's' - Мягкое пороговое значение

  • 'h' - Жесткое пороговое значение

Посмотрите wthresh для получения дополнительной информации.

Вейвлет разложения пакета, заданный как положительное целое число.

Имя вейвлета, заданное как вектор символов или строковый скаляр, для использования в шумоподавление. Посмотрите wavemngr для получения дополнительной информации.

Тип энтропии, заданный как один из следующих:

Тип энтропии (crit)

Пороговый параметр (par)

Комментарии

'shannon' 

par не используется.

'log energy' 

par не используется.

'threshold'0 ≤ par

par - порог.

'sure'0 ≤ par

par - порог.

'norm'1 ≤ par

par - степень.

'user'Вектор символов

par - вектор символов, содержащий имя файла вашей собственной энтропийной функции с одним входом x.

'FunName'Никаких ограничений на par

FunName - любой вектор символов, отличный от перечисленных предыдущих типов энтропии.

FunName содержит имя файла вашей собственной функции энтропии, с x как вход и par как дополнительный параметр к функции энтропии.

crit и пороговый параметр par вместе задайте критерий энтропии, используемый для определения наилучшего разложения. Посмотрите wentropy для получения дополнительной информации.

Если crit = 'nobest'Оптимизация не выполняется, и текущее разложение задано пороговое значение.

Пороговый параметр, заданный вещественным числом, вектором символов или строковым скаляром. par и тип энтропии crit вместе задайте критерий энтропии, используемый для определения наилучшего разложения. Посмотрите wentropy для получения дополнительной информации.

Типы данных: double

Порого приближения, заданная как 0 или 1. Если keepapp = 1, аппроксимационные коэффициенты не могут быть пороговыми. Если keepapp = 0, аппроксимационные коэффициенты могут быть пороговыми.

Типы данных: double

Выходные аргументы

свернуть все

Деноизированные или сжатые данные, возвращенные как действительный вектор или матрица. xd и x имеют одинаковые размерности.

Вейвлет, лучшее древовидное разложение xd, возвращается как вейвлет дерево пакетов.

Счет сжатия, возвращенный как действительное число. perf0 - процент коэффициентов порога, которые равны 0.

L2 восстановление энергии, возвращаемое как действительное число. perfl2 равно 100×(vector-norm of wavelet packet coefficients of xdвекторная норма  вейвлета пакетных коэффициентов  x)2. Если x является одномерным сигналом и wname ортогональный вейвлет, perfl2 упрощает 100xd2x2.

Ссылки

[1] Antoniadis, A., and G. Oppenheim, eds. Вейвлеты и статистика. Лекции по статистике. Нью-Йорк: Springer Verlag, 1995.

[2] Койфман, Р. Р. и М. В. Викерхаузер. «Алгоритмы, основанные на энтропии, для наилучшего выбора базиса». Транзакции IEEE по теории информации. Том 38, № 2, 1992, стр. 713-718.

[3] DeVore, R. A., B. Jawerth, and B. J. Lucier. «Сжатие изображений посредством Вейвлета преобразования кодирования». Транзакции IEEE по теории информации. Том 38, № 2, 1992, стр. 719-746.

[4] Donoho, D. L. «Progress in Wavelet Analysis and WVD: A Ten Minute Tour». Прогресс в области Wavelet Analysis and Applications (Y. Meyer, and S. Roques, eds.). Gif-sur-Yvette: Editions Frontiéres, 1993.

[5] Donoho, D. L., and I. M. Johnstone. Идеальная пространственная адаптация методом усадки вейвлет. Биометрика. Том 81, 1994, стр. 425-455.

[6] Donoho, D. L., I. M. Johnstone, G. Kerkyacharian, and D. Picard. «Усадка вейвлет: асимптопия?» Журнал Королевского статистического общества, серия B. Vol. 57, Number 2, 1995, pp . 301-369.

См. также

Функции

Приложения

Представлено до R2006a