exponenta event banner

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

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

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

Изображения в градациях серого (интенсивность)

Изображение в градациях серого, иногда называемое изображением интенсивности, является матрицей данных 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)

RGB-изображение, иногда называемое truecolor-изображением, сохраняется как массив данных m-by-n-by-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