图像处理课程设计
图像阈值分割的实现
计算机学院
信息与计算科学 0902 班
2012/7/5
课题目的与要求
目的:理解图像阈值分割算法
要求:
1. 编写程序实现教材 P200 页的迭代阈值分割算法
以 matlab 函数形式表示
2. 使用 graythresh()函数实现自动阈值分割,并与上述输出结果对比
主程序要求:
程序测试要求:
采用多幅不同形式图像验证算法的正确性
对图像分割效果进行分析,并根据图像质量先进行图像增强、去噪等预处理后再分
割。
课题设计内容描述
内容概述:
图像阈值化分割是一种最常用,同时也是最简单的图像分割方法,它特别适用于目
标和背景占据不同灰度级范围的图像。它不仅可以极大的压缩数据量,而且也大大
简化了分析和处理步骤,因此在很多情况下,是进行图像分析、特征提取与模式识
别之前的必要的图像预处理过程。图像阈值化的目的是要按照灰度级,对像素集合
进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部
具有一致的属性,而相邻区域布局有这种一致属性。这样的划分可以通过从灰度级
出发选取一个或多个阈值来实现。
阈值分割法是一种基于区域的图像分割技术,其基本原理是:通过设定不同的特征
阈值,把图像像素点分为若干类.常用的特征包括:直接来自原始图像的灰度或彩
色特征;由原始灰度或彩色值变换得到的特征.设原始图像为 f(x,y),按照一定
的准则在 f(x,y)中找到特征值 T,将图像分割为两个部分。根据特征值进行分
割。
阈值分割是一种区域分割技术,它适应于物体与背景有较强对比的景物分割。
阈值的选取有目视检查直方图法、最大类间方差法等。
目视检查直方图通过观察图像中物体与背景的灰度区间及图像直方图,选取一个合
适的阈值,进行图像分割。
最大类间方差法是在灰度直方图的基础上用最小二乘法原理推导出来的,具有统计
意义上的最佳分割阈值,其基本原理是以最佳阈值将图像的灰度直方图分为两部
分,使两部分之间的方差取最大值,即分离性最大。
自动阈值分割:
使用最大类间方差法找到图片的一个合适的阈值(threshold)。在使用 im2bw
函数将灰度图像转换为二值图像时, 需要设定一个阈值。 这个函数可以帮助我们
获得一个合适的阈值, 利用这个阈值通常比人为设定的阈值能更好地把一张灰度
图像转换为二值图像。
迭代阈值分割算法步骤:
1. 求出图象的最大灰度值和最小灰度值,分别记为 ZMAX 和 ZMIN,令初始阈
值 T0=(ZMAX+ZMIN)/2;
2. 根据阈值 TK 将图象分割为前景和背景,分别求出两者的平均灰度值 ZO 和 ZB
3. 求出新阈值 TK+1=(ZO+ZB)/2;
4. 若 TK=TK+1,则所得即为阈值;否则转 2,迭代计算。
三.总体方案设计
算法流程设计
算法流程图
系统运行环境 Windows 平台
选用的工具 matlab 开发环境
小组成员及具体分工
功能模块,程序实现及测试
图像的自动阈值分割和报告的总结
内容的描述和算法分析
图像的预处理及方案设计
四.程序实现和测试
部分模块划分及实现
1.图像的均值滤波去噪
f=imread('2.jpg');
subplot(2,2,1),imshow(f),title('原图像');
f=rgb2gray(f);
noisy=imnoise(f, 'gaussian',0.07);
ave=fspecial('disk',3);
denoisy1=imfilter(noisy,ave);
denoisy2=medfilt2(noisy,[3,3]);
subplot(2,2,2),imshow(noisy),title('含高斯噪声图像');
subplot(2,2,3),imshow(denoisy1),title('均值滤波图像');
%预定义模板
%噪声的产生
2.图像的增强
p=double(imread('1.jpg'));
a=5;b=1;c=1.023;
[m,n]=size(p);
for i=1:m
for j=1:n
p(i,j)=+log(p(i,j)+1)/b/log(c); %对数拉伸变换高灰度的压缩,低灰度的扩展,视觉匹配
end
end
imshow(uint8(p)); %uint8 将类型转换为无符号 8 位数,即 256 位。与 256 色值一致
title('图像增强');
%读取图像 1,2 f=imread('2.jpg');
3.图像的自动阈值分割
f=imread('1.jpg');
T=graythresh(f);
BW = im2bw(f,T);
subplot(1,2,1),imshow(f);
title('原图像');
f=rgb2gray(f);
subplot(1,2,2),imshow(BW);
title('自动阈值分割');
4.图像的迭代阈值分割
%将彩色图像转化为灰度图像
% 求出最小灰度值
Zmin
Zmax=max(max(f)) % I 中最大灰度值
T=(Zmax+Zmin)/2 %初始阈值
d=1;
while(d>=0.5)
S1=0;
S2=0;
T0=0;
T1=0;
C1=0;
C2=0;
a1=zeros(m,n);
a2=zeros(m,n);
for i=1:m
for j=1:n
if (f(i,j)>=T)
a1(i,j)= f(i,j);
S1=S1+1;
else
a2(i,j)= f(i,j);
S2=S2+1;
end
end
end
for k=1:m*n
C1=C1+a1(k);
C2=C2+a2(k);
end
%前景矩阵
%背景矩阵
%前景阈值平均值
%背景阈值平均值
%下一次阈值
T0=C1/S1;
T1=C2/S2;
TT=(T0+T1)/2;
d=abs(T-TT);
T=TT;
end
g(i,j)=f(i,j)>=T;
end
T
for i=1:m
for j=1:n
end
subplot(2,2,4),imshow (g);
title('阈值分割结果');
测试及截图
1.去噪和增强
2.图像的自动阈值处理
3.图像的迭代阈值处理及图像显示
五.课程设计总结与体会
自动阈值处理和迭代阈值处理的对比:
自动阈值处理利用最大类间方差法是在灰度直方图的基础上用最小二乘法原理推
导出来的,具有统计意义上的最佳分割阈值,利用这个阈值通常比人为设定的阈值
能更好地把一张灰度图像转换为二值图像。
迭代阈值处理则利用图像的平均灰度值作为初值,不断地迭代获得一个在给定差
距内的理想阈值,处理的结果则没有自动阈值处理的好。
心得体会:
这次的课程设计,我们受益颇多!让我们明白了 matlab 这款软件的强大,通过
这几天的探究,我明白要想把一个东西做好,必须专心致志,必须去亲自动手。这
几天的学习,让我知道了怎么样更好的利用自身优势去完成一份课程设计。
经过这几天的努力,我们终于完成了这份课程设计任务。在这几天的课程设计过
程中,我不仅懂得了团队的重要性,也明白了个人的能力也是很重要的!还让我也
对以往的知识有了个回顾和进一步的加深。也让我对别的知识有了了解。此次课程
设计给我们提供了一个既能学习又能锻炼的机会,使我们养成了查找资料的习惯,
将理论与实际相结合起来,锻炼了分析问题和实际解决问题的能力。提高了适应能
力,为今后的学习和实践打下了基础。
六.参考文献
[1] 赵 春 燕 , 郑 永 果 , 王 向 葵 . 基 于 直 方 图 的 图 像 模 糊 增 强 算 法 [J]. 计 算 机 工
程,2005,31(12)
[2]向建军.基于数学形态学的复子波语音谱图特征提取与分析.2002
[3]百度百科. Matlab 概述[DB/OL]. http://baike.baidu.com/view/10598.htm, 2009-12-20.
[4]李忠海.图像直方图局部极值算法及其在边界检测中的应用[J].吉林大学学报,
2003,21(5)
[5]冈萨雷斯. 数字图像处理[M]. 电子工业出版社,2003.
打开图像
显示图像
对图像进行迭代阈值分割
结束
开始
对图像进行去噪
对图像进行增强
对图像进行自动阈值分割
对图像进行显示