multithresh
多级图像使用大津阈值的方法
描述
例子
图像划分为两个区域
读取图像并显示它。
我= imread (“coins.png”);imshow(我)
计算一个阈值图像。
水平= multithresh(我);
使用图像分割成两个区域imquantize
,指定返回的阈值水平multithresh
。
seg_I = imquantize(我、水平);图imshow (seg_I, [])
图像划分为三个级别使用两个阈值
读一个图像,把它转换成灰度,并显示结果。
我= imread (“foggysf2.jpg”);I = rgb2gray(我);imshow (I)标题(“灰度图像”)
计算两个阈值水平。
打= multithresh(我,2);
使用图像分割成三个层次imquantize
。
标签= imquantize(我打);
分割的图像转换成彩色图像使用label2rgb
和显示。
labelsRGB = label2rgb(标签);imshow (labelsRGB)标题(“分割图像”)
比较阈值的整个形象和Plane-by-Plane阈值
阅读真彩图像(RGB)和显示它。
我= imread (“peppers.png”);imshow (I)轴从标题(“RGB图像”);
从整个生成阈值7水平RGB图像。
threshRGB = multithresh (7);
为每架飞机的RGB图像生成阈值。
threshForPlanes = 0 (3、7);为i = 1:3 threshForPlanes(我:)= multithresh(我(:,:,i), 7);结束
过程整个图像的阈值计算整个图像。
值= [0 threshRGB(结束)2:255];quantRGB = imquantize(我threshRGB价值);
分别处理每个RGB飞机使用阈值向量计算从给定的平面。数字转换每个RGB飞机使用阈值向量生成的平面。
quantPlane = 0(大小(I));为我= 1:3价值= [0 threshForPlanes(结束),2:255];quantPlane(:,:我)= imquantize(我(:,:,i), threshForPlanes(我:),值);结束quantPlane = uint8 (quantPlane);
显示两个色调分离图像和注意的视觉差异在两个阈值方案。
imshowpair (quantRGB quantPlane,“蒙太奇”)轴从标题(“完整的RGB图像量化Plane-by-Plane量化”)
比较结果,计算独特的RGB的数量在每个输出图像像素矢量。注意,plane-by-plane阈值方案收益率约23%比完整的RGB图像颜色方案。
昏暗的大小= (quantRGB);quantRGBmx3 =重塑(quantRGB prod(暗(1:2)),3);quantPlanemx3 =重塑(quantPlane prod(暗(1:2)),3);colorsRGB =独特(quantRGBmx3,“行”);colorsPlane =独特(quantPlanemx3,“行”);disp ([的独特的颜色RGB图像:int2str(长度(colorsRGB))));
独特的颜色RGB图像:188
disp ([“Plane-by-Plane形象:独特的颜色”int2str(长度(colorsPlane))));
在231年Plane-by-Plane形象:独特的颜色
检查结果使用公制的输出参数
读取图像。
我= imread (“circlesBrightDark.png”);
找到所有独特的在图像中灰度值。
uniqLevels =独特的(我(:));disp ([“独特的水平的数量=”int2str(长度(uniqLevels))));
独特的层数= 148
计算一系列单调递增值的阈值N
。
造船= [1 2 4 8];为i = 1:长度(造船)(打,度量)= multithresh(我,造船(我));disp ([“N =”int2str(造船(我))“|指标= 'num2str(公制)]);结束
N = 1 = 0.54767 N = 2 | |指标度量= 0.98715 N = 4 |指标= 0.99648 N = 8 |指标= 0.99902
应用组8阈值获取9-level分割使用imquantize
。
seg_Neq8 = imquantize(我打);uniqLevels =独特(seg_Neq8 (:))
uniqLevels =9×11 2 3 4 5 6 7 8 9
阈值图像用seg_Neq8
作为一个输入multithresh
。集N
等于8,即1小于的数量水平分割图像。multithresh
返回一个度规
值为1。
(打,度量)= multithresh (seg_Neq8, 8)
打=1×81.8784 2.7882 3.6667 4.5451 5.4549 6.3333 7.2118 8.1216
度量= 1
阈值图像再一次,这一次增加的价值N
1。现在这个值等于图像的数量水平。注意输入是退化图像中因为水平的数量是太少的数量要求的阈值。因此,multithresh
返回一个度规
值0。
(打,度量)= multithresh (seg_Neq8, 9)
警告:不存在解决方案,因为独特的水平图像数量太少找到9阈值。返回一个任意选择的解决方案。
打=1×91 2 3 4 5 6 7 8 9
度量= 0
输入参数
一个
- - - - - -图像是阈值
数字数组
图像阈值,指定为一个数值数组的维度。multithresh
发现聚合直方图的阈值基于整个数组。multithresh
认为一个RGB图像三维数值数组和计算的阈值结合数据从所有三个颜色的飞机。
multithresh
使用范围的输入图像一个
,(最小((:))最大((:)))
,作为计算直方图的限制用于后续计算。multithresh
忽略任何一个nan
在计算。任何正
和负
数的第一个和最后一个本的直方图,分别。
对简并输入惟一的值的数量一个
小于或等于什么N
,没有使用首先进行方法可行的解决方案。对于这样的输入,返回值打
包含所有的惟一值一个
可能还有一些额外的值,任意选择。
数据类型:单
|双
|int16
|uint8
|uint16
N
- - - - - -阈值的数量
1
(默认)|正整数
阈值,指定为一个正整数。为N > 2
,multithresh
使用基于搜索优化首先进行标准的阈值。只搜索优化保证局部最优的结果。自收敛于局部最优的可能性增加N
,最好使用更小的值N
,通常是N < 10
。最大允许的值N
是20。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
输出参数
打
——设置阈值
1)×(n数值向量
用于设定的阈值量化一个图像,作为1)×(n数值向量返回的数据类型是一样的形象一个
。
这些阈值在同一个范围作为输入图像一个
,不像graythresh
函数,它返回一个归一化的阈值区间[0,1]。
度规
——测量的有效性
数量在[0,1]
阈值的有效性,返回的数量区间[0,1]。更高的值表明更大的有效性将输入图像的阈值N + 1
类基于大津的客观标准。对简并输入惟一的值的数量一个
小于或等于什么N
,度规
= 0。
数据类型:双
引用
[1]大津,N。,"A Threshold Selection Method from Gray-Level Histograms,"IEEE系统,人,控制论1号卷。9日,1979年,页62 - 66。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
multithresh
金宝app支持C代码的生成(需要MATLAB®编码器™)。注意,如果您选择通用MATLAB主机
目标平台,multithresh
生成的代码使用了一个预编译的,特定于平台的共享库。使用一个共享库保存性能优化,但限制的目标平台可以生成代码。有关更多信息,请参见类型的代码生成图像处理工具箱的支持金宝app。输入参数
N
必须是一个编译时常量。
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
使用笔记和限制:
输入参数
N
必须是一个编译时常量。
版本历史
介绍了R2012b
另请参阅
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。