wpdencmp

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

Описание

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

пример

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

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')

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

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

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

figure
imagesc(x)
colormap(gray)
title('Noisy 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')

В этом примере показано, как сжать 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

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

[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

Большая часть коэффициентов установлена равная 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.

L 2 энергетических восстановления, возвращенные как вещественное число. 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