Какой алгоритм (ы) использует rgb2ind() в MATLAB?

Я читаю документацию по функции RGB2IND и обнаружил, что она использует равномерное квантование, минимальное дисперсионное квантование и обратную цветовую карту, хотя я не совсем понимаю, как они вписываются в алгоритм с учетом параметров.

Существуют ли примеры кода на любом интерпретируемом языке (MATLAB, JavaScript, Python), которые демонстрируют, как именно эта функция работает в этом синтаксисе?

[X,map] = rgb2ind(RGB,n);

1 ответ

Решение

Как сказано на странице документации, это зависит от того, какую форму функции вы используете:

  • [X,map] = rgb2ind(RGB,n): если вы укажете количество цветов в качестве входных данных, будет использовано минимальное дисперсионное квантование для построения индексированного изображения с максимум n цвета

  • [X,map] = rgb2ind(RGB,tol): если вы указываете значение допуска в качестве входных данных, оно использует равномерное квантование для построения индексированного изображения с максимум (floor(1/tol)+1)^3 цвета

  • X = rgb2ind(RGB,map): если вы указываете цветовую карту в качестве входных данных, она будет использовать алгоритм обратной карты цветов для построения индексированного изображения, сопоставленного с указанным map

Вы всегда можете прочитать исходный код самостоятельно (edit rgb2ind)


Вот примеры, показывающие, как использовать все формы функций:

%% some truecolor image
RGB = imread('pears.png');
imshow(RGB)

%% 16 colors
[X,map] = rgb2ind(RGB, 16);
imshow(X,map)

%% 0.15 tolerance, no dithering
[X,map] = rgb2ind(RGB, 0.15, 'nodither');
imshow(X,map)

%% use a pinkish colormap with 32 colors
map = pink(32);
X = rgb2ind(RGB, map);
imshow(X,map)
Другие вопросы по тегам