Дискретный стационарный 2D вейвлет преобразовывает
[
возвращает коэффициенты приближения A
,H,V,D
] = swt2(X
,N
,wname
)A
и горизонталь, вертикальные, и диагональные коэффициенты детали H
V
, и D
, соответственно, стационарного 2D разложения вейвлета изображения X
на уровне N
использование вейвлета wname
.
Примечание
swt2
использование периодическое расширение.
swt2
использование арифметика с двойной точностью внутренне и возвращает содействующие матрицы с двойной точностью. swt2
предупреждает, если существует потеря точности при преобразовании, чтобы удвоиться.
возвращает приближение и коэффициенты детали в 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
— Введите изображениеВведите изображение в виде 2D матричного или трехмерного массива с действительным знаком с действительным знаком. Если X
3-D, X
принят, чтобы быть изображением RGB, также называемым изображением истинного цвета и третьей размерностью X
должен равняться 3. Для получения дополнительной информации об изображениях истинного цвета смотрите Типы изображения.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
N
— Уровень разложенияУровень разложения в виде положительного целого числа. 2 Н должны разделить size(X,1)
и size(X,2)
Использование wmaxlev
определить максимальный уровень разложения.
wname
— Анализ вейвлетаАнализ вейвлета в виде вектора символов или строкового скаляра. swt2
поддержки только (ортогональный) Тип 1 или Тип 2 (биоортогональные) вейвлеты. Смотрите wfilters
для списка ортогональных и биоортогональных вейвлетов.
LoD,HiD
— Фильтры разложения вейвлетаРазложение вейвлета фильтрует в виде пары ровной длины векторы с действительным знаком. LoD
фильтр разложения lowpass и HiD
highpass фильтр разложения. Длины 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® удаляет одиночный элемент последние размерности по умолчанию, третья размерность является одиночным элементом.
Типы данных: 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)
vi
, и 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.
Инициализация
cA 0 = s
F 0 = LoD
G 0 = HiD
где обозначает, сверхдискретизировали.
Обратите внимание на то, что size(cAj) = size(cDj(h)) = size(cDj(v)) = size(cDj(d)) = s
, где s равняется размеру анализируемого изображения.
Чтобы отличить одноуровневое разложение изображения истинного цвета от многоуровневого разложения индексируемого изображения, приближение и детализировать массивы коэффициентов изображений истинного цвета является 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
Чтобы отличить одноуровневое разложение изображения истинного цвета от многоуровневого разложения индексируемого изображения, приближение и детализировать массивы коэффициентов изображений истинного цвета является 4-D массивами.
Мигрируйте от предыдущих релизов до R2017b
В зависимости от исходного типа входных данных и уровня разложения вейвлета, вам придется сделать различные шаги, чтобы сделать swt2
массивы коэффициентов от предыдущих релизов, совместимых с массивами коэффициентов R2017b. Шаги зависят от того, имеете ли вы один массив коэффициентов или отдельное приближение и детализируете массивы коэффициентов.
Один массив коэффициентов | Несколько массивов коэффициентов |
---|---|
Входной параметр: индексируйте изображение
| Входной параметр: индексируйте изображение
|
Входной параметр: изображение Истинного цвета
| Входной параметр: изображение Истинного цвета
|
Мигрируйте от R2017b до предыдущих релизов
В зависимости от исходного типа входных данных и уровня разложения вейвлета, вам придется сделать различные шаги, чтобы сделать R2017b swt2
массивы коэффициентов, совместимые с массивами коэффициентов от предыдущих релизов. Шаги зависят от того, имеете ли вы один массив коэффициентов или отдельное приближение и детализируете массивы коэффициентов.
Один массив коэффициентов | Несколько массивов коэффициентов |
---|---|
Входной параметр: индексируйте изображение
| Входной параметр: индексируйте изображение
|
Входной параметр: изображение Истинного цвета
| Входной параметр: изображение Истинного цвета
|
[1] Нэзон, G. P. и Б. В. Сильверман. “Стационарное Преобразование Вейвлета и Некоторые Статистические Приложения”. В Вейвлетах и Статистике, отредактированной Анестисом Антониэдисом и Жоржем Оппенхеймом, 103:281–99. Нью-Йорк, Нью-Йорк: Спрингер Нью-Йорк, 1995. https://doi.org/10.1007/978-1-4612-2544-7_17.
[2] Койфман, R. R. и Д. Л. Донохо. “Инвариантное переводом Шумоподавление”. В Вейвлетах и Статистике, отредактированной Анестисом Антониэдисом и Жоржем Оппенхеймом, 103:125–50. Нью-Йорк, Нью-Йорк: Спрингер Нью-Йорк, 1995. https://doi.org/10.1007/978-1-4612-2544-7_9.
[3] Pesquet, J.-C., Х. Крим и Х. Карфэнтэн. “Независимые от времени Ортонормированные Представления Вейвлета”. Транзакции IEEE на Обработке сигналов 44, № 8 (август 1996): 1964–70. https://doi.org/10.1109/78.533717.
Указания и ограничения по применению:
Входное имя вейвлета должно быть постоянным.
Уровень на входе разложения должен быть задан как скаляр во время компиляции.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.