加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab 数字图像 阈值处理

(2013-03-28 19:44:14)
标签:

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)使用迭代的方法求阈值
imread('Fig1013(a)(scanned-text-grayscale).tif');
0.5 (double(min(f(:))) double(max(f(:))));
done false;
while  ~done
    >= T;
    Tnext 0.5*(mean(f(g)) mean(f(~g)));
    done abs(T Tnext) 0.5;
    Tnext;
end
(2)使用工具箱函数
T2 graythresh(f) 255;
计算结果
T = 101.4717
T2 = 101
阈值分割
T2 graythresh(f);
figure, imshow(f);
BW im2bw(f, T2);
figure, imshow(BW)
http://s1/middle/84024a4a4d8faac6346d0&690数字图像 阈值处理" TITLE="Matlab 数字图像 阈值处理" />
http://s8/middle/84024a4a4d8faac82cc27&690数字图像 阈值处理" TITLE="Matlab 数字图像 阈值处理" /> 
 
10.3.2 局部阈值处理
如果北京照明不均匀,有可能导致全局阈值处理无效,这时,就需要进行局部阈值处理。




0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有