Программное обеспечение Wavelet Toolbox™ позволяет вам анализировать сигналы, изображения и 3-D данные с помощью ортогонального и биоортогонального критически произведенного дискретного анализа вейвлета. Критически произведенный дискретный анализ вейвлета также известен как подкошенный дискретный анализ вейвлета. Подкошенный дискретный анализ вейвлета наиболее подходит для сжатия данных, шумоподавления и разреженного представления определенных классов сигналов и изображений.
В подкошенном дискретном анализе вейвлета шкалы и переводы являются двухместными.
Можно выполнить 1D, 2D, и 3-D подкошенный дискретный анализ вейвлета с помощью интерактивного инструмента путем ввода
в командной строке и нажатии Wavelet 1-D, Wavelet 2-D или Wavelet 3-D.waveletAnalyzer
В этом примере показано, как к denoise сигнал с помощью дискретного анализа вейвлета.
Создайте опорный сигнал.
len = 2^11; h = [4 -5 3 -4 5 -4.2 2.1 4.3 -3.1 5.1 -4.2]; t = [0.1 0.13 0.15 0.23 0.25 0.40 0.44 0.65 0.76 0.78 0.81]; h = abs(h); w = 0.01*[0.5 0.5 0.6 1 1 3 1 1 0.5 0.8 0.5]; tt = linspace(0,1,len); xref = zeros(1,len); for j=1:11 xref = xref+(h(j)./(1+((tt-t(j))/w(j)).^4)); end
Добавьте нулевой средний белый Гауссов шум с отклонением 0,25.
rng default x = xref + 0.5*randn(size(xref)); plot(x) axis tight
Denoise сигнал вниз к уровню 3 с помощью Добечи наименьшее количество асимметричного вейвлета с 4 исчезающими моментами. Используйте универсальное пороговое правило выбора Донохо и Джонстона с мягкой пороговой обработкой на основе коэффициентов DWT на уровне 1. Используйте дополнительный режим periodization сигнала — dwtmode('per')
. Постройте результат наряду с опорным сигналом для сравнения.
origmode = dwtmode('status','nodisplay'); dwtmode('per','nodisplay') xd = wdenoise(x,3,'Wavelet','sym4',... 'DenoisingMethod','UniversalThreshold','NoiseEstimate','LevelIndependent'); plot(xd) axis tight hold on plot(xref,'r') legend('Denoised','Reference')
Восстановите исходный дополнительный режим.
dwtmode(origmode,'nodisplay')
В этом примере показано, как получить 2D DWT входного изображения.
Загрузите и отобразите изображение. Изображение состоит из вертикальных, горизонтальных, и диагональных шаблонов.
load tartan;
imagesc(X); colormap(gray);
Получите 2D DWT на уровне 1 с помощью биоортогонального вейвлета B-сплайна и масштабируя фильтры с 2 исчезающими моментами в аналитических фильтрах и 4 исчезающих момента в фильтрах синтеза. Извлеките горизонталь, вертикальные, и диагональные коэффициенты вейвлета и коэффициенты приближения. Отобразите результаты.
[C,S] = wavedec2(X,1,'bior2.4'); [H,V,D] = detcoef2('all',C,S,1); A = appcoef2(C,S,'bior2.4'); subplot(221); imagesc(A); title('Approximation Level 1'); colormap(gray); subplot(222); imagesc(H); title('Horizontal Details'); subplot(223); imagesc(V); title('Vertical Details'); subplot(224); imagesc(D); title('Diagonal Details');
Вы видите, что детали вейвлета чувствительны к конкретным ориентациям во входном изображении. Коэффициенты приближения являются приближением lowpass к оригинальному изображению.
В этом примере показано, как получить неподкошенное (стационарное) преобразование вейвлета шумного модулируемого частотой сигнала.
Загрузите шумного Доплера, сигнализируют и получают стационарный вейвлет, преобразовывают вниз к уровню 4.
load noisdopp swc = swt(noisdopp,4,'sym8');
Постройте исходный сигнал и коэффициенты вейвлета уровня 1 и 3. Постройте приближение уровня 4.
subplot(4,1,1) plot(noisdopp) subplot(4,1,2) plot(swc(1,:)) ylabel('D1') set(gca,'ytick',[]) subplot(4,1,3) plot(swc(3,:)) ylabel('D3') set(gca,'ytick',[]) subplot(4,1,4) plot(swc(5,:)) ylabel('A4') set(gca,'ytick',[])
Вейвлет и коэффициенты приближения на каждом уровне равны в длине входному сигналу. Аддитивный шум почти полностью локализуется на уровне коэффициенты детали. Коэффициенты детали уровня 3 получают высокочастотные колебания в начале Доплеровского сигнала. Коэффициенты приближения уровня 4 являются приближением lowpass к Доплеровскому сигналу.
Получите 2D неподкошенное преобразование вейвлета изображения. Используйте Добечи наименьшее количество асимметричного вейвлета, sym4
, и получите анализ мультиразрешения вниз к уровню 3. Загрузите изображение. Используйте wcodemat
масштабировать матрицу для отображения.
load tartan
nbcol = size(map,1);
cod_X = wcodemat(X,nbcol);
Получите неподкошенный анализ мультиразрешения вниз к уровню 3.
[ca,chd,cvd,cdd] = swt2(X,3,'sym4');
Отобразите оригинальное изображение и приближение и детализируйте коэффициенты на каждом уровне.
figure subplot(2,2,1) image(cod_X) title('Original Image') colormap(map) for k = 1:3 cod_ca = wcodemat(ca(:,:,k),nbcol); cod_chd = wcodemat(chd(:,:,k),nbcol); cod_cvd = wcodemat(cvd(:,:,k),nbcol); cod_cdd = wcodemat(cdd(:,:,k),nbcol); decl = [cod_ca,cod_chd;cod_cvd,cod_cdd]; subplot(2,2,k+1) image(decl) title(['SWT: Approx. ', ... 'and Det. Coefs (Lev. ',num2str(k),')']) colormap(gray) end
wavedec
| wavedec2
| wdenoise
| wdenoise2
| swt
| swt2
| modwt
| modwtmra
| dwtfilterbank