swt2

Дискретный стационарный вейвлет преобразовывает 2D

Синтаксис

SWC = swt2(X,N,'wname')
[A,H,V,D] = swt2(X,N,'wname')
SWC = swt2(X,N,Lo_D,Hi_D)
[A,H,V,D] = swt2(X,N,Lo_D,Hi_D)

Описание

swt2 выполняет многоуровневое 2D стационарное разложение вейвлета с помощью или ортогонального или биоортогонального вейвлета. Укажите, что вейвлет с помощью его имени ('wname', видят wfilters для получения дополнительной информации), или его фильтры разложения.

SWC = swt2(X,N,'wname') или [A,H,V,D] = swt2(X,N,'wname') вычислите стационарное разложение вейвлета 2D или 3-D матричного X с действительным знаком на уровне N, с помощью 'wname'.

Если X является 3-D матрицей, третья размерность X должна равняться 3.

N должен быть строго положительным целым числом (см. wmaxlev для получения дополнительной информации), и 2 Н должны разделить size(X,1) и size(X,2).

Размерность X и уровня N определяет размерности выходных параметров.

  • Если X является 2D матрицей, и N больше, чем 1, выходные параметры [A,H,V,D] являются трехмерными массивами, которые содержат коэффициенты:

    • Для 1 i N, выходная матрица A(:,:,i) содержит коэффициенты приближения уровня i.

    • Выходные матрицы H(:,:,i), V(:,:,i) и D(:,:,i) содержат коэффициенты деталей уровня i (горизонталь, вертикальная, и диагональная):

      SWC = [H(:,:,1:N) ; V(:,:,1:N) ; D(:,:,1:N) ; A(:,:,N)]
      

  • Если X является 2D матрицей, и N равен 1, выходные параметры [A,H,V,D] являются 2D массивами, где A содержит коэффициенты приближения, и H, V, и D содержит горизонталь, вертикальные, и диагональные коэффициенты детали, соответственно.

  • Если X является 3-D матрицей размерности m-by-n-by-3, и N больше, чем 1, выходные параметры [A,H,V,D] являются 4-D массивами размерности m-by-n-by-3-by-N, которые содержат коэффициенты:

    • Для 1 i N и j = 1, 2, 3, выходная матрица A(:,:,j,i) содержит коэффициенты приближения уровня i.

    • Выходные матрицы H(:,:,j,i), V(:,:,j,i) и D(:,:,j,i) содержат коэффициенты деталей уровня i (горизонталь, вертикальная, и диагональная):

      SWC = [H(:,:,1:3,1:N) ; V(:,:,1:3,1:N) ; D(:,:,1:3,1:N) ; A(:,:,1:3,N)]
      

  • Если X является 3-D матрицей размерности m-by-n-by-3, и N равен 1, выходные параметры [A,H,V,D] являются 4-D массивами размерности m-by-n-by-1-by-3, которые содержат коэффициенты:

    • Для j = 1, 2, 3 выходная матрица A(:,:,1,j) содержит коэффициенты приближения.

    • Выходные матрицы H(:,:,1,j), V(:,:,1,j) и D(:,:,1,j) содержат горизонталь, вертикальные, и диагональные коэффициенты детали, соответственно.

      SWC = [H(:,:,1,1:3) ; V(:,:,1,1:3) ; D(:,:,1,1:3) ; A(:,:,1,1:3)]
      

Примечание

SWC = swt2(X,N,Lo_D,Hi_D) или [A,H,V,D] = swt2(X,N,Lo_D,Hi_D), вычисляет стационарное разложение вейвлета как в предыдущем синтаксисе, учитывая эти фильтры, как введено:

  • Lo_D является фильтром нижних частот разложения.

  • Hi_D является фильтром высоких частот разложения.

Lo_D и Hi_D должны быть той же длиной.

Примечание

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

Примеры

свернуть все

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

load woman
imagesc(X)
colormap(map)
title('Original')

[ca,chd,cvd,cdd] = swt2(X,2,'db6');

Извлеките приближение Уровня 1 и Уровня 2 и детализируйте коэффициенты от разложения.

