文档

rgb2ind

转换RGB图像到索引图像

语法

[X,地图]= rgb2ind (RGB, n)
X = rgb2ind(RGB, map)
[X,map] = rgb2ind(RGB, tol)
(___) = rgb2ind (___dither_option)

描述

[X,地图]= rgb2ind (RGB, n)将RGB图像转换为索引图像X使用最小方差量化和抖动。地图包含最多n颜色。n必须小于或等于65,536。

X = rgb2ind(RGB, map)将RGB图像转换为索引图像X与colormap地图使用逆色映射算法和抖动。大小(图1)必须小于或等于65,536。

[X,map] = rgb2ind(RGB, tol)将RGB图像转换为索引图像X使用均匀量子化和抖动。地图包含最多(地板(1 / tol) + 1) ^ 3颜色。托尔必须在0.0和1.0之间。

(___) = rgb2ind (___dither_option)启用或禁用抖动。dither_option可以是这些值中的一个。

“犹豫”(默认)

抖动,如果有必要,以牺牲空间分辨率来获得更好的颜色分辨率

“nodither”

将原始图像中的每一种颜色映射为新映射中最近的颜色。不进行抖动。

请注意

结果图像中的值X索引是到颜色地图吗地图而不应用于数学处理,如滤波操作。

类的支持万博1manbetx

输入图像可以是类uint8,uint16,,或。如果地图当小于或等于256时,输出图像的类是什么uint8。否则,输出图像为ofuint16

的值0在输出数组中X对应于colormap中的第一个颜色。

例子

全部折叠

读取并显示一个真实的颜色uint8一个星云的JPEG图像。

RGB = imread (“ngc6543a.jpg”);图显示亮度图像(RGB)轴图像变焦(4)

将RGB转换为32种颜色的索引图像。

(印第安纳州,地图)= rgb2ind (RGB, 32);图imagesc(IND) colormap(map)轴图像变焦(4)

提示

  • 如果您指定托尔,rgb2ind使用统一量化转换图像。这种方法涉及到把RGB颜色立方体切割成更小的立方体长度托尔

  • 如果您指定n,rgb2ind使用最小方差量化。这种方法包括将RGB颜色立方体切割成不同大小的更小的盒子(不一定是立方体),这取决于颜色在图像中的分布方式。如果输入图像实际使用的颜色比您指定的数字更少,则输出的colormap也会更小。

  • 如果您指定地图,rgb2ind使用colormap映射,其中包括查找颜色地图最符合RGB图像的颜色。

算法

  • 均匀量化-均匀量化将RGB颜色立方体切割成更小的长度立方体托尔。例如,如果你指定a托尔当为0.1时,立方体的边是RGB立方体长度的十分之一。小立方体的总数为:

    n =(地板(1 / tol) + 1) ^ 3

    每个立方体在输出图像中表示一种颜色。因此,colormap的最大长度为nrgb2ind删除了输入图像中没有出现的任何颜色,因此实际的colormap可以比n

  • 最小方差量化-最小方差量化将RGB颜色立方体切割成不同大小的更小的盒子(不一定是立方体),取决于颜色在图像中是如何分布的。如果输入图像实际使用的颜色比指定的数字更少,则输出的colormap也会更小。

  • 逆颜色映射算法将指定的颜色映射量化为每个颜色组件的32个不同的级别。然后,对于输入图像中的每个像素,在量化的色彩映射中找到最接近的颜色。

参考文献

王建民,“有效的反色地图计算”,《图形瑰宝》,北京:科学出版社,1991。(包括源代码)

这个话题有用吗?