Шумоподавление вейвлета

В этом примере показано, как использовать вейвлеты для сигналов denoise и изображений. Поскольку вейвлеты локализуют функции в ваших данных к различным шкалам, можно сохранить важный сигнал или отобразить функции при удалении шума. Основная идея позади шумоподавления вейвлета или пороговой обработки вейвлета, состоит в том, что вейвлет преобразовывает, приводит к разреженному представлению для многих реальных сигналов и изображений. То, что это означает, - то, что вейвлет преобразовывает сигнал концентратов и отображает функции в нескольких коэффициентах вейвлета большой величины. Коэффициенты вейвлета, которые малы в значении, обычно являются шумом, и можно "уменьшить" те коэффициенты или удалить их, не влияя на качество сигнала или качество изображения. После вас порог коэффициенты вы восстанавливаете данные с помощью обратного вейвлета, преобразовывают.

Denoise сигнал

Чтобы проиллюстрировать шумоподавление вейвлета, создайте шумный сигнал "ударов". В этом случае у вас есть и исходный сигнал и шумная версия.

rng default;
[X,XN] = wnoise('bumps',10,sqrt(6));
subplot(211)
plot(X); title('Original Signal');
AX = gca;
AX.YLim = [0 12];
subplot(212)
plot(XN); title('Noisy Signal');
AX = gca;
AX.YLim = [0 12];

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

xd = wdenoise(XN,4);
figure;
plot(X,'r')
hold on;
plot(xd)
legend('Original Signal','Denoised Signal','Location','NorthEastOutside')
axis tight;
hold off;

Вы можете также denoise, сигнал с помощью неподкошенного вейвлета преобразовывают. Denoise сигнал снова вниз к уровню 4 с помощью неподкошенного вейвлета преобразовывают. Постройте результат наряду с исходным сигналом.

xdMODWT = wden(XN,'modwtsqtwolog','s','mln',4,'sym4');
figure;
plot(X,'r')
hold on;
plot(xdMODWT)
legend('Original Signal','Denoised Signal','Location','NorthEastOutside')
axis tight;
hold off;

Вы видите, что в обоих случаях, шумоподавление вейвлета удалило значительную сумму шума при сохранении изогнутых деталей в сигнале. Это - проблема для основанного на Фурье шумоподавления. В основанном на Фурье шумоподавлении или фильтрации, вы применяете фильтр lowpass, чтобы удалить шум. Однако, когда данные имеют высокочастотные функции, такие как скачки в сигнале или ребра в изображении, фильтр lowpass сглаживает их.

Можно также использовать вейвлеты для сигналов denoise, в которых шум неоднороден. Импортируйте и исследуйте фрагмент сигнала, показывающего потребление электричества в зависимости от времени.

load leleccum; 
indx = 2000:3450;
x = leleccum(indx);
plot(x)
grid on;

Сигнал, кажется, имеет больше шума после приблизительно демонстрационные 500. Соответственно, вы хотите использовать различную пороговую обработку в начальной части сигнала. Можно использовать cmddenoise определить оптимальное количество интервалов к denoise и denoise сигнал. В этом примере используйте 'db3' вейвлет и анализируйте данные вниз к уровню 3.

[SIGDEN,~,thrParams,~,BestNbOfInt] = cmddenoise(x,'db3',3);

Отобразите количество интервалов и демонстрационных значений, которые разграничивают интервалы.

BestNbOfInt
BestNbOfInt = 2
thrParams{1}(:,1:2)
ans = 2×2

           1         412
         412        1451

Были идентифицированы два интервала. Выборка, отмечающая контур между этими двумя сегментами, 412. Если вы строите сигнал и отмечаете два сегмента сигнала, вы видите, что шум действительно кажется отличающимся до и после демонстрационных 412.

plot(x)
hold on;
plot([412 412],[100 550],'r')
hold off;

Постройте сигнал denoised.

plot(SIGDEN)
title('Denoised Signal')

Denoise изображение

Можно также использовать вейвлеты для изображений denoise. В изображениях ребра являются местами, где яркость изображения изменяется быстро. Поддержание ребер, в то время как шумоподавление изображение критически важно для перцепционного качества. В то время как традиционная фильтрация lowpass удаляет шум, она часто сглаживает ребра и оказывает негативное влияние на качество изображения. Вейвлеты могут удалить шум при сохранении перцепционно важных функций.

Загрузите шумное изображение. Denoise изображение с помощью wdenoise2 с настройками по умолчанию. По умолчанию, wdenoise2 использует биоортогональный вейвлет bior4.4. Чтобы отобразить оригинал и изображения denoised, не обеспечивайте выходные аргументы.

load(fullfile(matlabroot,'examples','wavelet', 'jump.mat'))
wdenoise2(jump)

Обратите внимание на то, что ребра в изображении не сглаживаются процессом шумоподавления.

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

|