A1 = wcodemat(ca(:,:,1),255);
H1 = wcodemat(chd(:,:,1),255);
V1 = wcodemat(cvd(:,:,1),255);
D1 = wcodemat(cdd(:,:,1),255);

A2 = wcodemat(ca(:,:,2),255);
H2 = wcodemat(chd(:,:,2),255);
V2 = wcodemat(cvd(:,:,2),255);
D2 = wcodemat(cdd(:,:,2),255);

Отобразите приближение и детализируйте коэффициенты от этих двух уровней.

subplot(2,2,1)
imagesc(A1)
title('Approximation Coef. of Level 1')

subplot(2,2,2)
imagesc(H1)
title('Horizontal Detail Coef. of Level 1')

subplot(2,2,3)
imagesc(V1)
title('Vertical Detail Coef. of Level 1')

subplot(2,2,4)
imagesc(D1)
title('Diagonal Detail Coef. of Level 1')

subplot(2,2,1)
imagesc(A2)
title('Approximation Coef. of Level 2')

subplot(2,2,2)
imagesc(H2)
title('Horizontal Detail Coef. of Level 2')

subplot(2,2,3)
imagesc(V2)
title('Vertical Detail Coef. of Level 2')

subplot(2,2,4)
imagesc(D2)
title('Diagonal Detail Coef. of Level 2')

В этом примере вы получаете одноуровневые и многоуровневые стационарные разложения вейвлета изображения истинного цвета. Вы просматриваете результаты каждого разложения.

Загрузите в изображении истинного цвета. Изображение является трехмерным массивом типа uint8. Поскольку swt2 требует первых и вторых измерений и является делимым степенью 2, извлекает фрагмент изображения и просматривает его.

imdata = imread('ngc6543a.jpg');
x = imdata(1:512,1:512,:);
imagesc(x)

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

[a,h,v,d] = swt2(x,4,'db4');
size(a)
ans = 1×4

   512   512     3     4

size(h)
ans = 1×4

   512   512     3     4

size(v)
ans = 1×4

   512   512     3     4

size(d)
ans = 1×4

   512   512     3     4

Выходные массивы все имеют тип double. Просмотрите коэффициенты приближения уровня 2. Поскольку коэффициенты приближения имеют тип double, снимите их в качестве uint8, который является типом данных изображения.

figure
imagesc(uint8(a(:,:,:,2)))
title('Level 2 Approximation Coefficients')

Восстановите изображение путем выполнения обратного преобразования. Вычислите различие между оригинальным изображением и реконструкцией. Поскольку реконструкция имеет тип double, снимите реконструкцию в качестве типа uint8 прежде, чем вычислить различие.

rec = iswt2(a,h,v,d,'db4');
maxdiff = max(abs(uint8(rec(:))-x(:)));
disp(['maximum difference = ' num2str(maxdiff)])
maximum difference = 0

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

[a,h,v,d] = swt2(x,1,'db4');
size(a)
ans = 1×4

   512   512     1     3

size(h)
ans = 1×4

   512   512     1     3

size(v)
ans = 1×4

   512   512     1     3

size(d)
ans = 1×4

   512   512     1     3

Просмотрите коэффициенты приближения. Чтобы предотвратить ошибку при использовании imagesc, сожмите содействующий массив приближения, чтобы удалить одноэлементную размерность.

asqueeze = squeeze(a);
size(asqueeze)
ans = 1×3

   512   512     3

figure
imagesc(uint8(asqueeze))
title('Approximation Coefficients')

Восстановите изображение путем выполнения обратного преобразования. Вычислите различие между оригинальным изображением и реконструкцией. Поскольку реконструкция имеет тип double, снимите реконструкцию в качестве типа uint8 прежде, чем вычислить различие.

rec = iswt2(a,h,v,d,'db4');
maxdiff = max(abs(uint8(rec(:))-x(:)));
disp(['maximum difference = ' num2str(maxdiff)])
maximum difference = 0

