MATLAB 中的 rgb2ind() 使用什么算法?

Pat*_*rts 2 algorithm matlab image-processing color-mapping indexed-image

我正在阅读RGB2IND函数的文档,发现它使用了Uniform QuantizationMinimum Variance QuantizationInverse Colormap,尽管我不太清楚这些给定参数如何适合算法。

是否有任何解释性语言(MATLAB、JavaScript、Python)的代码示例可以准确演示此函数在此语法中的工作原理?

[X,map] = rgb2ind(RGB,n);
Run Code Online (Sandbox Code Playgroud)

Amr*_*mro 6

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

  • [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)
Run Code Online (Sandbox Code Playgroud)