Main Content

graythresh

使用 Otsu 方法计算全局图像阈值

说明

示例

T = graythresh(I) 使用 Otsu 方法 [1] 根据灰度图像 I 计算全局阈值 T。Otsu 方法选择一个阈值,使阈值化的黑白像素的类内方差最小化。全局阈值 T 可与 imbinarize 结合使用以将灰度图像转换为二值图像。

[T,EM] = graythresh(I) 还返回有效性度量 EM

示例

全部折叠

将灰度图像读入工作区。

I = imread('coins.png');

使用 graythresh 计算阈值。阈值归一化至范围 [0, 1]。

level = graythresh(I)
level = 0.4941

使用阈值将图像转换为二值图像。

BW = imbinarize(I,level);

在二值图像旁边显示原始图像。

imshowpair(I,BW,'montage')

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

输入参数

全部折叠

灰度图像,指定为任意维度的数值数组。graythresh 函数使用 reshape 将多维数组转换为二维数组,并忽略 I 的任何非零虚部。

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

输出参数

全部折叠

全局阈值,以范围 [0, 1] 内的数值标量形式返回。

数据类型: double

阈值的有效性度量,以范围 [0,1] 内的正标量形式返回。下界只能由具有单一灰度级的图像获得,上界只能由二值图像获得。

数据类型: double

提示

  • 默认情况下,函数 imbinarize 使用通过 Otsu 方法获得的阈值创建二值图像。该默认阈值与 graythresh 返回的阈值相同。但是,imbinarize 只返回二值图像。如果您需要灰度级或有效性度量,请在调用 imbinarize 之前使用 graythresh

参考

[1] Otsu, N., "A Threshold Selection Method from Gray-Level Histograms." IEEE Transactions on Systems, Man, and Cybernetics. Vol. 9, No. 1, 1979, pp. 62–66.

在 R2006a 之前推出