Дискретное стационарное 2-D вейвлет
[
возвращает коэффициенты приближения A
,H,V,D
] = swt2(X
,N
,wname
)A
и коэффициенты детализации по горизонтали, вертикали и диагонали H
, V
, и D
, соответственно, стационарного 2-D вейвлет изображения X
на уровне N
использование вейвлет- wname
.
Примечание
swt2
использует периодическое расширение.
swt2
использует внутреннюю арифметику двойной точности и возвращает матрицы коэффициентов двойной точности. swt2
предупреждает, если происходит потеря точности при преобразовании в double.
возвращает коэффициенты приближения и детализации в swc
= swt2(___)swc
.
Загрузка и отображение изображения.
load woman imagesc(X) colormap(map) title('Original')
Выполните стационарное вейвлет изображения на уровне 2 с помощью db6
.
[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')
Этот пример показывает, как получить одноуровневое и многоуровневое стационарное вейвлет изображения RGB.
Загрузка и просмотр изображения RGB. Изображение является трехмерным массивом типов uint8
. Начиная с swt2
требует, чтобы и первое, и вторые измерения делились на степень 2, извлекали фрагмент изображения.
imdata = imread('ngc6543a.jpg'); x = imdata(1:512,1:512,:); image(x) title('RGB Image')
Получите стационарное вейвлет уровня 4 изображения с помощью db4
вейвлет. Верните коэффициенты приближения. Обратите внимание на размерности массива коэффициентов.
[a,~,~,~] = swt2(x,4,'db4');
size(a)
ans = 1×4
512 512 3 4
Все коэффициенты имеют тип double
. В массиве RGB типа double
каждый цветовой компонент является значением от 0 до 1. Переключите коэффициенты приближения уровня 2 на значения от 0 до 1 и просмотрите результат.
a2 = a(:,:,:,2);
a2 = (a2-min(a2(:)))/(max(a2(:))-min(a2(:)));
image(a2)
title('Level 2 Approximation')
Получите одноуровневое стационарное вейвлет изображения с помощью db4
вейвлет. Верните коэффициенты приближения. В одноуровневом разложении изображения RGB третья размерность является синглтоном.
[a,~,~,~] = swt2(x,1,'db4');
size(a)
ans = 1×4
512 512 1 3
Просмотрите коэффициенты приближения. Чтобы предотвратить ошибку при использовании image
, сжать массив коэффициентов приближения, чтобы удалить синглтонную размерность.
a2 = squeeze(a);
a2 = (a2-min(a(:)))/(max(a(:))-min(a(:)));
image(a2)
title('Approximation')
X
- Входное изображениеВходное изображение, заданное как вещественная 2-D матрица или вещественный трехмерный массив. Если X
является 3-D, X
принято в качестве изображения RGB, также называемого изображением truecolor, и третьей размерности X
должен равняться 3. Для получения дополнительной информации о изображениях truecolor, см. «Типы изображений».
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
N
- Уровень разложенияУровень разложения, заданный как положительное целое число. 2N должны разделить size(X,1)
и size(X,2)
. Использовать wmaxlev
для определения максимального уровня разложения.
wname
- Анализ вейвлетаАнализ вейвлета, заданный как вектор символов или строковый скаляр. swt2
Поддержки только Тип 1 (ортогональный) или Тип 2 (биортогональные) вейвлеты. Посмотрите wfilters
для получения списка ортогональных и биортогональных вейвлеты.
LoD,HiD
- Вейвлеты вейвлет-разложенияВейвлеты Вейвлет-разложения, заданные как пара векторов с четной длиной, действительными значениями. LoD
- lowpass разложения, и HiD
- фильтр высокочастотного разложения. Длины LoD
и HiD
должно быть равным. Посмотрите wfilters
для получения дополнительной информации.
A
- ПриближенияПриближения, возвращенные как многомерный массив. Размерности A
зависят от размерностей входа X
и уровень разложения N
.
Если X
m -by n:
Если N
больше 1, тогда A
m -by- n -by- N
. Для 1 ≤ i ≤ N
, A(:,:,i)
содержит аппроксимационные коэффициенты на уровне i.
Если N
равно 1, тогда A
m -by - n.
Если X
m -by- n -by-3:
Если N
больше 1, тогда A
m -by- n -by-3-by- N
. Для 1 ≤ i ≤ N
и j = 1, 2, 3
, A(:,:,j,i)
содержит аппроксимационные коэффициенты на уровне i.
Если N
равно 1, тогда A
m -by- n -by-1-by-3. Начиная с MATLAB® удаляет singleton last размерности по умолчанию, третье измерение является singleton.
Типы данных: double
H,V,D
- Коэффициенты детализацииКоэффициенты детализации, возвращенные как многомерные массивы равного размера. H
, V
, и D
содержат горизонтальный, вертикальный и диагональный коэффициенты детализации, соответственно. Размерности массивов зависят от размерностей входных X
и уровень разложения N
.
Если X
m -by n:
Если N
больше 1, массивы m -by- n -by- N
. Для 1 ≤ i ≤ N
, H(:,:,i)
, V(:,:,i)
, и D(:,:,i)
содержат коэффициенты детализации на уровне i.
Если N
равно 1, массивы m -by- n.
Если X
m -by- n -by-3:
Если N
больше 1, массивы m -by- n -by-3-by- N
. Для 1 ≤ i ≤ N
и j = 1, 2, 3
, H(:,:,j,i)
, V(:,:,j,i)
, и D(:,:,j,i)
содержат коэффициенты детализации на уровне i.
Если N
равно 1, массивы m -by- n -by-1-by-3. Для j = 1, 2, 3
, H(:,:,1,j)
, V(:,:,1,j)
и D(:,:,1,j)
содержать коэффициенты детализации. Поскольку MATLAB по умолчанию удаляет синглтонные последние размерности, третье измерение является синглтоном.
Типы данных: double
swc
- Стационарное вейвлет-разложениеСтационарный вейвлет разложение, возвращенное как многомерный массив. swc
является конкатенацией коэффициентов приближения A
и коэффициенты детализации H
, V
, и D
.
Для изображений возможен алгоритм стационарного вейвлет-преобразования (SWT), подобный одномерному случаю, для двумерных вейвлеты и масштабирующих функций, полученных из одномерных функций тензорным продуктом. Этот вид двумерного SWT приводит к разложению коэффициентов аппроксимации на уровне j на четыре компонента: приближение на уровне j + 1 и детали в трех ориентациях (горизонтальной, вертикальной и диагональной).
Этот график описывает основной шаг разложения для изображений.
где
- Свертка строк записи с X фильтра.
- Свертка столбцов записи с X фильтра.
Инициализация
<reservedrangesplaceholder1> 0 = s
<reservedrangesplaceholder1> 0 = LoD
<reservedrangesplaceholder1> 0 = HiD
где обозначает upsample.
Обратите внимание, что size (cAj) = size (cDj(h)) = размер (cDj(v)) = размер (cDj(d)) = s
, где s равен размеру анализируемого изображения.
Чтобы отличить одноуровневое разложение изображения truecolor от многоуровневого разложения индексированного изображения, массивы коэффициентов приближения и детализации изображений truecolor являются 4-D массивами.
Если вы выполняете многоуровневое разложение, размерности A
, H
, V
, и D
m -by- n -by-3-by- k, где k - уровень разложения.
Если вы выполняете одноуровневое разложение, размерности A
, H
, V
, и D
m -by- n -by-1-by-3. Поскольку MATLAB по умолчанию удаляет синглтонные последние размерности, третье измерение массивов является синглтоном.
Поведение изменено в R2017b
Чтобы отличить одноуровневое разложение изображения truecolor от многоуровневого разложения индексированного изображения, массивы коэффициентов приближения и детализации изображений truecolor являются 4-D массивами.
Миграция с предыдущих релизов на R2017b
В зависимости от исходного типа входных данных и уровня разложения вейвлета, вам, возможно, придется предпринять различные шаги, чтобы сделать swt2
массивы коэффициентов из предыдущих релизов, совместимые с массивами R2017b коэффициентов. Шаги зависят от того, есть ли у вас один массив коэффициентов или отдельные массивы приближений и коэффициентов детализации.
Массив одиночных коэффициентов | Несколько массивов коэффициентов |
---|---|
Вход: Изображение индекса
| Вход: Изображение индекса
|
Вход: Изображение Truecolor
| Вход: Изображение Truecolor
|
Миграция с R2017b на предыдущие релизы
В зависимости от исходного типа входных данных и уровня разложения вейвлета, вам, возможно, придется предпринять различные шаги, чтобы сделать R2017b swt2
массивы коэффициентов, совместимые с массивами коэффициентов из предыдущих релизов. Шаги зависят от того, есть ли у вас один массив коэффициентов или отдельные массивы приближений и коэффициентов детализации.
Массив одиночных коэффициентов | Несколько массивов коэффициентов |
---|---|
Вход: Изображение индекса
| Вход: Изображение индекса
|
Вход: Изображение Truecolor
| Вход: Изображение Truecolor
|
[1] Nason, G. P., and B. W. Silverman. «Стационарное преобразование вейвлет и некоторые статистические приложения». В Вейвлетах и статистике под редакцией Анестиса Антониадиса и Жоржа Oppenheim, 103: 281-99. Нью-Йорк, Нью-Йорк: Спрингер Нью-Йорк, 1995. https://doi.org/10.1007/978-1-4612-2544-7_17.
[2] Койфман, Р. Р. и Д. Л. Донохо. «Переводно-инвариантное шумоподавление». В Вейвлетах и статистике под редакцией Анестиса Антониадиса и Жоржа Oppenheim, 103: 125-50. Нью-Йорк, Нью-Йорк: Спрингер Нью-Йорк, 1995. https://doi.org/10.1007/978-1-4612-2544-7_9.
[3] Pesquet, J.-C., H. Krim, and H. Carfantan. «Инвариантные по времени ортонормальные представления вейвлет». Транзакции IEEE по обработке сигналов 44, № 8 (август 1996 года): 1964-70. https://doi.org/10.1109/78.533717.
Указания и ограничения по применению:
Входное имя вейвлета должно быть постоянным.
Входной уровень разложения должен быть задан как скаляр во время компиляции.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.