adaptthresh
使用局部一阶统计量的自适应图像阈值
说明
使用灵敏度因子计算局部自适应阈值,通过阈值化处理将更多像素归为前景。T
= adaptthresh(I
,sensitivity
)
使用名称-值对组计算局部自适应阈值,以控制阈值的各个方面。T
= adaptthresh(___,Name=Value
)
示例
从暗背景中寻找阈值并分割亮米粒
将图像读入工作区。
I = imread('rice.png');
使用 adaptthresh
确定在二值化运算中使用的阈值。
T = adaptthresh(I, 0.4);
将图像转换为二值图像,以指定阈值。
BW = imbinarize(I,T);
并排显示原始图像及其二值图像版本。
figure
imshowpair(I, BW, 'montage')
找到阈值并从亮背景中分割暗文本
将图像读入工作区。
I = imread('printedtext.png');
使用 adaptthresh
计算自适应阈值并显示局部阈值图像。这表示平均背景照度的估计值。
T = adaptthresh(I,0.4,'ForegroundPolarity','dark'); figure imshow(T)
使用局部自适应阈值对图像进行二值化
BW = imbinarize(I,T); figure imshow(BW)
计算三维体的阈值
将三维体加载到工作区中。
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 = adaptthresh(V,'neigh',[3 3 3],'Fore','bright');
显示阈值。
figure slice(double(J),size(J,2)/2,size(J,1)/2,size(J,3)/2) colormap gray shading interp
输入参数
I
— 灰度图像或图像体
二维数值矩阵 | 三维数值数组
灰度图像或图像体,指定为二维数值矩阵或三维数值数组。
adaptthresh
需要数据类型为 double
和 single
的图像的值在 [0, 1] 的范围内。如果 I
的值超出范围 [0, 1],则可以使用 rescale
函数将值重新缩放到需要的范围。
如果图像包含 Inf
或 NaN
值,则说明 adaptthresh
的行为未定义。Inf
或 NaN
值的传播可能不会局限于 Inf
或 NaN
像素周围的邻域。
数据类型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
sensitivity
— 确定哪些像素被阈值化为前景像素
0.5
(默认) | [0, 1] 范围内的数值
确定哪些像素被阈值化为前景像素,指定为 [0, 1] 范围内的数字。高敏感度值导致更多的像素通过阈值化处理归为前景,但这会存在将一些背景像素也归为前景的风险。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量后,但对各个参量对组的顺序没有要求。
示例: T = adaptthresh(I,0.4,ForegroundPolarity="dark");
指定前景比背景暗。
如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: T = adaptthresh(I,0.4,"ForegroundPolarity","dark");
指定前景比背景暗。
NeighborhoodSize
— 用于计算每个像素周围局部统计量的邻域大小
2*floor(size(I)/16)+1
(默认) | 正奇数 | 由正奇数组成的二元素向量
用于计算每个像素周围局部统计量的邻域大小,指定为正奇数或由正奇数组成的二元素向量。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ForegroundPolarity
— 确定哪些像素被视为前景像素
"bright"
(默认) | "dark"
确定哪些像素被视为前景像素,使用以下项之一进行指定:
值 | 意义 |
---|---|
| 前景比背景亮。 |
| 前景比背景暗。 |
数据类型: char
| string
Statistic
— 用于计算局部阈值的统计量
"mean"
(默认) | "median"
| "gaussian"
用于计算每个像素的局部阈值的统计量,指定为下列值之一:
值 | 意义 |
---|---|
| 邻域中的局部均值强度。这种方法也称为布拉德利方法 [1]。 |
| 邻域中的局部中位数。此统计量的计算可能会很慢。请考虑使用较小的邻域大小来更快地获得结果。 |
| 邻域中的高斯加权均值。 |
数据类型: char
| string
输出参量
参考
[1] Bradley, D., G. Roth, "Adapting Thresholding Using the Integral Image," Journal of Graphics Tools. Vol. 12, No. 2, 2007, pp.13–21.
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
adaptthresh
支持 C 代码生成(需要 MATLAB® Coder™)。请注意,如果您选择通用的MATLAB Host Computer
目标平台,adaptthresh
生成的代码将使用平台特定的预编译共享库。使用共享库可保留性能上的优化,但适用范围仅限于生成的代码所适用的目标平台。有关详细信息,请参阅Image Processing Toolbox 中代码生成支持的类型。ForegroundPolarity
和Statistic
参量必须为编译时常量。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
用法说明和限制:
ForegroundPolarity
和 Statistic
参量必须为编译时常量。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2016a 中推出R2022b: 使用 GPU Coder 生成 CUDA 代码
adaptthresh
现在支持生成优化的 CUDA® 代码(需要 GPU Coder™)。
R2021b: 支持基于线程的环境
adaptthresh
现在支持基于线程的环境。
另请参阅
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)