Индексируемое изображение состоит из матрицы данных, 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 точек к пятой строке палитры.
Примечание
При использовании средства отображения живописцев на платформе Windows® необходимо только использовать 256 цветов при попытке отобразить индексируемое изображение. Большие палитры могут привести к неожиданным цветам, потому что алгоритм живописцев использует цветовую палитру Windows 256, которую графические драйверы и аппаратное обеспечение машинной графики, как известно, обрабатывают по-другому. Чтобы работать вокруг этой проблемы, используйте Zbuffer
или OpenGL
средство отображения, как соответствующий.
Полутоновое изображение, иногда называемое изображением intensity, является матрицей данных I
чьи значения представляют интенсивность в некоторой области значений. Полутоновое изображение представлено как одна матрица с каждым элементом матрицы, соответствующей одному пикселю изображения. Матрица может иметь класс double
uint8
, или uint16
. В то время как полутоновые изображения редко сохранены с палитрой, палитра все еще используется, чтобы отобразить их. В сущности полутоновые изображения обработаны как индексированные изображения.
Этот рисунок изображает полутоновое изображение класса double
.
Чтобы отобразить полутоновое изображение, используйте imagesc
(“отображают шкалу”), функция, которая позволяет вам установить область значений значений интенсивности. imagesc
масштабирует данные изображения, чтобы использовать полную палитру. Используйте 2D входную форму 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