Какой алгоритм (ы) использует 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)