Типы изображения

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

Индексируемое изображение состоит из матрицы данных, 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 чьи значения представляют интенсивность в некоторой области значений. Полутоновое изображение представлено как одна матрица с каждым элементом матрицы, соответствующей одному пикселю изображения. Матрица может иметь класс doubleuint8, или 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 (истинный цвет) изображения

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

Массив RGB MATLAB® может иметь класс doubleuint8, или 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