Индексированное изображение состоит из матрицы данных, X
, и матрица палитры, map
. map
является массивом m-на-3 классов double
содержащие значения с плавающей точкой в области значений [0, 1]. Каждая строка map
задает красный, зеленый и синий компоненты одного цвета. Индексированное изображение использует «прямое отображение» значений пикселей к значениям палитры. Цвет каждого пикселя изображения определяется использованием соответствующего значения X
как индекс в map
. Значения X
поэтому должно быть целыми числами. Значение 1 указывает на первую строку в map
, значение 2 указывает на вторую строку и так далее. Отображение индексированного изображения с операторами
image(X); colormap(map)
Палитра часто хранится с индексированным изображением и автоматически загружается с изображением, когда вы используете imread
функция. Однако вы не ограничиваетесь использованием палитры по умолчанию - используйте любую палитру, которую вы выбираете. Описание свойства CDataMapping
описывает, как изменить тип используемого отображения.
Следующий рисунок иллюстрирует структуру индексированного изображения. Пиксели в изображении представлены целыми числами, которые являются указателями (индексами) на значения цветов, сохраненные в палитре.
Отношение между значениями в матрице изображений и палитре зависит от класса матрицы изображений. Если матрица изображений имеет класс double
, значение 1 указывает на первую строку в палитре, значение 2 указывает на вторую строку и так далее. Если матрица изображений имеет класс uint8
или uint16
, существует смещение - значение 0 указывает на первую строку в палитре, значение 1 указывает на вторую строку и так далее. Смещение также используется в форматах графических файлов, чтобы максимизировать количество цветов, которые могут поддерживаться. На предыдущем изображении матрица изображений имеет класс double
. Поскольку смещения нет, значение 5 указывает на пятую строку палитры.
Полутоновое изображение, иногда называемое intensity изображением, является матрицей данных I
значения которого представляют интенсивность в некоторой области значений. Полутоновое изображение представлено в виде одной матрицы, причем каждый элемент матрицы соответствует одному пикселю изображения. Матрица может быть класса double
, uint8
, или uint16
. В то время как полутоновые изображения редко сохраняются с помощью палитры, для их отображения все еще используется палитра. По сути, полутоновые изображения обрабатываются как индексированные изображения.
Этот рисунок изображает полутоновое изображение класса double
.
Чтобы отобразить полутоновое изображение, используйте imagesc
(«изображение») функция, которая позволяет вам задать область значений значений интенсивности. imagesc
масштабирует данные изображения, чтобы использовать полную палитру. Используйте форму imagesc с двумя входами
для отображения полутонового изображения, например:
imagesc(I,[0 1]); colormap(gray);
Второй входной параметр для imagesc
задает требуемую область значений интенсивности. imagesc
функция отображает I
путем сопоставления первого значения в области значений (обычно 0) с первой записью палитры, и второго значения (обычно 1) с последней записью палитры. Промежуточные значения линейно распределены по остальным цветам палитры.
Хотя обычно отображать полутоновые изображения можно с помощью палитры полутонового цвета, можно использовать и другие палитры. Для примера следующие операторы отображают изображение в полутоновом цвете I
в оттенках синего и зеленого:
imagesc(I,[0 1]); colormap(winter);
Отображение матричного A
с произвольной областью значений значений в качестве полутонового изображения используйте форму с одним аргументом imagesc
. С одним входным параметром, imagesc
отображает минимальное значение матрицы данных в первую запись палитры и отображает максимальное значение в последнюю запись палитры. Для примера эти две линии эквивалентны:
imagesc(A); colormap(gray) imagesc(A,[min(A(:)) max(A(:))]); colormap(gray)
Изображение RGB, иногда называемое truecolor изображением, сохранено как массив данных m на n на 3, который задает красные, зеленые и синие компоненты цвета для каждого отдельного пикселя. Изображения RGB не используют палитру. Цвет каждого пикселя определяется комбинацией интенсивности красного, зеленого и синего цветов, сохраненной в каждой цветовой плоскости в местоположении пикселя. Форматы графических файлов хранят изображения RGB как 24-битные изображения, где красные, зеленые и синие компоненты составляют 8 биты каждый. Это дает потенциал 16 миллионов цветов. Точность, с которой можно тиражировать реальное изображение, привела к прозвищу «изображение труколора».
RGB MATLAB® массив может быть классом double
, uint8
, или uint16
. В массиве RGB с double
классовкаждый цветовой компонент является значением от 0 до 1. Пиксель, цветовые компоненты которого (0,0,0), отображается черным цветом, и пиксель, цветовые компоненты которого (1,1,1), отображается белым цветом. Три цветовых компонента для каждого пикселя хранятся вдоль третьей размерности массива данных. Например, красные, зеленые и синие компоненты цвета пикселя (10,5) хранятся в
RGB(10,5,1)
, RGB(10,5,2)
, и RGB(10,5,3)
, соответственно.
Отображение изображения труколора RGB
, использовать image
функция:
image(RGB)
Следующий рисунок показывает изображение RGB double
классов.
Чтобы определить цвет пикселя в (2,3), посмотрите на триплет RGB, хранящийся в (2,3,1: 3). Предположим (2,3,1) содержит значение 0.5176
, (2,3,2) содержит 0.1608
, и (2,3,3) содержит 0.0627
. Цвет для пикселя при (2,3)
0.5176 0.1608 0.0627