exponenta event banner

rgb2ind

Преобразовать изображение RGB в индексированное изображение

Описание

пример

[X,cmap] = rgb2ind(RGB,Q) преобразует изображение RGB в индексированное изображение X со связанной картой цветов cmap использование квантования минимальной дисперсии с Q квантованные цвета и дизеринг.

[X,cmap] = rgb2ind(RGB,tol) преобразует изображение RGB в индексированное изображение с использованием равномерного квантования с допуском tol и размывание.

X = rgb2ind(RGB,inmap) преобразует изображение RGB в индексированное изображение с использованием алгоритма обратной карты цветов с указанной картой цветов inmap и размывание.

___ = rgb2ind(___,dithering) включает или отключает дизеринг.

Примеры

свернуть все

Чтение и отображение цвета uint8 JPEG-изображение туманности.

RGB = imread('ngc6543a.jpg');
figure
imagesc(RGB)
axis image
zoom(4)

Figure contains an axes. The axes contains an object of type image.

Преобразование RGB в индексированное изображение с 32 цветами.

[IND,map] = rgb2ind(RGB,32);
figure
imagesc(IND)
colormap(map)
axis image
zoom(4)

Figure contains an axes. The axes contains an object of type image.

Входные аргументы

свернуть все

Образ RGB, заданный как массив m-by-n-by-3.

Типы данных: single | double | uint8 | uint16

Количество квантованных цветов, используемых для квантования минимальной дисперсии, задаваемое как положительное целое число, которое меньше или равно 65 536. Возвращенная карта цветов cmap имеет Q или меньше цветов.

Допуск, используемый для равномерного квантования, задается как число в диапазоне [0, 1]. Возвращенная карта цветов cmap имеет (floor(1/tol)+1)^3 или меньше цветов.

Входная карта цветов, заданная как матрица c-by-3 со значениями в диапазоне [0, 1]. Каждая строка inmap трехэлементный RGB-триплет, определяющий красный, зеленый и синий компоненты одного цвета карты цветов. Карта цветов имеет максимум 65 536 цветов.

Типы данных: double

Выполнить дизеринг, указанный как 'dither' или 'nodither'. Дизеринг увеличивает разрешение цвета за счет пространственного разрешения. Дополнительные сведения см. в разделе dither.

При выборе 'nodither', то rgb2ind не выполняет дизеринг. Вместо этого функция сопоставляет каждый цвет в исходном изображении с ближайшим цветом в новой карте цветов.

Выходные аргументы

свернуть все

Индексированное изображение, возвращаемое в виде матрицы m-на-n неотрицательных целых чисел. Если длина map меньше или равно 256, тогда выходное изображение имеет класс uint8. В противном случае выходное изображение имеет класс uint16. Стоимость 0 в выходном массиве X соответствует первому цвету в карте цветов.

Примечание

Значения в изображении X - индексы в карте цветов map и не должны использоваться в математической обработке, такой как операции фильтрации.

Типы данных: uint8 | uint16

Карта цветов, возвращенная в виде матрицы c-by-3 со значениями в диапазоне [0, 1]. Каждая строка cmap трехэлементный RGB-триплет, определяющий красный, зеленый и синий компоненты одного цвета карты цветов. Карта цветов имеет максимум 65 536 цветов.

Типы данных: double

Алгоритмы

  • Равномерное квантование - если указано tol, то rgb2ind использует равномерное квантование для преобразования изображения. Равномерное квантование разрезает цветовой куб RGB на меньшие кубы длиной tol. Например, если указать tol 0,1, то рёбра кубов составляют одну десятую длины RGB куба. Общее число небольших кубов:

    t = (floor(1/tol)+1)^3
    

    Каждый куб представляет один цвет в выходном изображении. Поэтому t - максимальная длина карты цветов. rgb2ind удаляет все цвета, которые не отображаются во входном изображении, поэтому фактическая карта цветов может быть меньше, чем t.

  • Квантование минимальных отклонений - если указано Q, то rgb2ind использует квантование минимальной дисперсии. Квантование минимальной дисперсии разрезает цветовой куб RGB на меньшие прямоугольники (не обязательно кубики) различных размеров в зависимости от того, как цвета распределены в изображении. Если входное изображение использует меньше цветов, чем указанное число, то выходная карта цветов также меньше.

  • Обратная карта цветов - при указании входной карты цветов inmap, то rgb2ind использует сопоставление карт цветов. Алгоритм обратной карты цветов квантует указанную карту цветов на 32 различных уровня на компонент цвета. Затем для каждого пикселя во входном изображении находят ближайший цвет в квантованной карте цветов.

Ссылки

[1] Спенсер В. Томас, «Эффективное вычисление обратной цветовой карты», Graphics Gems II, (ред. Джеймс Арво), Academic Press: Boston. 1991. (включает исходный код)

См. также

| | |

Темы

Представлен до R2006a