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 truecolor 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 -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] Spencer W. Thomas, «Effective Inverse Color Map Computation», Graphics Gems II, (эд. James Arvo), Academic Press: Boston. 1991. (включает исходный код)

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