标签:
im2bw阈值graythresh数字图像matlab |
分类: 数字图像 |
10.3 阈值处理
由于实现的直观性和简单性,图像阈值处理在图象分割应用中占有重要的地位。简单的阈值处理在2.72节(记录在基本原理)已经讨论过了,本节将讨论自动选择阈值的方法,此外还要介绍一种依照局部图像邻域的性质来改变阈值的方法。
假设如图10.12所示的直方图对应于图像f(x,
y),采用这种方法,目标和背景象素会具有两种主要模式的灰度级。一种从背景上提取对象的明显方法是选取一个阈值T来分离这两种模式。任何满足\(f(x,
y) \geq T\)的点(x, y)称为对象点,其他点则称为背景点。
\[g(x, y) = \begin{cases}
&1, f(x, y) \geq
T \\ &0 f(x, y) \leq T\]
T为常数时,称为全局阈值处理。T可变时,称为局部阈值处理。
http://s6/middle/84024a4a4d8faac16aa35&690数字图像 阈值处理" TITLE="Matlab 数字图像 阈值处理" />
10.3.1 全局阈值处理
选取阈值的一种方法是目视检查直方图。图10.12
所示的直方图有两个不同的模式;正如结果所示,我们可以很容易地选取一个阈值T来分开它们。另一种选择T的方法是反复试验,挑选不同的阈值,知道观察者觉得产生了较好的结果时为止。这在交互环境下特别有效,例如,这种方法允许用户使用一个图形控件(如滑动条)来改变阈值并可立即看到结果。
自动确定阈值的迭代步骤如下:
1. 为T选取一个厨师估计值(建议厨师估计值为图像中最大亮度值和最小亮度值的中间值)
2. 使用T分割图像。这会产生两组象素:亮度值大于等于T的所有象素组成的G1,亮度值小于T的G2。
3. 计算G1和G2范围呢你的象素的平均亮度值\(\mu_1, \mu_2\)
4. 计算一个新阈值:\(T = \frac{1}{2}(\mu_1 + \mu_2)\)
5. 重复步骤2到步骤4,直到连续迭代中T的差比预先指定的参数T0小为止
工具箱中提供了一个graythresh函数,调用语法为
T = graythresh(f)
其中,f为输入图像,T是产生的阈值。为了分割图像,我们在函数im2bw中使用阈值T。因为阈值已经被归一化到范围[0,
1]内,因此必须在使用阈值之前将其缩放到合适的范围,例如,若f是uint8类图像,则我们在使用T之前要让T乘以255.
例10.7 计算全局阈值
(1)使用迭代的方法求阈值
f
T
done
while
end
|
(2)使用工具箱函数
T2
|
计算结果
T = 101.4717
T2 = 101
|
阈值分割
T2
figure,
BW
figure,
|
http://s1/middle/84024a4a4d8faac6346d0&690数字图像 阈值处理" TITLE="Matlab 数字图像 阈值处理" />
http://s8/middle/84024a4a4d8faac82cc27&690数字图像 阈值处理" TITLE="Matlab 数字图像 阈值处理" />
10.3.2 局部阈值处理
如果北京照明不均匀,有可能导致全局阈值处理无效,这时,就需要进行局部阈值处理。