Вейвлеты: Работа с изображениями

Этот раздел предоставляет дополнительную информацию о работе с изображениями в программном обеспечении Wavelet Toolbox™. Это описывает типы поддерживаемых изображений и как среда MATLAB® представляет их, а также методы для анализа цветных изображений.

Понимание изображений в среде MATLAB

Структура основных данных в MATLAB является прямоугольной матрицей, упорядоченным множеством действительных или комплексных элементов. Этот объект естественно подходит для представления изображений, которые являются упорядоченными множествами с действительным знаком данных об интенсивности или цвета. (Этот тулбокс не поддерживает изображения с комплексным знаком.)

Пиксель слова выведен от элемента изображения и обычно обозначает одну точку на экране компьютера или один элемент в матрице изображений. Можно выбрать один пиксель из матрицы изображений с помощью нормального матричного индексирования. Например:

I(2,15)

возвращает значение пикселя в строке 2 и столбце 15 изображения I. По умолчанию MATLAB масштабирует изображения, чтобы заполнить оси отображения; поэтому, пиксель изображения может использовать больше, чем один пиксель на экране.

Индексируемые изображения

Типичное цветное изображение требует двух матриц: палитра и матрица изображений. Палитра является упорядоченным множеством значений, которые представляют цвета в изображении. Для каждого пикселя изображения матрица изображений содержит соответствующий индекс в палитру. (Элементы матрицы изображений являются целыми числами с плавающей точкой или кремнями, которые MATLAB хранит как значения с двойной точностью.)

Размером матрицы палитры является n-by-3 для изображения, содержащего цвета n. Каждая строка матрицы палитры 1 3 красная, зеленая, синяя (RGB) цветной вектор

color = [R G B]

это задает интенсивность красных, зеленых, и синих компонентов того цвета. R, G и B являются действительными скалярами, которые колеблются от 0,0 (черных цветов) до 1,0 (полная интенсивность). MATLAB переводит эти значения в интенсивность отображения, когда вы отображаете изображение и его палитру.

Когда MATLAB отображает индексируемое изображение, он использует значения в матрице изображений, чтобы искать требуемый цвет в палитре. Например, если матрица изображений содержит значение 18 в матричном месте (86,198), цвет для пикселя (86,198) является цветом из строки 18 палитры.

Вне MATLAB индексированные изображения с цветами n часто содержат значения от 0 до n–1. Эти значения являются индексами в палитру с 0 как ее первый индекс. Поскольку матрицы MATLAB запускаются с индекса 1, необходимо постепенно увеличить каждое значение в изображении или переключить изображение, чтобы создать изображение, которым можно управлять с функциями тулбокса.

Разложение вейвлета индексируемых изображений

Индексируемые изображения могут считаться масштабированными изображениями интенсивности с элементами матрицы, содержащими только целые числа от 1 до n, где n является количеством дискретных оттенков в изображении.

Если палитра не предоставлена, отображения приложения Wavelet Analyzer изображение и обрабатывающие результаты с помощью монотонной палитры with max(max(X))-min(min(X))+1 цвета.

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

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

Как отображены разложения

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

Чтобы отобразить эти изображения подходящим способом, приложение Wavelet Analyzer следует этим правилам:

  • Восстановленные приближения отображены с помощью палитры map.

  • Коэффициенты и восстановленные детали отображены с помощью палитры, map применился к перемасштабированной версии матриц.

RGB (истинный цвет) изображения

Изображение RGB, иногда называемое изображением истинного цвета, хранится в MATLAB как m-by-n-by-3 массив данных, который задает красные, зеленые, и синие компоненты цвета для каждого отдельного пикселя. Изображения RGB не используют палитру. Цвет каждого пикселя определяется комбинацией красной, зеленой, и синей интенсивности, сохраненной в каждой цветной плоскости в местоположении пикселя. Форматы графических файлов хранят изображения RGB как 24-битные изображения, где красные, зеленые, и синие компоненты составляют 8 битов каждый. Это приводит к потенциалу 16 миллионов цветов.

