主要内容

multithresh

多级图像使用大津阈值的方法

描述

例子

= multithresh (一个)返回单一阈值计算的图像一个利用大津的方法。您可以使用作为输入参数imquantize将图像转化为两级图像。

例子

= multithresh (一个,N)返回1)×(n矢量包含N使用大津阈值的方法。您可以使用作为输入参数imquantize转换图像一个为一个图像N + 1离散的水平。

例子

(,度规)= 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)标题(“分割图像”)

图包含一个坐标轴对象。标题分割图像的坐标轴对象包含一个类型的对象的形象。

阅读真彩图像(RGB)和显示它。

我= imread (“peppers.png”);imshow (I)轴标题(“RGB图像”);

图包含一个坐标轴对象。标题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量化包含一个类型的对象的形象。

比较结果,计算独特的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

阈值图像再一次,这一次增加的价值N1。现在这个值等于图像的数量水平。注意输入是退化图像中因为水平的数量是太少的数量要求的阈值。因此,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 > 2,multithresh使用基于搜索优化首先进行标准的阈值。只搜索优化保证局部最优的结果。自收敛于局部最优的可能性增加N,最好使用更小的值N,通常是N < 10。最大允许的值N是20。

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

输出参数

全部折叠

用于设定的阈值量化一个图像,作为1)×(n数值向量返回的数据类型是一样的形象一个

这些阈值在同一个范围作为输入图像一个,不像graythresh函数,它返回一个归一化的阈值区间[0,1]。

阈值的有效性,返回的数量区间[0,1]。更高的值表明更大的有效性将输入图像的阈值N + 1类基于大津的客观标准。对简并输入惟一的值的数量一个小于或等于什么N,度规= 0。

数据类型:

引用

[1]大津,N。,"A Threshold Selection Method from Gray-Level Histograms,"IEEE系统,人,控制论1号卷。9日,1979年,页62 - 66。

扩展功能

版本历史

介绍了R2012b