Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Нейронные сети. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
Для лучшего понимания результата сглаживания сигнала
приведем в одном графическом окне исходный сигнал и результаты
аппроксимации 1-го уровня (полученный ранее) и аппроксимации 3-го
уровня (рис. 30).
Рисунок 30. Исходный сигнал и результаты вейвлет-преобразований
первого и третьего уровней
Восстановление исходного сигнала по полученным ранее
коэффициентам аппроксимации и шумов можно провести командой
A0 = waverec(C, L, 'db4');
Обработка изображений с помощью вейвлетов в пакете Matlab
Обработка изображений с помощью вейвлет-преобразования
проводится подобно обработке сигналов.
81
Рассмотрим сначала одноуровневое преобразование
изображений.
Проведем двумерное дискретное вейвлет-преобразование
стандартного тестового изображения coloredChips.png (рис. 31) с
помощью вейвлета Хаара — 'haar'.
Рисунок 31. Исходное изображение
Рассматриваемое нами изображение является RGB-
изображением или RGB-объектом, описываемым в формате truecolor.
Такие изображения перед обработкой необходимо преобразовать в
полутоновое монохромное изображение (grayscale). Одним из
способов выполнения такого преобразования в Matlab является
применение к матрице изображения функции rgb2gray.
Для дискретного одноуровневого преобразования изображений
в Matlab предназначена функция dwt2, имеющая в простейшем случае
два аргумента — матрицу изображения и вейвлет, и возвращающая в
82
качестве результата четыре матрицы — матрицу коэффициентов
аппроксимации (approximation) и три матрицы коэффициентов
помех (details), помехи различаются «направлением» и делятся на
горизонтальные (horizontal), вертикальные (vertical) и
диагональные (diagonal).
Восстановить исходное изображение по матрицам
коэффициентов аппроксимации и помех позволяет функция idwt2,
аргументами которой служат соответствующие матрицы
коэффициентов разложения и вейвлет.
Описанные действия выполняет нижеследующий скрипт. На
каждом шаге преобразования выполняется вывод текущего
изображения в соответствующее графическое окно (рис. 31 34).
% Чтение изображения из графического файла
I = imread('coloredChips.png');
% Построение исходного изображения
figure
imshow(I), title('Исходное изображение (RGB)'),
cmap = colormap; colorbar
% Преобразование RGB-изображение в полутоновое в серой шкале
X = rgb2gray(I);
% Построение полутонового изображения
figure
imshow(X); title('Полутоновое изображение (grayscale)');
map = colormap; colorbar
83
% Одноуровневое разложение изображения с использованием
% вейвлета 'haar'
[cA1, cH1, cV1, cD1] = dwt2(X, 'haar');
% Выделим матрицу коэффициентов аппроксимации 1-го уровня
A1 = upcoef2('a', cA1, 'haar', 1);
% Выделим матрицу коэффициентов горизонтальных помех
H1 = upcoef2('h', cH1, 'haar', 1);
% Выделим матрицу коэффициентов вертикальных помех
V1 = upcoef2('v', cV1, 'haar', 1);
% Выделим матрицу коэффициентов диагональных помех
D1 = upcoef2('d', cD1, 'haar', 1);
% Отображение результатов разложения 1-го уровня
figure
colormap(map);
subplot(2, 2, 1);
imagesc(A1);
title('Аппроксимация A1'); axis image;
subplot(2, 2, 2);
imagesc(H1);
title('Горизонтальные помехи H1'); axis image;
subplot(2, 2, 3);
imagesc(V1);
title('Вертикальные помехи V1'); axis image;
subplot(2, 2, 4);
imagesc(D1);
title('Диагональные помехи D1'); axis image;
84
% Восстановление исходного изображения
% из коэффициентов аппроксимации и помех разложения 1-го уровня
X_recon = idwt2(cA1, cH1, cV1, cD1, 'haar');
figure,
colormap(map);
image(X_recon);
title('Восстановленное изображение'); axis image;
Рисунок 32. Изображение, преобразованное в полутоновое
85
Рисунок 33. Результаты вейвлет-преобразований первого уровня
86
Рисунок 34. Восстановленное изображение
Теперь выполним многоуровневое преобразование
изображения coloredChips.png с помощью того же вейвлета 'haar'.
Для выполнения многоуровневого вейвлет-преобразования
изображений в Matlab предназначена функция wavedec2, в качестве
аргументов которой необходимо указать исследуемое изображение,
уровень разложения и используемый для преобразования вейвлет.
Возвращаемыми значениями являются вектор C коэффициентов всех
компонент разложения (то есть «склеенные» в одно целое вектор
коэффициентов аппроксимации уровня N и N векторов коэффициентов
помех) и вектор L длин каждой из компонент.
Выделение коэффициентов аппроксимации уровня N и
коэффициентов помех соответствующих уровней осуществляется
функцией wrcoef2. Аргументами этой функции являются
87
тип выделяемых коэффициентов (a коэффициенты
аппроксимации, ‘h’ – коэффициенты горизонтальных помех,
v’ – коэффициенты вертикальных помех, ‘d’ – коэффициенты
диагональных помех);
вектор коэффициентов всех компонент разложения,
полученный после применения функции wavedec2;
вектор длин каждой из компонент разложения, полученный
после применения функции wavedec2;
название вейвлета;
уровень разложения.
Восстановление изображения по вектору коэффициентов всех
компонент разложения, вектору длин каждой из компонент
разложения и соответствующему вейвлету выполняет функция
waverec2.
Ниже представлен скрипт многоуровневого вейвлет-
преобразования изображения coloredChips.png с помощью вейвлета
Хаара ('haar). Каждый шаг преобразования также как и в предыдущем
случае сопровождается подробными комментариями и графическими
построениями (рис. 35 40.)
% Чтение изображения из графического файла
I = imread('coloredChips.png');
% Построение исходного изображения
figure
imshow(I), title('Исходное изображение (RGB)'),
cmap = colormap; colorbar
88
% Преобразование RGB-изображение в полутоновое в серой шкале
X = rgb2gray(I);
% Построение полутонового изображения
figure
imshow(X); title('Полутоновое изображение (grayscale)');
map = colormap; colorbar
% Двухуровневое разложение изображения с использованием
% вейвлета 'haar'
[C, S] = wavedec2(X, 2,'haar');
% Выделим матрицу коэффициентов аппроксимации 2-го уровня
A2 = wrcoef2('a', C ,S ,'haar' ,2);
% Выделим матрицу коэфф-ов горизонтальных помех 1-го уровня
H1 = wrcoef2('h', C, S,'haar', 1);
% Выделим матрицу коэфф-ов вертикальных помех 1-го уровня
V1 = wrcoef2('v', C, S, 'haar', 1);
% Выделим матрицу коэфф-ов диагональных помех 1-го уровня
D1 = wrcoef2('d', C, S, 'haar', 1);
% Выделим матрицу коэфф-ов горизонтальных помех 2-го уровня
H2 = wrcoef2('h', C, S, 'haar', 2);
% Выделим матрицу коэфф-ов вертикальных помех 2-го уровня
V2 = wrcoef2('v', C, S, 'haar', 2);
% Выделим матрицу коэфф-ов диагональных помех 2-го уровня
D2 = wrcoef2('d', C, S, 'haar', 2);
% Отображение результатов разложения 2-го уровня
figure
colormap(map);
imagesc(A2); title('Аппроксимация A2'); axis image;
89
figure
colormap(map);
subplot(3, 1, 1);
imagesc(H1); title('Горизонтальные помехи H1'); axis image;
subplot(3, 1, 2);
imagesc(V1); title('Вертикальные помехи V1'); axis image;
subplot(3, 1, 3);
imagesc(D1); title('Диагональные помехи D1'); axis image;
figure
colormap(map);
subplot(3, 1, 1);
imagesc(H2); title('Горизонтальные помехи H2'); axis image;
subplot(3, 1, 2);
imagesc(V2); title('Вертикальные помехи V2'); axis image;
subplot(3, 1, 3);
imagesc(D2); title('Диагональные помехи D2'); axis image;
% Восстановление исходного изображения
% из коэффициентов аппроксимации и помех разложения 2-го уровня
X_0 = waverec2(C, S, 'haar');
figure, colormap(map);
imagesc(X_0);
title('Восстановленное изображение');
axis image;
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]