ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:171.08KB ,
资源ID:12774973      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12774973.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图像OTSU阈值分割的程序设计.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图像OTSU阈值分割的程序设计.docx

1、图像OTSU阈值分割的程序设计目 录摘 要 I1 原理与实现 11.1图像分割 11.2 阈值分割 11.3 OTSU算法 21.4 迭代法 32 程序设计 42.1 主程序 42.2 OTSU 52.3 全局阈值 62.4 迭代法 63结果与分析 84 心得体会 10参考文献 11专业综合课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目:图像OTSU阈值分割的程序设计初始条件:(1) 提供实验室机房及其matlab软件;(2) 提供一张灰度图片;(3) 数字图像处理的基本理论学习。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):(1)掌握

2、数字图像分割的基本原理;(2)熟悉掌握matlab软件,并利用matlab设计一程序完成以下功能;(3)根据OTSU(最大类间方差法)原理,设计求取阈值的程序(不能使用Matlab的库函数),并与用Matlab的库函数求得的阈值进行比较;(4)用求得的阈值对一灰度图片进行分割,并对结果进行分析;(5)要求阅读相关参考文献不少于5篇;(6)根据课程设计有关规范,按时、独立完成课程设计说明书。时间安排: (1) 布置课程设计任务,查阅资料,确定方案 四天; (2) 进行编程设计 一周; (3) 完成课程设计报告书 三天;指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日摘 要 数字图

3、像处理的目的之一是图像识别, 而图像分割是图像识别工作的基础。图像分割的算法有阈值分割法,边缘检测法,区域分割等,本设计重点介绍了阈值分割法中的最大类间方差法(OTSU)的原理,matlab的实现代码与运行结果,并与matlab自带的库函数运行结果进行比较,还扩展了迭代法分割,手动输入一个阈值进行分割。本程序中很多地方都有输入输出提示,有一定的人机交互。关键词:OTSU;图像分割;matlab;1 原理与实现1.1图像分割 数字图像处理的目的之一是图像识别, 而图像分割是图像识别工作的基础。图像分割是将图像分成一些有意义的区域, 然后对这些区域进行描述, 相当于提取出某些目标区域图像的特征,

4、判断图像中是否有感兴趣的目标。图像分割的基础是像素间的相似性和跳变性。所谓“相似性”是指在某个区域内像素具有某种相似的特性, 如灰度一样, 纹理相同;所谓“跳变性”是指特性不连续, 如灰度值突变等。从总体上说, 图像分割就是把图像分成若干有意义的区域的处理技术。这些区域互不交叠, 每一个区域内部的某种特性或特征相同或接近, 而不同区域间的图像特征则有明显差别, 即同一区域内部特性变化平缓, 相对一致, 而区域边界处则特性变化比较剧烈。区域内是一个所有像素都有相邻或相接触像素的集合, 是像素的连通集。在一个连通集中任意两个像素之间, 都存在一条完全由这个集合的元素构成的连通路径。连通路径是一条可

5、在相邻像素间移动的路径。所以, 在一个连通集中,你可以跟踪在任意两个像素间的连通路径而不离开这个集合。 图像分割的方法有多种, 依据工作对象来分, 可分为点相关分割和区域相关分割; 按算法分类, 可分为阈值法、界限检测法、匹配法、跟踪法等。近年来出现了一些新的算法和设想。如先使用经典的边缘检测算子对图像做初步的边缘检测, 然后再利用边缘之间空间结构关系来协调, 增强初始检测结果。 1.2 阈值分割 阈值处理是一种区域分割技术, 将灰度根据主观愿望分成两个或多个等间隔或不等间隔灰度区间, 它主要是利用图像中要提取的目标物体和背景在灰度上的差异, 选择一个合适的阈值, 通过判断图像中的每一个像素点

