exponenta event banner

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.

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

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

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 × ( вектор-норма    коэффициентов вейвлет-пакета  xdvector-norm    коэффициентов вейвлет-пакета x) 2. Еслиx является одномерным сигналом и wname ортогональный вейвлет, perfl2 упрощение 100‖xd‖2‖x‖2.

Ссылки

[1] Антониадис, А. и Г. Оппенгейм, эд. Вейвлеты и статистика. Лекционные записки по статистике. Нью-Йорк: Спрингер Верлаг, 1995.

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

[3] ДеВор, Р. А., Б. Джаверт и Б. Дж. Люсье. «Сжатие изображения с помощью вейвлет-преобразования». Транзакции IEEE по теории информации. Том 38, номер 2, 1992, стр. 719-746.

[4] Донохо, Д. Л. «Прогресс в вейвлет-анализе и WVD: десятиминутный тур». Прогресс в вейвлет-анализе и приложениях (Y. Meyer, и S. Roques, eds.). Gif-sur-Yvette: Editions Frontières, 1993.

[5] Донохо, Д. Л. и И. М. Джонстоун. «Идеальная пространственная адаптация с помощью Wavelet Shrinkage». Биометрика. Том 81, 1994, стр. 425-455.

[6] Донохо, Д. Л., И. М. Джонстоун, Г. Керкячарян и Д. Пикар. «Wavelet Shrinkage: асимптопия?» Журнал Королевского статистического общества, серия B. Vol. 57, номер 2, 1995, стр. 301-369.

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