wpdencmp

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

Описание

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

пример

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

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

Примеры

свернуть все

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

Используйте 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 objects. Axes object 1 with title Heavy Sine contains an object of type line. Axes object 2 with title Noisy Heavy Sine contains an object of type line.

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

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

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

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 objects. Axes object 1 with title Difference Between Wavelet Packet Denoised and Original contains an object of type line. Axes object 2 with title Difference Between Wavelet Denoised and Original contains an object of type line.

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

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

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

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

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

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

Denoise шумное изображение с помощью пакетного разложения вейвлета. Используйте 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 object. The axes object with title Denoised Image contains an object of type image.

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

Загрузите сигнал. Используйте 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 objects. Axes object 1 with title Original Signal contains an object of type line. Axes object 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 objects. Axes object 1 with title Original Signal contains an object of type line. Axes object 2 with title Compressed Signal Using Wavelets contains an object of type line.

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

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

свернуть все

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

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

Пакетное разложение вейвлета данных, чтобы быть denoised или сжатый в виде пакетного дерева вейвлета. Смотрите 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

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

свернуть все

Denoised или сжатые данные, возвращенные как вектор или матрица с действительным знаком. 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., и Г. Оппенхейм, вейвлеты редакторов и Статистика. Читайте лекции Примечаниям в Статистике. Нью-Йорк: Springer Verlag, 1995.

[2] Койфман, R. R. и М. Ф. Викераузер. “Основанные на энтропии Алгоритмы для Лучшего Базисного Выбора”. Транзакции IEEE на Теории информации. Издание 38, Номер 2, 1992, стр 713–718.

[3] DeVore, R. A. Б. Джейрт и Б. Дж. Лукир. “Сжатие изображения Посредством Кодирования Преобразования Вейвлета”. Транзакции IEEE на Теории информации. Издание 38, Номер 2, 1992, стр 719–746.

[4] Donoho, D. L. “Прогресс Анализа Вейвлета и WVD: Десятиминутный Тур”. Прогресс Анализа Вейвлета и Приложений (И. Мейер, и. Рок, редакторы). Джиф-сур-Иветт: Выпуски Frontières, 1993.

[5] Donoho, D. L. и я. М. Джонстон. “Идеальная Пространственная Адаптация Уменьшением Вейвлета”. Biometrika. Издание 81, 1994, стр 425–455.

[6] Donoho, D. L. i. М. Джонстон, Г. Керкьячариэн и Д. Пикар. “Уменьшение вейвлета: Asymptopia?” Журнал Королевского Статистического Общества, серий B. Издание 57, Номер 2, 1995, стр 301–369.

Смотрите также

Функции

Приложения

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