6、的特征属性是否满足阈值的要求来确定图像中该像素点属于目标区还是应该属于背景区域, 从而产生二值图像, 它对物体与背景有较强对比景物的分割特别有用。它计算简单, 而且总能用封闭而且连通的边界定义不交叠的区域。 在使用阈值法进行分割技术时, 阈值的选取成为能否正确分割的关键, 若将所有灰度值大于或等于某阈值的像素都被判属于物体, 则将所有灰度值小于该阈值的像素被排除在物体之外, 如果阈值选取得过高, 则过多的目标区域将被划分为背景, 相反如果阈值选取得过低, 则过多的背景将被划分到目标区。因此, 边界就由这样一些内部点的集合组成, 这些点都至少有一个邻点不属于该物体。 由于物体和背景以及不同物体之

7、间的灰度级有明显的差别, 因此, 在图像的灰度级直方图中会呈现明显的峰值。当图像灰度直方图峰型分布明显时, 常以谷底作为门限候选值。所以只要适当地选择阈值, 即可对图像进行分割, 因而成为一种简单而广泛应 用的方法。 1.3 OTSU算法OTSU算法,又称最大类间方差法,是由日本学者大津(Nobuyuki Otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味

8、着错分概率最小。 设X是一幅具有L级灰度级的图像,其中第i级像素为个,其中i的值在0L-1之间,图像的总像素点个数为: (1) 第i级出现的概率为: (2) 在OTSU算法中,以阈值k将所有的像素分为目标和背景两类。其中,类的像素灰度级为0k-1,类的像素灰度级为kL-1。图像的总平均灰度级为: (3)类像素所占的总面积的比例为: (4)类像素所占的总面积的比例为: (5)类像素的平均灰度级为: (6)类像素的平均灰度级为: (7)其中, (8) (9)最大类间方差的公式为: (10)令k从0L-1变化,计算在不同k值下的类间方差,使得最大值时的那个k值就是所要求的最优阈值。1.4 迭代法迭代

9、法的原理是:图像中前景与背景之间的灰度分布为相互不均衡,在这个前提下,实现对两类对象的阈值分割。其算法步骤如下:(1)设定参数,选择一个T的初始阈值估计值。(2)用分割图像。将图像分成两组像素:由所有灰度值大于的像素组成,而的所有灰度值小于或等于的像素组成。(3)对区域和中的所有像素计算平均灰度值和。(4)计算新的阈值: =(+)/2.(5)如果,则推出,即所求的全局阈值;否则,将赋给,重复步骤(2)(5)。2 程序设计 程序除了有题目中要求的自编程序实现最大类间方差法外,还扩展了手动输入阈值进行分割和迭代法阈值分割,功能较多,为了使程序有良好的人机界面,主程序中提供了简单的菜单界面。同时为了

10、增加程序的可读性,分模块编写,然后在主函数中调用。2.1 主程序function main %主程序clear;close all; %清除变量,关闭所有窗口name path=uigetfile(*.jpg);%获取图片路径及文件名I=imread(path name);%读图I=rgb2gray(I);%彩色转黑白while 1 %循环执行disp(0 原图 1 OTSU 2 全局阈值 3 迭代法 4 退出);%提示信息 select=input(请选择:); %选择相应功能 switch select case 0 yuantu(I); %输入0 显示原图case 1 %输入1 OTSU

11、法 fun1(I); case 2 %输入2 全局阈值法 fun2(I); case 3 fun3(I) %输入3 迭代法 case 4 return; %输入4 退出 otherwise %其他值不处理 endend2.2 OTSUfunction 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; %

12、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; endendBW1=im2bw(I,threshold/255); %阈

13、值分割figureimshow(BW1),title(自编程序运行结果)%显示图片disp(自编程序求的的阈值:)%显示提示信息disp(threshold) %显示结果%调用系统函数OTSU阈值分割level=graythresh(I);%调用系统函数计算阈值BW2=im2bw(I,level); %阈值分割figureimshow(BW2),title(调用库函数运行结果)level=round(level*255);disp(调用库函数求得的阈值:)disp(level)2.3 全局阈值function fun2(I) %阈值分割程序 width height=size(I);%获取图片

14、宽高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 endendfigureimshow(BW1),title(全局阈值)2.4 迭代法function fun3(I) %迭代法求阈值J=double(I); T=(min(J(:)+max(J(:)/2; %T的初始阈值done=false; %done 的初始值为falsei=0;while done %当done为false是则执行循环 r1=fi

15、nd(JT); %找出大于T的所有像素点索引值 Tnew=(mean(J(r1)+mean(J(r2)/2; %计算新的阈值 done=abs(Tnew-T)1; %判断|T2-T1|是否小于T0 T=Tnew; i=i+1;endJ(r1)=0; %小于等于阈值的为黑J(r2)=1 ; %大于阈值的为白figureimshow(J),title(迭代法求阈值)function yuantu(I) %显示原图figureimshow(I);title(原图)3结果与分析将程序文件名保存为main.m,以下为MATLAB主窗口运行的过程与结果以下为不同的算法得到的阈值分割结果图3 全局阈值图4

16、迭代法图6 系统函数运行结果图5 自编程序运行结果结果分析:调用系统函数与自编的程序求得的阈值一样,处理的结果完全一样。手动输入阈值分割的话只要输入的阈值和OTSU算出的阈值一样,处理结果就完全一样。另外采用迭代法,通过多次用不同的图片处理发现算出的阈值和最大类间方差法基本一样,但有时会有误差,处理结果基本一样。4 心得体会 经过两周的努力努力,总算把专业综合课程设计做完了。 通过该课程设计,全面系统的理解了数字图像处理的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的数字图像处理基础原理的知识强化,能够把课堂上学的知识通过自己编写的程序表示出来,加深了对理论

17、知识的理解。 在这次课程设计中,我先是认真阅读课本上的相关知识,理解透后又翻阅关于matlab的书籍,学习matlab中一些函数及运算符的用法。总体来说,这次课设我学到了很多。在设计过程中,加深了对可内知识的理解就,真正懂得了学以致用,熟悉了matlab的使用,了解了matlab在数字图像处理中的重大应用。做课程设计我体会到了设计的艰辛的同时,更让我体会到成功的喜悦和快乐. 这次数字图像处理课程设计,虽然短暂但是让我得到多方面的提高:首先,提高了我们的对matlab语言的运用能力。以前也曾用matlab做过课程设计,但以前写的程序既没有人机交互功能,这次课程设计首次运用模块化思想,将多个功能分

18、模块编写,然后通过主函数调用,并且有一定的人机交互。matlab程序设计中也有顺序、选择、循环三种结构,这一点和C语言很像。其次,掌握了数字图像的原理及运用matlab进行图像处理的方法。通过matlab中提供的图片读取函数可以将一幅黑白图片转换为二维数组,然后运用C语言里掌握的编程思想和图像处理的原理,就能编写出相应程序。以前用过photoshop之类的软件进行过图像处理,但未能理解数字图像处理的本质。通过此次课程设计,能够自己编写函数来进行图像处理,有一种成就感。最后,查阅参考书和资料的独立思考的能力以及培养非常重要。Matlab我们在设计程序时,遇到很多不曾用过的函数,如im2bw。一方面我们可以查看教材和参考书,另一方面通过网络为我们提供了丰富的学习资源,我们可以快速的在网上查到某个函数的详细用法说明,还能找到很多别人的程序。参考文献1邱光源,电路,高等教育出版社,20052张强, 王正林,精通MATLAB图像处理,电子工业出版社,19973吴锡龙,电路分析,高等教育出版社,20044陈怀琛,MATLAB及其在课程中的应用指南,西安电子科技大学出版社,20005朱习军,MATLAB在信号与系统与图象处理中的应用,电子工业出版社,2002

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1