在 MATLAB 中使用什么算法 rgb2ind() .



我正在阅读RGB2IND函数的文档,发现它使用统一量化最小方差量化逆色图,尽管我不太明白这些如何适应给定参数的算法。

是否有任何解释型语言(MATLAB,JavaScript,Python)中的代码示例可以确切地演示此函数在此语法中的工作方式?

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

正如文档页面所说,这取决于您使用的函数形式:

  • [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)