rgb2ind

Преобразование изображения RGB в индексируемое изображение

Синтаксис

[X,cmap] = rgb2ind(RGB,Q)
[X,cmap] = rgb2ind(RGB,tol)
X = rgb2ind(RGB,inmap)
___ = rgb2ind(___,dithering)

Описание

пример

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

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

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

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

Примеры

свернуть все

Считайте и отобразите истинный цвет изображение JPEG uint8 туманности.

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

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

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

Входные параметры

свернуть все

Изображение 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-by-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] Спенсер В. Томас, "Эффективное Обратное Вычисление Карты цветов", Графические Драгоценные камни II, (редактор Джеймс Арво), Academic Press: Бостон. 1991. (включает исходный код),

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