Main Content

otsuthresh

使用 Otsu 方法的全局直方图阈值

说明

示例

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

[T,EM] = otsuthresh(counts) 返回有效性度量 EM,它指示阈值化的有效性。

示例

全部折叠

将图像读入工作区。

I = imread('coins.png');

计算图像的 16-bin 直方图。

[counts,x] = imhist(I,16);
stem(x,counts)

使用直方图计数计算全局阈值。

T = otsuthresh(counts);

使用计算的阈值创建一个二值图像并显示该图像。

BW = imbinarize(I,T);
figure
imshow(BW)

输入参数

全部折叠

直方图计数,指定为非负值向量。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输出参量

全部折叠

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

数据类型: double

阈值的有效性度量,以范围 [0, 1] 内的数值标量形式返回。下界值仅在直方图计数中所有数据都集中在一个非零 bin 中时才会得到。上界值仅在直方图计数中只有两个非零 bin 时才会得到。

数据类型: double

参考

[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.

扩展功能

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2016a 中推出

全部展开