В этом примере показано, как использовать вейвлеты для обличения сигналов и изображений. Поскольку вейвлеты локализуют элементы данных в различных масштабах, можно сохранить важные элементы сигнала или изображения, удаляя при этом шум. Основная идея, лежащая в основе вейвлет-денойзинга, или вейвлет-пороговой обработки, заключается в том, что вейвлет-преобразование приводит к разреженному представлению для многих реальных сигналов и изображений. Это означает, что вейвлет-преобразование концентрирует сигнал и признаки изображения в нескольких вейвлет-коэффициентах большой величины. Вейвлет-коэффициенты, которые являются малыми по значению, обычно являются шумами, и вы можете «сжать» эти коэффициенты или удалить их, не влияя на качество сигнала или изображения. После порогового значения коэффициентов выполняется восстановление данных с помощью обратного вейвлет-преобразования.
Чтобы проиллюстрировать вейвлет-денойзинг, создайте шумный «неровный» сигнал. В этом случае у вас есть и оригинальный сигнал, и шумная версия.
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];

Понизить уровень сигнала до 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;

С помощью недекимированного вейвлет-преобразования можно также закрывать сигнал. Снова понизить сигнал до уровня 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;

Вы видите, что в обоих случаях вейвлет-денузинг удалил значительную часть шума, сохраняя резкие признаки в сигнале. Это вызов для денонсинга на основе Фурье. При денузировании на основе Фурье или фильтрации для удаления шума применяется фильтр нижних частот. Однако, когда данные имеют высокочастотные признаки, такие как пики сигнала или края изображения, фильтр нижних частот сглаживает их.
Также можно использовать вейвлеты для обличения сигналов, в которых шум неоднороден. Импортируйте и исследуйте часть сигнала, показывающего потребление электроэнергии во времени.
load leleccum; indx = 2000:3450; x = leleccum(indx); plot(x) grid on;

Сигнал, по-видимому, имеет больше шума после приблизительно выборки 500. Соответственно, необходимо использовать различные пороговые значения в начальной части сигнала. Вы можете использовать cmddenoise определение оптимального количества интервалов для обессоливания и обессоливания сигнала. В этом примере используйте вейвлет «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;

Постройте график деноизированного сигнала.
plot(SIGDEN)
title('Denoised Signal')
Также можно использовать вейвлеты для обличения изображений. В изображениях края - это места, где яркость изображения быстро изменяется. Сохранение краев при отрицании изображения критически важно для качества восприятия. Хотя традиционная фильтрация нижних частот удаляет шум, она часто сглаживает края и отрицательно влияет на качество изображения. Вейвлеты способны удалять шум, сохраняя при этом важные для восприятия признаки.
Загрузите шумное изображение. Осквернение изображения с помощью wdenoise2 с настройками по умолчанию. По умолчанию wdenoise2 использует биортогональный вейвлет bior4.4. Для отображения оригинальных и денонсированных изображений не указывайте никаких выходных аргументов.
load('jump.mat')
wdenoise2(jump)
Следует отметить, что края в изображении не сглаживаются процессом обессоливания.