图像分割
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三图像分割
一、实验目的
1、掌握图像分割的基本概念;
2、基本了解图像分割的原理和方法;
3、掌握用阈值法进行图像分割的基本方法。
二、实验原理及知识点
图像分割是将图像划分成若干个互不相交的小区域的过程,小区域是某种意义下具有共同属性的像素的连通集合。如不同目标物体所占的图像区域、前景所占的图像区域等。连通是指集合中任意两个点之间都存在着完全属于该集合的连通路径。
图像分割是图像处理与机器视觉的基本问题之一。图像分割的一个难点在于,在划分之
前,不一定能够确定图像区域的数目。
设图像 f(x,y)的灰度范围属于[z1,z2],根据一定的经验及知识确定一个灰度的门
限,或者根据一定准则确定[z1,z2]的一个划分 z1,z2,其中 z1 代表目标,z2 代表背
景。根据像素的灰度属于这个划分的哪个部分来将其分类,称为灰度阈值分割法,即:
如果 f(x,y)属于 z1,
判断(x,y)像素属于目标。如果 f(x,y)属于 z2,则判断(x,y)像素属于背景。
分割门限选择的准确性直接影响分割的精度及图像描述分析的正确性。门限选得太
高,容易把大量的目标判为背景,定的太低又会把大量的背景判为目标。因此正确分割
门限是很重要的。
1、双峰法
如果图像所含的目标区域和背景区域大小可比,而且目标区域和背景区域在灰度上有一定的差别,那么该图像的灰度直方图会呈现双峰—谷状,如下图所示:其中一个峰值对应于目标的中心灰度,另一个峰值对应于背景的中心灰度。由于目标边界点较少且其灰度介于它们之间。所以双峰之间的谷点对应着边界的灰度,可以将谷点的灰度作为分割门限
图 3.1 双峰图
2、自适应全局阈值(单阀
值)
迭代平均法:
为 T 选取一个初始估计
使用 T 分割图像。这时产生两组像素:灰度值>=T 的所有像素组成的 G1,和灰
度值 计算 G1 和 G2 范围内像素的平均灰度值u1 和 u2 计算新阈值 T=(u1+u2)/2 重复上述步骤,直到迭代中前后两次的阈值差小于预先设定参数为止 3、最大类间方差法 (Otsu) 在对图像进行阈值分割时,选定的分割阈值应使前景区域的平均灰度、背景区域的平均灰度与整幅图像的平均灰度之间差别最大,这种差异用区域的方差来表示。由此,Otsu 在 1978 年提出了最大方差法。该算法在判决分析最小二乘法原理的基础上推导得出,计算过 程简单是一种稳定、常用的算法。该方法不需要人为设定其他参数,是一种自动选择阈值的方法,而且能得到较好的结果。它不仅适用于包含两个区域的单阈值选择,也同样适用于多区域的多阈值选择。 三、实验仪器与软件 1、PC 计算机 2、MatLab 软件/语言包括图像处理工具箱(Image Processing Toolbox) 3、实验所需要的图片 四、实验内容及步骤 1、双峰法阈值分割 对“rice.bmp”图像进行分割,令T取不同值,重做实验,观察实验结果。参考程序如下clear all, close all; I = imread('rice.bmp'); figure (1),imshow(I) figure(2); imhist(I) T=120/255; Ibw= im2bw(I,T); %选择阈值 T=120/255 对图像二值化; figure(3);imshow(Ibw); 2、迭代平均法进行全局阈值图像分割 Clear all; f=imread('pic.jpg' ); f=rgb2gray(f); T=240; done=false; while ~done g=f>= T; Tnext=0.5*(mean(f(g))+mean(f(~g))); done=abs(T-Tnext)<0.5; T=Tnext; end b=im2bw(f,T/25 5); imshow(b) 3、Otsu 阈值法 查阅帮助中 graythresh 命令的用法,阐述 OTSU 方法的原理 利用 graythresh 命令实现图像阈值分割,并比较 OTSU 方法和迭代平均法的差异阐述以上迭代平均法和 OTSU 方法的适用范围 五、实验结果 clear all, close all; I = imread('rice.bmp'); figure (1),imshow(I) figure(2); imhist(I) T=120/255; Ibw= im2bw(I,T); figure(3);imshow(Ibw); T=0.1 T=0.9 f=imread('pic.jpg'); figure (1);imshow(f); f=rgb2gray(f); T=240; done=false; while ~done g=f>=T; Tnext=0.5*(mean(f(g))+mean(f(~g))); done=abs(T-Tnext)<0.5; T=Tnext; end b=im2bw(f,T/255); figure (2);imshow(b);