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

收藏

预览图
编号:93206906    类型:共享资源    大小:301KB    格式:DOC    上传时间:2020-08-28 上传人:伐*** IP属地:宁夏
15
积分
关 键 词:
图像 OTSU 阈值 分割 程序设计
资源描述:
武汉理工大学《专业综合课程设计》说明书 目 录 摘 要 i 1 原理与实现 1 1.1图像分割 1 1.2 阈值分割 1 1.3 otsu算法 2 1.4 迭代法 3 2 程序设计 4 2.1 主程序 4 2.2 otsu 5 2.3 全局阈值 6 2.4 迭代法 6 3结果与分析 8 4 心得体会 10 参考文献 11 专业综合课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位: 题 目:图像otsu阈值分割的程序设计 初始条件: (1) 提供实验室机房及其matlab软件; (2) 提供一张灰度图片; (3) 数字图像处理的基本理论学习。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求): (1)掌握数字图像分割的基本原理; (2)熟悉掌握matlab软件,并利用matlab设计一程序完成以下功能; (3)根据otsu(最大类间方差法)原理,设计求取阈值的程序(不能使用matlab的库函数),并与用matlab的库函数求得的阈值进行比较; (4)用求得的阈值对一灰度图片进行分割,并对结果进行分析; (5)要求阅读相关参考文献不少于5篇; (6)根据课程设计有关规范,按时、独立完成课程设计说明书。 时间安排: (1) 布置课程设计任务,查阅资料,确定方案 四天; (2) 进行编程设计 一周; (3) 完成课程设计报告书 三天; 指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日 i - 摘 要 数字图像处理的目的之一是图像识别, 而图像分割是图像识别工作的基础。图像分割的算法有阈值分割法,边缘检测法,区域分割等,本设计重点介绍了阈值分割法中的最大类间方差法(otsu)的原理,matlab的实现代码与运行结果,并与matlab自带的库函数运行结果进行比较,还扩展了迭代法分割,手动输入一个阈值进行分割。本程序中很多地方都有输入输出提示,有一定的人机交互。 关键词:otsu;图像分割;matlab; 1 原理与实现 1.1图像分割 数字图像处理的目的之一是图像识别, 而图像分割是图像识别工作的基础。图像分割是将图像分成一些有意义的区域, 然后对这些区域进行描述, 相当于提取出某些目标区域图像的特征, 判断图像中是否有感兴趣的目标。图像分割的基础是像素间的相似性和跳变性。所谓“相似性”是指在某个区域内像素具有某种相似的特性, 如灰度一样, 纹理相同;所谓“跳变性”是指特性不连续, 如灰度值突变等。从总体上说, 图像分割就是把图像分成若干有意义的区域的处理技术。这些区域互不交叠, 每一个区域内部的某种特性或特征相同或接近, 而不同区域间的图像特征则有明显差别, 即同一区域内部特性变化平缓, 相对一致, 而区域边界处则特性变化比较剧烈。区域内是一个所有像素都有相邻或相接触像素的集合, 是像素的连通集。在一个连通集中任意两个像素之间, 都存在一条完全由这个集合的元素构成的连通路径。连通路径是一条可在相邻像素间移动的路径。所以, 在一个连通集中,你可以跟踪在任意两个像素间的连通路径而不离开这个集合。 图像分割的方法有多种, 依据工作对象来分, 可分为点相关分割和区域相关分割; 按算法分类, 可分为阈值法、界限检测法、匹配法、跟踪法等。近年来出现了一些新的算法和设想。如先使用经典的边缘检测算子对图像做初步的边缘检测, 然后再利用边缘之间空间结构关系来协调, 增强初始检测结果。 1.2 阈值分割 阈值处理是一种区域分割技术, 将灰度根据主观愿望分成两个或多个等间隔或不等间隔灰度区间, 它主要是利用图像中要提取的目标物体和背景在灰度上的差异, 选择一个合适的阈值, 通过判断图像中的每一个像素点的特征属性是否满足阈值的要求来确定图像中该像素点属于目标区还是应该属于背景区域, 从而产生二值图像, 它对物体与背景有较强对比景物的分割特别有用。它计算简单, 而且总能用封闭而且连通的边界定义不交叠的区域。 在使用阈值法进行分割技术时, 阈值的选取成为能否正确分割的关键, 若将所有灰度值大于或等于某阈值的像素都被判属于物体, 则将所有灰度值小于该阈值的像素被排除在物体之外, 如果阈值选取得过高, 则过多的目标区域将被划分为背景, 相反如果阈值选取得过低, 则过多的背景将被划分到目标区。因此, 边界就由这样一些内部点的集合组成, 这些点都至少有一个邻点不属于该物体。 由于物体和背景以及不同物体之间的灰度级有明显的差别, 因此, 在图像的灰度级直方图中会呈现明显的峰值。当图像灰度直方图峰型分布明显时, 常以谷底作为门限候选值。所以只要适当地选择阈值, 即可对图像进行分割, 因而成为一种简单而广泛应 用的方法。 1.3 otsu算法 otsu算法,又称最大类间方差法,是由日本学者大津(nobuyuki otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称otsu。它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。 设x是一幅具有l级灰度级的图像,其中第i级像素为个,其中i的值在0~l-1之间,图像的总像素点个数为: (1) 第i级出现的概率为: (2) 在otsu算法中,以阈值k将所有的像素分为目标和背景两类。其中,类的像素灰度级为0~k-1,类的像素灰度级为k~l-1。 图像的总平均灰度级为: (3) 类像素所占的总面积的比例为: (4) 类像素所占的总面积的比例为: (5) 类像素的平均灰度级为: (6) 类像素的平均灰度级为: (7) 其中, (8) (9) 最大类间方差的公式为: (10) 令k从0~l-1变化,计算在不同k值下的类间方差,使得最大值时的那个k值就是所要求的最优阈值。 1.4 迭代法 迭代法的原理是:图像中前景与背景之间的灰度分布为相互不均衡,在这个前提下,实现对两类对象的阈值分割。其算法步骤如下: (1) 设定参数,选择一个t的初始阈值估计值。 (2) 用分割图像。将图像分成两组像素:由所有灰度值大于的像素组成,而的所有灰度值小于或等于的像素组成。 (3) 对区域和中的所有像素计算平均灰度值和。 (4) 计算新的阈值:=(+)/2. (5) 如果,则推出,即所求的全局阈值;否则,将赋给,重复步骤(2)~(5)。 2 程序设计 程序除了有题目中要求的自编程序实现最大类间方差法外,还扩展了手动输入阈值进行分割和迭代法阈值分割,功能较多,为了使程序有良好的人机界面,主程序中提供了简单的菜单界面。同时为了增加程序的可读性,分模块编写,然后在主函数中调用。 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法 fun1(i); case 2 %输入2 全局阈值法 fun2(i); case 3 fun3(i) %输入3 迭代法 case 4 return; %输入4 退出 otherwise %其他值不处理 end end 2.2 otsu 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) %显示结果 %调用系统函数otsu阈值分割 level=graythresh(i);%调用系统函数计算阈值 bw2=im2bw(i,level); %阈值分割 figure imshow(bw2),title(调用库函数运行结果) level=round(level*255); disp(调用库函数求得的阈值:) disp(level) 2.3 全局阈值 function fun2(i) %阈值分割程序 [width height]=size(i);;%获取图片宽高 th=input(请输入阈值:); for i=1:width for j=1:height if(i(i,j)t); %找出大于t的所有像素点索引值 tnew=(mean(j(r1))+mean(j(r2)))/2; %计算新的阈值 done=abs(tnew-t)<1; %判断|t2-t1|是否小于t0 t=tnew; i=i+1; end j(r1)=0; %小于等于阈值的为黑 j(r2)=1 ; %大于阈值的为白 figure imshow(j),title(迭代法求阈值) function yuantu(i) %显示原图 figure imshow(i);title(原图) 3结果与分析 将程序文件名保存为main.m,以下为matlab主窗口运行的过程与结果 图1 命令窗口运行结果 图2 原图 以下为不同的算法得到的阈值分割结果 图3 全局阈值 图4 迭代法 图6 系统函数运行结果 图5 自编程序运行结果 结果分析:调用系统函数与自编的程序求得的阈值一样,处理的结果完全一样。手动输入阈值分割的话只要输入的阈值和otsu算出的阈值一样,处理结果就完全一样。另外采用迭代法,通过多次用不同的图片处理发现算出的阈值和最大类间方差法基本一样,但有时会有误差,处理结果基本一样。 4 心得体会 经过两周的努力努力,总算把专业综合课程设计做完了。 通过该课程设计,全面系统的理解了数字图像处理的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的数字图像处理基础原理的知识强化,能够把课堂上学的知识通过自己编写的程序表示出来,加深了对理论知识的理解。 在这次课程设计中,我先是认真阅读课本上的相关知识,理解透后又翻阅关于matlab的书籍,学习matlab中一些函数及运算符的用法。总体来说,这次课设我学到了很多。在设计过程中,加深了对可内知识的理解就,真正懂得了学以致用,熟悉了matlab的使用,了解了matlab在数字图像处理中的重大应用。做课程设计我体会到了设计的艰辛的同时,更让我体会到成功的喜悦和快乐. 这次数字图像处理课程设计,虽然短暂但是让我得到多方面的提高: 首先,提高了我们的对matlab语言的运用能力。以前也曾用matlab做过课程设计,但以前写的程序既没有人机交互功能,这次课程设计首次运用模块化思想,将多个功能分模块编写,然后通过主函数调用,并且有一定的人机交互。matlab程序设计中也有顺序、选择、循环三种结构,这一点和c语言很像。 其次,掌握了数字图像的原理及运用matlab进行图像处理的方法。通过matlab中提供的图片读取函数可以将一幅黑白图片转换为二维数组,然后运用c语言里掌握的编程思想和图像处理的原理,就能编写出相应程序。以前用过photoshop之类的软件进行过图像处理,但未能理解数字图像处理的本质。通过此次课程设计,能够自己编写函数来进行图像处理,有一种成就感。 最后,查阅参考书和资料的独立思考的能力以及培养非常重要。matlab我们在设计程序时,遇到很多不曾用过的函数,如im2bw。一方面我们可以查看教材和参考书,另一方面通过网络为我们提供了丰富的学习资源,我们可以快速的在网上查到某个函数的详细用法说明,还能找到很多别人的程序。 参考文献 [1]邱光源,电路,高等教育出版社,2005 [2]张强, 王正林,精通matlab图像处理,电子工业出版社,1997 [3]吴锡龙,电路分析,高等教育出版社,2004 [4]陈怀琛,matlab及其在课程中的应用指南,西安电子科技大学出版社,2000 [5]朱习军,matlab在信号与系统与图象处理中的应用,电子工业出版社,2002 11
内容简介:
-
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:图像OTSU阈值分割的程序设计
链接地址:https://www.renrendoc.com/paper/93206906.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!