Main Content

dither

转换图像,通过抖动提高表观颜色分辨率

说明

X = dither(RGB,map) 通过抖动颜色图 map 中的颜色创建 RGB 图像的索引图像近似值。

X = dither(RGB,map,Qm,Qe) 还指定要沿每个颜色轴为逆颜色图使用的量化位数 Qm,以及用于颜色空间误差计算的量化位数 Qe

示例

BW = dither(I) 通过抖动将灰度图像 I 转换为二值(黑白)图像 BW

示例

全部折叠

corn.tif 文件中的灰度图像读取到 MATLAB® 工作区中。此图像的灰度版本是文件中的第三个图像。

corn_gray = imread('corn.tif',3);

使用 imshow 显示灰度图像。

imshow(corn_gray)

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

使用 dither 函数将图像转换为二值图像。

corn_bw = dither(corn_gray);

显示二值图像。虽然二值图像中的像素值只有 01,但由于抖动,图像似乎会呈现不同的灰度。

imshow(corn_bw)

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

输入参数

全部折叠

RGB 图像,指定为由非负数组成的 m×n×3 数组。如果指定数据类型为 double 的图像,则值必须在 [0, 1] 范围内。

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

输入颜色图,指定为由范围 [0, 1] 内的值组成的 c×3 矩阵。map 的每行都是一个三元素 RGB,指定颜色图的单种颜色的红、绿和蓝分量。该颜色图最多有 65536 种颜色。

数据类型: double

沿逆颜色图的每个颜色轴的量化位,指定为正整数。如果 Qe 小于 Qm,则无法执行抖动,dither 函数将返回 X 中未抖动的索引图像。

数据类型: double

用于颜色空间误差计算的量化位,指定为正整数。如果 Qe 小于 Qm,则无法执行抖动,dither 函数将返回 X 中未抖动的索引图像。

数据类型: double

灰度图像,指定为由非负数组成的 m×n 矩阵。如果指定数据类型为 double 的图像,则值必须在 [0, 1] 范围内。

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

输出参数

全部折叠

索引图像,返回由非负整数组成的 m×n 矩阵。如果 map 的长度小于或等于 256,则输出图像可以属于 uint8 类。否则,输出图像属于 uint16 类。输出数组 X 中的值 0 对应于颜色图中的第一个颜色。

注意

图像 X 中的值是颜色图 map 的索引且不应该用于数学处理(例如过滤运算)。

数据类型: uint8 | uint16

二值图像,以 m×n 逻辑矩阵形式返回。

数据类型: logical

算法

dither 通过应用弗洛伊德-斯坦伯格 (Floyd-Steinberg) 的误差扩散抖动算法提高图像表观颜色分辨率 [1]

参考

[1] Floyd, R. W., and L. Steinberg, "An Adaptive Algorithm for Spatial Gray Scale," International Symposium Digest of Technical Papers, Society for Information Displays, 1975, p. 36.

[2] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 469–476.

版本历史记录

在 R2006a 之前推出

另请参阅

|