主要内容

imapprox

R2026b

通过减少颜色数量来近似处理索引图像

描述

[Y,newmap] = imapprox(X,map,Q) 使用具有 Q 种量化颜色的最小方差量化法来近似表示索引图像 X 和关联颜色图 map 中的颜色。imapprox 返回索引图像 Y 和颜色图 newmap。

示例

[Y,newmap] = imapprox(X,map,tol) 使用容差为 tol 的均匀量化法来近似表示索引图像 X 和关联颜色图 map 中的颜色。

Y = imapprox(X,map,inmap) 使用基于颜色图 inmap 的逆颜色图映射法来近似表示索引图像 X 和关联颜色图 map 中的颜色。逆颜色图算法会在 inmap 中查找与 map 中的颜色最匹配的颜色。

___ = imapprox(___,dithering) 启用或禁用抖动。

示例

全部折叠

加载狒狒面部的索引图像。使用关联的颜色图 map(包含 220 种颜色)显示图像 X。

figure
load mandrill
image(X)
colormap(map)
axis off         
axis image

Figure contains an axes object. The hidden axes object contains an object of type image.

通过生成新图像 Y 及其关联的颜色图 newmap,将索引图像中的颜色数量从 220 种减少到仅有 16 种颜色。

figure
[Y,newmap] = imapprox(X,map,16);
image(Y)
colormap(newmap)
axis off       
axis image

Figure contains an axes object. The hidden axes object contains an object of type image.

输入参数

全部折叠

具有多种颜色的索引图像,指定为由非负整数组成的 m×n 矩阵。

数据类型: single | double | uint8 | uint16

与索引图像 X 相关联的具有多种颜色的颜色图,指定为由范围 [0, 1] 内的值组成的 d×3 矩阵。map 的每行都是一个三元素 RGB,指定颜色图的单种颜色的红、绿和蓝分量。

数据类型: double

最小方差量化法所用的量化颜色的数量,指定为小于或等于 65536 的正整数。返回的颜色图 newmap 包含的颜色不超过 Q 种。

均匀量化法所用的容差,指定为范围 [0, 1] 内的数字。返回的颜色图 newmap 包含的颜色不超过 (floor(1/tol)+1)^3 种。

逆颜色图映射法所用的具有较少颜色的颜色图,指定为由范围 [0, 1] 内的值组成的 c×3 矩阵。inmap 的每行都是一个三元素 RGB,指定颜色图的单种颜色的红、绿和蓝分量。该颜色图最多有 65536 种颜色。

数据类型: double

执行抖动,指定为 'dither' 或 'nodither'。抖动以损失空间分辨率为代价来提高颜色分辨率。有关详细信息,请参阅 dither。

如果选择 'nodither',则 imapprox 不执行抖动。在这种情况下,函数将原始图像中的每种颜色映射到新颜色图中最接近的颜色。

输出参量

全部折叠

具有较少颜色的索引图像,返回为由正整数组成的 m×n 矩阵。如果 newmap(或 immap,如有指定)的长度小于或等于 256,则输出图像属于 uint8 类。否则,输出图像属于 double 类。

数据类型: double | uint8

与输出索引图像 Y 相关联的具有较少颜色的颜色图,返回为由范围 [0, 1] 内的值组成的 c×3 矩阵。newmap 的每行都是一个三元素 RGB,指定颜色图的单种颜色的红、绿和蓝分量。该颜色图最多有 65536 种颜色。

数据类型: double

算法

imapprox 使用 rgb2ind 创建一个使用较少颜色的新颜色图。有关量化法和逆颜色图映射法的详细信息,请参阅 rgb2ind 的算法。

版本历史记录

在 R2006a 之前推出