Точность, с которой реальное изображение может быть реплицировано ведомое к псевдониму “изображение истинного цвета”. RGB массив MATLAB может иметь класс double, single, uint8 или uint16. В массиве RGB класса double каждый компонент цвета является значением между 0 и 1.

Компоненты цвета 8-битного изображения RGB являются целыми числами в области значений [0, 255], а не значения с плавающей точкой в области значений [0, 1].

Разложение вейвлета изображений истинного цвета

Анализируемыми изображениями истинного цвета является m-by-n-by-3 массивы uint8. Каждый из трехцветных компонентов является матрицей, которая анализируется с помощью 2D схемы разложения вейвлета.

Другие изображения

Программное обеспечение Wavelet Toolbox позволяет вам работать с некоторыми другими типами изображений. Используя функцию imread, различные инструменты с помощью изображений пытаются загрузить индексированные изображения из файлов, которые не являются файлами MAT (например, файлами PCX).

Эти инструменты:

  • 2D дискретный анализ вейвлета

  • 2D пакетный анализ вейвлета

  • 2D стационарный анализ вейвлета

  • 2D инструмент Extension

Для получения дополнительной информации о поддерживаемых типах файлов введите help imread.

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

Отобразите преобразование

Программное обеспечение Image Processing Toolbox™ обеспечивает исчерпывающий набор функций, которые позволяют вам легко преобразовать между типами изображения. Если у вас нет программного обеспечения Image Processing Toolbox, примеры ниже демонстрируют, как это преобразование может быть выполнено с помощью основных команд MATLAB.

Пример 1: преобразование цветных индексируемых изображений

load xpmndrll 
whos 
ИмяРазмерБайтыКласс
X2192x200307200double array
map64x31536double array
image(X2)
title('Original Color Indexed Image') 
colormap(map); colorbar

Цветная полоса справа от изображения не сглаженна и монотонно не прогрессирует от темного до света. Этот тип индексируемого изображения не подходит для прямого разложения вейвлета с тулбоксом и должен быть предварительно обработан.

Во-первых, разделите цвет индексированное изображение на его компоненты RGB:

R = map(X2,1); R = reshape(R,size(X2));
G = map(X2,2); G = reshape(G,size(X2));
B = map(X2,3); B = reshape(B,size(X2));

Затем, преобразуйте матрицы RGB в полутоновое изображение интенсивности, с помощью стандартных перцепционных коэффициентов для трехцветных компонентов:

Xrgb = 0.2990*R + 0.5870*G + 0.1140*B;

Затем преобразуйте полутоновое изображение интенсивности назад в шкалу полутонов индексированное изображение с 64 отличными уровнями и создайте новую палитру с 64 уровнями серого цвета:

n = 64;            % Number of shades in new indexed image 
X = round(Xrgb*(n-1)) + 1; 
map2 = gray(n); 
figure 
image(X), title('Processed
Gray Scale Indexed Image') 
colormap(map2), colorbar

Цветная полоса преобразованного изображения теперь линейна и имеет плавный переход от темного до света. Изображение теперь подходит для разложения вейвлета.

Наконец, сохраните преобразованный образ в форме, совместимой с Wavelet Toolbox приложение Wavelet Analyzer:

baboon = X; 
map = map2; 
save baboon baboon map

Пример 2: преобразование изображения TIF RGB

Предположим файл, myImage.tif содержит изображение RGB (несжатое) размера S1xS2. Используйте следующие команды, чтобы преобразовать это изображение:

A = imread('myImage.tif');  
% A is an S1xS2x3 array of uint8.  

A = double(A);
Xrgb  = 0.2990*A(:,:,1) + 0.5870*A(:,:,2) + 0.1140*A(:,:,3); 
NbColors = 255; 
X = wcodemat(Xrgb,NbColors); 
map = pink(NbColors);

Та же программа может использоваться, чтобы преобразовать файлы JPEG или BMP.