图像OTSU阈值分割的程序设计 专业综合实践 武汉理工

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

专业综合课程设计任务书
学生姓名: 专业班级: 电信
指导教师: 周颖工作单位: 信息工程学院
题目:图像OTSU阈值分割的程序设计
初始条件:
(1)提供实验室机房及其matlab软件;
(2)数字图像处理的基本理论学习。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体
要求):
(1)掌握数字图像分割的基本原理;
(2)选择一幅256级的灰度图像,利用matlab设计程序完成以下功能;
(3)根据OTSU(最大类间方差法)原理,设计求取阈值的程序(不能使用matlab 的库函数),并与用matlab的库函数求得的阈值进行比较;
(4)用求得的阈值对一灰度图片进行分割,并对结果进行分析;
(5)要求阅读相关参考文献不少于5篇;
(6)根据课程设计有关规范,按时、独立完成课程设计说明书。

时间安排:
(1) 布置课程设计任务,查阅资料,确定方案 1.5天;
(2) 进行编程设计、调试2天;
(3) 完成课程设计报告书、答辩 1.5天;
指导教师签名: 年月日系主任(或责任教师)签名: 年月日
目录
1概述 (1)
2 MATLAB常用图像操作函数 (2)
2.1图像的读写 (2)
2.2图像的显示 (2)
3理论知识 (3)
3.1图像分割的定义 (3)
3.2阈值分割 (4)
3.3最大类间方差法(OTSU) (4)
3.4全局阈值 (5)
4实验程序 (6)
5程序运行结果及分析 (9)
5.1程序运行结果 (9)
5.2结果分析 (14)
6心得体会 (15)
参考文献 (16)
1概述
数字图像处理(DigitalImageProcessing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。

数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。

数字图像处理研究的内容主要有:(1)图像获取和图像表现阶段主要是把模拟图像信号转化为计算机所能接受的数字形式,以及把数字图像用所需要的形式显示出来。

(2)图像复原当造成图像退化的原因已知时,复原技术可用来进行图像的校正。

复原技术是基于模型和数据的图像恢复,其目的是消除退化的影响,从而产生一个等价于理想成像系统所获得的图像。

(3)图像增强当无法知道与图像退化有关的定量信息时,可以使用图像增强技术较为主观地改善图像的质量。

(4)图像分析对图像中的不同对象进行分割、特征提取和表示,从而有利于计算机对图像进行分类、识别、理解或解释。

(5)图像重建由图像的多个一维投影重建该图像,可看成是特殊的图像复原技术。

(6)图像编码和压缩对图像进行编码的主要目的是为了压缩数据,便于存储和传输。

当前的一些编码方法对图像分析和图像加密也有越来越多的应用。

MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

它在数学类科技应用软件中在数值计算方面首屈一指。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

2 MATLAB常用图像操作函数
2.1图像的读写
(1) imread
imread函数用于读入各种图像文件,如:a=imread('e:\w01.tif')
注:计算机E盘上要有w01相应的.tif文件。

(2) imwrite
imwrite函数用于写入图像文件,如:imwrite(a,'e:\w02.tif',’tif’)
(3) imfinfo
imfinfo函数用于读取图像文件的有关信息,如:imfinfo('e:\w01.tif') 2.2图像的显示
(1) image
image函数是MATLAB提供的最原始的图像显示函数,如:
a=[1,2,3,4;4,5,6,7;8,9,10,11,12];
image(a);
(2) imshow
imshow函数用于图像文件的显示,如:
i=imread('e:\w01.tif');
imshow(i);
(3) colorbar
colorbar函数用显示图像的颜色条,如:
i=imread('e:\w01.tif');
imshow(i);
colorbar;
(4) figure
figure函数用于设定图像显示窗口,如:figure(1);figure(2)
3理论知识
3.1图像分割的定义
图像分割是图像识别和图像理解的基本前提步骤。

图像分割算法一般是基于灰度的两个性质之一:不连续性和相似性。

第一个性质的应用是基于灰度的不连续变化来分割图像,比如图像的边缘。

第二个性质的主要应用是根据事先制定的准则将图像分割为相似的区域,比如阈值分割和区域生长。

图像分割是将数字图像划分成互不相交(不重叠)区域的过程,区域(region)是像素的联通集,是所有像素都有相邻或相邻或相接触像素的集合。

联通(connectedness)是指在一个联通集中的任意两个像素之间,存在一条完全由这个集合的元素构成的连通路径。

连通路径是一条可在相邻像素间移动的路径。

因此,在一个连通集中,可以跟踪在任意两个像素间的连通路径而不离开这个集合。

有两种可供选择的连通性准则,如果只依据相邻的像素(上、下、左、右)确定连通,就称为4连通(four-connect),物体也就被称为是4连通的。

因此任意一个像素只有4个邻点可以与它相连通。

如果再加上对角相邻的(45度邻点)像素也被认为是连通的,那么,就得到8连通。

于是,任意像素有8个邻点可以与它相连通。

这两种中的任意一种都可用,只要具有一致性即可。

通常8连通的结果与人的感觉更接近。

当人观察景物时,在视觉系统中对景物进行分割的过程是必不可少的。

这个过程可以使人看到的并不是一个复杂的景物,而只不过是一种对象的集合体。

但是,使用数字图像处理,必须设法分离图像中的对象,把图像分裂成像素集合,每个集合代表一个对象的图像。

图像分割可以采用三种不同的原理来实现。

在利用区域的方法时,把各像素划归到各个对象或区域中。

在边缘方法中,则先确定边缘像素并把它们连接在一起以构成所需的边缘在边界方法中,只需确定存在于区域间的边界。

这三种方法使要解决的问题更加具体。

3.2阈值分割
阈值分割是一种区域分割技术,它适用于物体与背景有较强对比的景物分割。

它计算简单,而且总能用封闭而且连通的边界定义不交叠的区域。

当使用阈值规
则进行图像分割时,所有灰度值大于或等于某阈值的像素都被判属于物体。

所有
灰度值小于该阈值的像素被排除在物体之外。

于是,边界就成为这样一些内部点
的集合,这些点都至少有一个邻点不属于该物体。

如果受关注的物体在其内部具有均匀一致的灰度值并分布在一个具有另一
个灰度值的均匀背景上,使用阈值方法效果就很好。

如果物体与背景的差别在于
某些性质而不是灰度值(如纹理等),那么,可以首先把那个性质转换为灰度,
然后,利用灰度阈值化技术分割待处理的图像。

3.3最大类间方差法(OTSU)
最大类间方差法又称为OTSU 算法,该算法是在灰度直方图的基础上用最
小二乘法原理推导出来的,具有统计意义上的最佳分割阈值。

它的基本原理是以
最佳阈值将图像的灰度直方图分割成两部分,使两部分之间的方差取最大值,即
分离性最大。

设X 是一幅具有L 级灰度级的图像,其中第i 级像素为i N 个,其中i 的值
在0~L-1之间,图像的总像素点个数为:
第i 级出现的概率为: 在OTSU 算法中,以阈值k 将所有的像素分为目标0C 和背景1C 两类。

其中,
0C 类的像素灰度级为0~k-1,1C 类的像素灰度级为k~L-1。

图像的总平均灰度级为:
1
0L i i N N -==∑i i N P N
=
1
0L i i iP μ-==∑
0C 类像素所占的总面积的比例为:
1C 类像素所占的总面积的比例为:
0C 类像素的平均灰度级为:
000()/k μμω=
1C 类像素的平均灰度级为:
111()/k μμω=
其中,
则类间方差公式为: 2220011()()()k δωμμωμμ=-+-
令k 从0~L-1变化,计算在不同k 值下的类间方差2()k δ
,使得2()k δ最
大值时的那个k 值就是所要求的最优阈值。

3.4全局阈值
采用阈值确定边界的最简单做法是在整个图像中将灰度阈值的值设置为常数,也就是全局阈值。

如果背景的灰度值在整个图像中可合理地看做恒定,而且所有物体与背景都具有几乎相同的对比度,那么,只要选择了正确的阈值,使用一个恒定的全局阈值一般会有较好的效果。

1
00k i i P ω-==∑101ωω=-1
00()k i i k iP μ-==∑110()1()
L i i k
k iP k μμ-===-∑
4实验程序
根据题目要求,此程序根据OTSU原理,能完成求取阈值,并与用Matlab 的库函数求得的阈值进行比较的功能。

为了体现OTSU算法的优越性,更进一步用全局阈值法分割图片,来进行两种方法的对比。

主函数的程序代码如下:
function main
[name path]=uigetfile('*.jpg');%获取图片路径及文件名
I=imread([path name]);%读图
I=rgb2gray(I);%彩色转黑白
while 1 %循环执行
disp('0.原图; 1.自编OTSU; 2.库OTSU; 3.人工阈值分割; 4.退出');%提示信息select=input('请选择:'); %选择相应功能
switch select
case 0
original(I);
case 1
fun1(I);
case 2
fun2(I);
case 3
fun3(I);
case 4
return;
otherwise
end
end
显示原图的程序代码如下:
function original(I) %显示原图
figure
imshow(I);title('原图')
自编OSTU算法的程序代码如下:
function fun1(I);
Ni=imhist(I);%计算直方图数组
N=sum(Ni); %总像素点个数
delamax=0; %类间方差最大值
threshold=0; %暂设定阈值
for k=2:255
u=dot([0:255],Ni/N); %图像的总平均灰度级
w0=sum(Ni(1:k)/N); %C0类像素所占面积的比例
w1=1-w0; %C1类像素所占面积的比例
if w0==0|w0==1 %当w0为1或0时提前结束本次循环continue
end
u0=dot([0:k-1],Ni(1:k)/N)/w0; %C0类像素的平均灰度
u1=dot([k:255],Ni(k+1:256)/N)/w1; %C1类像素的平均灰度
dela(k)=w0*(u-u0)^2+w1*(u-u1)^2; %类间方差公式
%求出类间方差的最大值,最大时的那个值对应的k值存入delamax if dela(k)>delamax
delamax=dela(k);
threshold=k-1;
end
end
BW1=im2bw(I,threshold/255); %阈值分割
figure
imshow(BW1), title('自编程序运行结果')%显示图片
disp('自编程序求的的阈值:')%显示提示信息
disp(threshold)%显示结果
调用OSTU库函数的程序代码如下:
function fun2(I)%调用系统函数OTSU阈值分割
level=graythresh(I);%调用系统函数计算阈值
BW2=im2bw(I,level); %阈值分割
figure
imshow(BW2),title('调用库函数运行结果')
level=round(level*255);
disp('调用库函数求得的阈值:')
disp(level)
全局阈值分割的程序代码如下:
function fun3(I) %全局阈值分割程序
[width height]=size(I);;%获取图片宽高
th=input('请输入阈值:');
for i=1:width
for j=1:height
if(I(i,j)<th) %灰度小于阈值时则为黑色
BW1(i,j)=0;
else % 灰度大于等于阈值时则为白色BW1(i,j)=1;
end
end
end
figure
imshow(BW1),title('人工输入阈值')
5程序运行结果及分析
5.1程序运行结果
在命令行窗口中输入main,单击回车之后,弹出选择图片的对话框,运行结果如下图所示:
在命令行窗口中输入0,单击回车之后,运行结果如下图所示:
选择whut.jpg之后,命令行中显示提示信息,运行结果如下图所示:
在命令行窗口中输入0,单击回车之后,弹出原图像的对话框,运行结果如下图所示:
并弹出调用自编OTSU算法处理后的图像的对话框,运行结果如下图所示:
并弹出调用库函数中的OTSU算法处理后的图像的对话框,运行结果如下图所示:
在命令行窗口中输入3,在命令行窗口中输入阈值,单击回车之后,弹出调用人工阈值分割算法处理后的图像的对话框,运行结果如下图所示:
在命令行窗口中输入4,单击回车之后,程序退出,运行结果如下图所示:
5.2结果分析
由图可以看出自编程序和调用库函数的阈值都是132,得到同样的分割阈值,通过比较经过两种方法处理后对应的结果图,可以看出两种方法处理的效果基本相同,满足设计要求。

当使用全局阈值分割时,只要输入的阈值和OTSU算出的阈值一样,即输入132时,处理结果就完全一样。

6心得体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,数字图像处理已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

回顾起此次专业课程设计,至今我仍感慨颇多。

的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说傅里叶卷积的计算,MATLAB软件的应用技巧,对编程掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

学习是一个不断再学习的过程,我会秉着谦虚,认真的态度一直学习下去。

参考文献
[1] 姚敏. 数字图像处理.北京:机械工业出版社,2006
[2] 杨杰,黄朝兵. 数字图像处理及MATLAB实现. 北京:电子工业出版社,2009
[3] 罗平辉,冯平. MATLAB7.0在图像处理中的应用. 北京:机械工业出版社,2007
[4] 邓继忠,张秦岭. 数字图像处理技术. 广州:广东科技出版社,2005
[5] 孙即祥. 图像分析. 北京:科学出版社,2007
[6] 冈萨雷斯,伍兹. 数字图象处理(第三版). 北京:电子工业出版社,2010
本科生课程设计成绩测定表
指导教师签字:
年月日。

相关文档
最新文档