imapprox

Аппроксимируйте индексированное изображение путем уменьшения количества цветов

Описание

пример

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

[Y,newmap] = imapprox(X,map,tol) аппроксимирует цвета в индексированном изображении X и связанные с ними map палитры при помощи равномерного квантования с допуском tol.

Y = imapprox(X,map,inmap) аппроксимирует цвета в индексированном изображении X и связанные с ними map палитры при помощи обратного отображения палитры с помощью палитры inmap. Алгоритм обратной палитры находит цвета в inmap которые лучше всего соответствуют цветам в map.

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

Примеры

свернуть все

Загрузите индексированное изображение грани мандриля. Отобразите X изображения используя связанную с ним палитру, map, который имеет 220 цветов.

figure
load mandrill
image(X)
colormap(map)
axis off         
axis image

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

Уменьшите количество цветов в индексированном изображении с 220 до только 16 цветов путем создания нового изображения, Y, и связанная с ним палитра, newmap.

figure
[Y,newmap] = imapprox(X,map,16);
image(Y)
colormap(newmap)
axis off       
axis image

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

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

свернуть все

Индексированное изображение со многими цветами, заданное как m -by - n матрица неотрицательных целых чисел.

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

Палитра со многими цветами, сопоставленными с индексированным изображением X, заданный как матрица d -by-3 со значениями в области значений [0, 1]. Каждая строка map - трехэлементный триплет RGB, который задает красный, зеленый и синий компоненты одного цвета палитры.

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

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

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

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

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

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

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

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

свернуть все

Индексированное изображение с меньшим количеством цветов, возвращаемое как m -by - n матрица положительных целых чисел. Если длина newmap (или immap, если задан) меньше или равен 256, тогда выходное изображение имеет класс uint8. В противном случае выходное изображение имеет класс double.

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

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

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

Алгоритмы

imapprox использование rgb2ind чтобы создать новую палитру, которая использует меньше цветов. Для получения дополнительной информации о квантовании и обратном отображении палитры, смотрите Алгоритмы rgb2ind.

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