Этот раздел предоставляет дополнительную информацию о работе с изображениями в программном обеспечении Wavelet Toolbox™. Это описывает типы поддерживаемых изображений и как среда MATLAB® представляет их, а также методы для анализа цветных изображений.
Структура основных данных в MATLAB является прямоугольной матрицей, упорядоченным множеством действительных или комплексных элементов. Этот объект естественно подходит для представления изображений, которые являются упорядоченными множествами с действительным знаком данных об интенсивности или цвета. (Этот тулбокс не поддерживает изображения с комплексным знаком.)
Пиксель слова выведен из элемента изображения и обычно обозначает одну точку на экране компьютера или один элемент в матрице изображений. Можно выбрать один пиксель из матрицы изображений с помощью нормального матричного индексирования. Например:
I(2,15)
возвращает значение пикселя в строке 2 и столбце 15 изображения I
. По умолчанию MATLAB масштабирует изображения, чтобы заполнить оси отображения; поэтому, пиксель изображения может использовать больше, чем один пиксель на экране.
Типичное цветное изображение требует двух матриц: палитра и матрица изображений. Палитра является упорядоченным множеством значений, которые представляют цвета в изображении. Для каждого пикселя изображения матрица изображений содержит соответствующий индекс в палитру. (Элементами матрицы изображений являются целые числа с плавающей точкой или кремни, которые MATLAB хранит как значения с двойной точностью.)
Размером матрицы палитры является n
- 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 изображение и обрабатывающие результаты с помощью монотонной палитры с max(max(X))-min(min(X))+1
цвета.
Поскольку палитра изображений только используется для целей отображения, некоторые индексируемые изображения, возможно, должны быть предварительно обработаны, чтобы достигнуть правильных результатов разложения вейвлета.
В общем случае цвет индексировал изображения, не имеют линейных, монотонных палитр и должен быть преобразован в соответствующую шкалу полутонов индексированное изображение прежде, чем выполнить разложение вейвлета.
Обратите внимание на то, что коэффициенты, приближения и детали, произведенные разложением вейвлета, не индексируются матрицы изображений.
Чтобы отобразить эти изображения подходящим способом, приложение Wavelet Analyzer следует этим правилам:
Восстановленные приближения отображены с помощью палитры map
.
Коэффициенты и восстановленные детали отображены с помощью палитры map
примененный перемасштабированная версия матриц.
Изображение RGB, иногда называемое изображением истинного цвета, хранится в MATLAB как m-by-n-by-3 массив данных, который задает красные, зеленые, и синие компоненты цвета для каждого отдельного пикселя. Изображения RGB не используют палитру. Цвет каждого пикселя определяется комбинацией красной, зеленой, и синей интенсивности, сохраненной в каждой цветной плоскости в местоположении пикселя. Форматы графических файлов хранят изображения RGB как 24-битные изображения, где красные, зеленые, и синие компоненты составляют 8 битов каждый. Это дает к потенциалу 16 миллионов цветов.
Точность, с которой реальное изображение может быть реплицировано ведомое к псевдониму “изображение истинного цвета”. RGB массив MATLAB может иметь класс double
единственный
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 стационарный анализ вейвлета
Для получения дополнительной информации о поддерживаемых типах файлов введите help imread
.
Используйте imfinfo
функционируйте, чтобы найти тип изображения сохраненным в файле. Если файл не содержит индексируемое изображение, сбои операции загрузки.
Программное обеспечение Image Processing Toolbox™ обеспечивает исчерпывающий набор функций, которые позволяют вам легко преобразовать между типами изображения. Если у вас нет программного обеспечения Image Processing Toolbox, примеры ниже демонстрируют, как это преобразование может быть выполнено с помощью основных команд MATLAB.
load xpmndrll whos
Имя | Размер | Байты | Класс |
---|---|---|---|
X2 | 192x200 | 307200
| double array |
map | 64x3 | 1536
| double 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
Предположим файл 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.