Индексируемое изображение состоит из матрицы данных, 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