imbinarize
二维灰度图像或三维二值化通过阈值化
语法
BW = imbinarize(I)
BW = imbinarize(I,method)
BW = imbinarize(I,T)
BW = imbinarize(I,'adaptive',Name,Value)
说明
示例
BW= imbinarize(I)
替换所有高于全局阈值的值1
并将所有其他值设置为0
,二维或三维灰度图像I
创建二值图像。默认情况下,imbinarize
使用 Otsu 该方法选择特定阈值来最小化阈值化黑白像素类内方差[1]。imbinarize
使用包含 256 个 bin 计算图像直方图 Otsu 阈值。请参考不同的直方图otsuthresh。
示例
BW= imbinarize(I,method)
使用method
指定阈值化方法('global'
或'adaptive'
)从图像I
创建二值图像。
BW= imbinarize(I,T)
使用阈值T
从图像I
创建二值图像。T
可指定为标量亮度值的全局图像阈值,也可指定为亮度值矩阵的局部自适应阈值。
示例
BW= imbinarize(I,'adaptive',Name,Value)
使用名称-值对从图像中对组I
为了控制自适应阈值的各个方面,创建二值图像。
示例
全部折叠
利用全局阈值对图像进行二值化
尝试此示例Copy Command Copy Code
将灰度图像读入工作区。
I = imread('coins.png');
将图像转换为二值图像。
BW = imbinarize(I);
并排显示原始图像及其二值版本。
figure imshowpair(I,BW,'montage')
使用局部自适应阈值对图像进行二值化
尝试此示例Copy Command Copy Code
将灰度图像读入工作区。
I = imread('rice.png');
将灰度图像转换为二值图像。
BW = imbinarize(I, 'adaptive');
并排显示原始图像及其二值版本。
figure imshowpair(I,BW,'montage')
二值化前景比背景暗的图像
尝试此示例Copy Command Copy Code
将灰度图像读入工作区并显示。
I = imread('printedtext.png'); figure imshow(I) title('Original Image')
使用自适应阈值将图像转换为二值图像。ForegroundPolarity
前景比背景暗。
BW = imbinarize(I,'adaptive','ForegroundPolarity','dark','Sensitivity',0.4);
显示图像的二值版本。
figure imshow(BW) title('Binary Version of Image')
利用全局阈值对三维体进行二值化
尝试此示例Copy Command Copy Code
将三维灰度强度数据加载到工作区。
load mristack; V = mristack;
检查三维体。
figure slice(double(V),size(V,2)/2,size(V,1)/2,size(V,3)/2) colormap gray shading interp
将强度三维体转化为二值三维体。
J = imbinarize(V);
检查二值三维体。
figure slice(double(J),size(J,2)/2,size(J,1)/2,size(J,3)/2) colormap gray shading interp
输入参数
全部折叠
I
-输入图像 二维灰度图像|三维灰度图像体
输入图像,指定为二维灰度图像或三维灰度图像体。imbinarize
要求数据类型double
和single
的像素值在 [0, 1] 范围内。你可以用rescale函数将像素值调整到所需范围。
imbinarize
将 RGB 图像被解释为三维体灰度图像,不会单独二值化每个通道。 RGB 图像首先生成二值图像rgb2gray将图像转换为灰度图像。
single
|double
|int8
|int16
|int32
|uint8
|uint16
|uint32
method
-二值化图像的方法'global'
(默认) |'adaptive'
二值化图像的方法被指定为下列值之一。
值 |
意义 |
---|---|
|
用 Otsu 计算全局图像阈值的方法。 Otsu 请参考方法的详细信息graythresh。 |
|
使用每个像素周围的局部一阶图像统计来计算局部自适应图像阈值。详情请参阅 |
char
|string
T
-阈值 数值标 | 数值数组
亮度阈值,指定为由范围 [0, 1] 内的值组成的数值标量或数值数组。
-
如果
T
是数值标量,则imbinarize
将T
解释为全局图像阈值。使用 graythresh 或 otsuthresh 计算全局图像阈值。 -
如果
T
是数值数组,则imbinarize
将T
解释为局部自适应阈值。使用 adaptthresh 计算局部自适应阈值。
single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
名称-值参数
BW = imbinarize(I,'adaptive','Sensitivity',0.4);
指定可选的、以逗号分隔的 Name,Value
对组参数。Name
为参数名称,Value
为对应的值。Name
必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN
。
Sensitivity
- 自适应阈值的敏感度因子0.50
(默认) | [0, 1] 范围内的数值
自适应阈值的敏感度因子,以逗号分隔的对组形式指定,其中包含 'Sensitivity'
和一个 [0, 1] 范围内的数值。高敏感度值会使更多像素阈值化为前景,但存在混入部分背景像素的风险。
single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ForegroundPolarity
- 确定哪些像素被视为前景像素'bright'
(默认) | 'dark'
确定将哪些像素视为自适应阈值化的前景像素,以逗号分隔的对组形式指定,其中包含 'ForegroundPolarity'
和下列值之一。
值 |
意义 |
---|---|
|
前景比背景亮。 |
|
前景比背景暗 |
char
| string
输出参数
全部折叠
BW
- 输出二值图像 逻辑矩阵 | 逻辑数组
输出二值图像,以与 I 大小相同的逻辑矩阵或逻辑数组形式返回。
logical
提示
-
要从索引图像生成二值图像,首先使用 ind2gray 将图像转换为灰度图像。
算法
'adaptive'
方法使用局部自适应阈值对图像进行二值化。imbinarize
使用像素邻域的局部均值强度计算每个像素的阈值。这种方法也称为 Bradley 方法 [2]。'adaptive'
方法使用约为图像大小 1/8 的邻域大小(由 2*floor(size(I)/16)+1
求得)。要使用其他一阶局部统计量或不同的邻域大小,请参阅 adaptthresh。
参考
[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.
[2] Bradley, D., G. Roth, "Adapting Thresholding Using the Integral Image," Journal of Graphics Tools. Vol. 12, No. 2, 2007, pp.13–21.