Этот пример показывает, как восстановить изображение истинного цвета от одноуровневого стационарного разложения вейвлета с помощью 3-D приближения и детализировать массивы коэффициентов.

Загрузите в изображении истинного цвета. Изображение является трехмерным массивом типа uint8. Поскольку swt2 требует первых и вторых измерений и является делимым степенью 2, извлекает фрагмент изображения и просматривает его.

imdata = imread('ngc6543a.jpg');
x = imdata(1:512,1:512,:);
imagesc(x)

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

[a,h,v,d] = swt2(x,1,'db4');
size(a)
ans = 1×4

   512   512     1     3

size(h)
ans = 1×4

   512   512     1     3

size(v)
ans = 1×4

   512   512     1     3

size(d)
ans = 1×4

   512   512     1     3

Сожмите массивы коэффициентов, чтобы удалить их одноэлементные размерности. Отметьте размерности сжатых массивов.

asq = squeeze(a);
hsq = squeeze(h);
vsq = squeeze(v);
dsq = squeeze(d);
size(asq)
ans = 1×3

   512   512     3

size(hsq)
ans = 1×3

   512   512     3

size(vsq)
ans = 1×3

   512   512     3

size(dsq)
ans = 1×3

   512   512     3

Так, чтобы iswt2 мог правильно восстановить trueimage от новых массивов коэффициентов, вставьте одноэлементную размерность путем изменения размерность сжатых массивов. Восстановите изображение с измененными массивами коэффициентов.

a2 = reshape(asq,[512,512,1,3]);
h2 = reshape(hsq,[512,512,1,3]);
v2 = reshape(vsq,[512,512,1,3]);
d2 = reshape(dsq,[512,512,1,3]);
rec = iswt2(a2,h2,v2,d2,'db4');

Вычислите различие между оригинальным изображением и реконструкцией. Поскольку реконструкция имеет тип double, снимите реконструкцию в качестве типа uint8 прежде, чем вычислить различие.

maxdiff = max(abs(uint8(rec(:))-x(:)));
disp(['maximum difference = ' num2str(maxdiff)])
maximum difference = 0

Советы

Когда X представляет индексируемое изображение, X m-by-n матрица. Если уровнем разложения, N больше, чем 1, выходные массивы SWC или приблизительно, cH, условная цена и CD, является m-by-n-by-N массивы. Если уровнем разложения, N равен 1, выходные массивы SWC или приблизительно, cH, условная цена и CD, является m-by-n массивы.

Когда X представляет изображение истинного цвета, это становится m-by-n-by-3 массив. Этим массивом является m-by-n-by-3 массив, где каждый m-by-n матрица представляет красную, зеленую, или синюю цветную плоскость, конкатенированную по третьему измерению. Если уровнем разложения, N больше, чем 1, выходные массивы SWC или приблизительно, cH, условная цена и CD, является m-by-n-by-3-by-N. Если уровнем разложения, N равен 1, выходные массивы SWC или приблизительно, cH, условная цена и CD, является m-by-n-by-1-by-3.

Для получения дополнительной информации о форматах изображения смотрите страницы с описанием imfinfo и image.

Алгоритмы

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

Этот вид двумерного SWT приводит к разложению коэффициентов приближения на уровне j в четырех компонентах: приближение на уровне j +1 и детали в трех ориентациях (горизонталь, вертикальная, и диагональная).

Следующий график описывает основной шаг разложения для изображений:

Вопросы совместимости

развернуть все

Поведение изменяется в R2017b

Ссылки

Нэзон, Г.П.; Б.В. Сильверман (1995), “Стационарный вейвлет преобразовывает и некоторые статистические приложения”, Примечания Лекции в Статистике, 103, стр 281–299.

Койфман, Р.Р.; Донохо, D.L. (1995), “Шумоподавление инварианта перевода”, Примечания Лекции в Статистике, 103, стр 125–150.

Pesquet, Дж.К.; Х. Крим, Х. Карфэйтан (1996), “Независимые от времени ортонормированные представления вейвлета”, Знак Сделки IEEE. Proc., издание 44, 8, стр 1964–1970.

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

| |

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