本科毕业论文(设计)
题目:
基于MATLAB的数字图像分割的研究与实现学 院:计算机与信息工程学院 学生姓名: 学 号: 专 业: 年 级: 完成日期: 2012年04月 指导教师:
基于MATLAB的数字图像分割的研究与实现
摘要:视觉和听觉是我们认识和感知外部世界的主要途径,而视觉又是其中最重要的,
因此要想更细致、全面地把握这些图像信息就需要对其进行必要的处理。在数字图像处理的研究和应用中很多时候我们只对图像的某些部分和特征感兴趣,此时就需要利用图像分割技术将所需的目标与图片的其他部分区分开,以供我们对图像进一步研究和分析。图像分割即通过一些必要的算法把图像中有意义的部分或特征提取出来,将图像分为若干有意义的区域,使得这些区域对应图像中的不同目标,进而能够对所感兴趣的区域进行研究。基于图像分割技术在图像处理之中的重要性,本研究在此对图像分割的一些经典算法进行了学习和对比,并通过MATLAB对其进行了实验,通过不同的算法对不同的图片进行处理,分析其优缺点,以便在进行图像分割时可以根据图片的特征选择合适的算法。
关键字:数字图像;分割;MATLAB
I
The Research and Implementation of Digital Image
Segmentation Based on the MATLAB
Abstract : Vision and auditory are the main ways which we use to understand and
perceive the world outside, while vision is the most important. Therefore, it's require to process the image data to grasp them more painstaking and completely. In digital image processing of research and application we are only interested to some parts of the image and characteristic in many times, then you need to use the image segmentation technology to separate the goal and the picture for other parts for our further research and analysis of the image.Image segmentation is dividing the image into some significant areas through some necessary algorithms, then make these areas corresponding to different goals and we can do some research about the areas we are interested to. Based on the importance of image segmentation technology in image processing, I compared several classical algorithms of image segmentation. In the meanwhile, I used the MATLAB to do some research and to process the various images with different algorithms so that it's convinent to find the advantages of these algorithms. Then, I can base on the characteristics of the images to choose the suitable algorithms when to make some digital image segmentation.
Key words : Digital Image; Segmentation; MATLAB
II
目 录
1 绪论...................................................................................................................................... 1
1.1 图像分割的研究背景................................................................................................ 1 1.2 图像分割的基本原理................................................................................................ 1 2 图像处理与MATLAB ........................................................................................................ 2
2.1 MATLAB处理的图像格式与类型 ........................................................................... 2 2.2 MATLAB的界面 ....................................................................................................... 3 2.3 MATLAB图像的基本操作 ....................................................................................... 5 2.3.1 图像文件信息的查询 ......................................................................................... 5 2.3.2 图像文件的读取 ................................................................................................. 5 2.3.4 图像文件的写入 ................................................................................................. 5 2.3.5 MATLAB图像工具箱中的图像显示函数 ........................................................ 6 3 阈值化分割.......................................................................................................................... 7
3.1 双峰法........................................................................................................................ 7 3.1.1 数学推导 ............................................................................................................. 7 3.1.2 双峰法图像分割示例 ......................................................................................... 7 3.2 自动选择法................................................................................................................ 9 3.2.1 自动选择法推导过程 ......................................................................................... 9 3.2.2 迭代法图像分割 ............................................................................................... 10 3.2.3 最大类间方差法图像分割 ............................................................................... 10 4 区域化分割........................................................................................................................ 11
4.1 区域生长分割算法.................................................................................................. 11 4.1.1 区域生长法简介 ............................................................................................... 11 4.1.2 区域生长法的MATLAB程序与分割操作 .................................................... 12 4.2 分裂合并分割算法.................................................................................................. 14 4.2.1 分裂合并分割算法简介 ................................................................................... 14 4.2.2 分裂合并法的MATLAB程序与分割操作 .................................................... 15 5 图像分割算法的评价........................................................................................................ 16
5.1 图像分割算法评价概述.......................................................................................... 16 5.2 图像分割算法评价方法和要求.............................................................................. 16
1
5.3 本文算法分析与评价.............................................................................................. 17 6 总结.................................................................................................................................... 22 参考文献................................................................................................................................ 23 致谢........................................................................................................ 错误!未定义书签。
2
1 绪论
1.1 图像分割的研究背景
在一幅目标图像下,人们往往只是关注其中的一个或者几个目标,而这些目标必然会占据一定的区域,并且与周围其他目标或背景在一些特征上会有相应的差别。但是,很多时候这些差别会非常的细微,以至于人眼很难发觉,这就需要用一定的技术对图片做一些处理。而计算机图像处理技术的发展,很好地解决了这一难题,使得人们可以利用计算机技术来协助理这些信息,例如指纹识别、车牌识别以及医学影像的鉴别操作等方向。
图像分割是图像识别的基础,其通过一些必要的算法把图像中有意义的部分或特征提取出来,将图像分为若干有意义的区域,并形成数字特征,这些区域对应图像中的不同目标。这些具有某种特征的单元成为图像的基元,这种经过处理的基元更容易被快速处理。
目前,数以千计的研究文献和文章提出了许许多多的图像分割算法,不同种类的图像、不同的应用要求和应用领域所需要提取出的图像特征是不相同的,所以并不存在普遍适用的最优方法,只能根据图像特征选择与值相适应的方法。 1.2 图像分割的基本原理
图像分割是根据图像的直方图和结构特性或者一些具体的应用需求将图像划分成两个或多个互不相交的子区域的过程,这些子区域是在特定意义下的具有相同属性的像素的连通集合。例如,一幅图像中不同目标物体所占的图像区域、背景所占的背景区域等都属于这样的连通集合概念。
对图像分割的定义有多种不同的解释,人们普遍接受的是通过集合定义的图像分割。用集合R表示整个图像区域,那么对整个图像的分割可以等价于将集合R分成n个满足以下准则的区域:
(1)R1R2R3...RnR;
(2)i,当i1,2,3, ,n时,Ri是相连的;(3)对i,j ij,有RiRj;
false; (4)对i,j ij,有P(RiRj),2,3,,n,P(Ri)true。 (5)对i1目前提出的图像分割方法很多,在此分为三种不同的途径对其进行分类: (1)以物体的的边界为对象进行分割;
(2)先检测边缘像素,再将边缘像素连接起来形成分割;
1
(3)以区域为对象进行分割,根据图像的灰度、色彩、变换关系或组织结构等方面的特征相似性来划分图像的子区域并将各像素划分到特定区域。
上述这些方法是互补的,不同的场合使用不同的方法,或者综合各个方法已达到最佳的分割效果。 2 图像处理与MATLAB 2.1 MATLAB处理的图像格式与类型
图像格式是指图像文件常用的存储格式,下面是几种MATLAB常用并支持的图像格式以及数据类型,见下表2.1所示。
表2.1 MATLAB支持的几种图像格式及数据类型
格式 bmp 数据类型说明 非压缩图像:1bit、4bit、8bit、16bit、24bit、32bit 行程长编码图像:4bit、8bit cur gif ico jpg 非压缩图形:1bit、4bit、8bit 1~8bit 非压缩图像:1bit、4bit、8bit 图像类型 灰度图像 灰度图像 真彩色图像 位数 8bit、12bit 8bit、12bit、16bit 24bit、36bit 压缩 有损压缩 无损压缩 有损压缩和无损压缩 或 jpeg tif 非压缩图形:1bit、8bit、24bit packbits压缩图像:1bit、8bit、24bit CCITT压缩图像:1bit 灰度图像:16bit 索引图像:16bit 真彩色图像:48bit 或 tiff png 灰度图像:1bit、2bit、4bit、8bit、16bit 索引图像:8bit、16bit 真彩色图像:24bit、48bit 另外,MATLAB支持的图像类型可分为5种,分别为:二值图像、灰度图像、索引图像、RGB图像以及多帧图像阵列。
2
2.2 MATLAB的界面 1 Command Window窗口
Command Window窗口是MATLAB界面中的重要组成部分,利用该窗口可以和MATLAB进行交互操作,即进行数据和命令的输入以及相应的运算。该窗口不仅可以内嵌在MATLAB工作界面,而且还可以单击该窗口以及在该窗口进行的一些运算。
按钮使其独立地浮在界面上。图2.1是
图2.1 Command Window窗口
2 Workspace窗口
Workspace窗口是MATLAB中用于存储各种变量和结果的内存空间,与命令窗口一样,既可以内嵌在MATLAB的中作界面中,又可以独立的浮动在界面上,如图2.2所示为浮动的窗口。
图2.2 Workspace窗口
3
在使用过程中该窗口显示工作窗口中所有变量的名称、取值和变量类型说明,可以对变量进行编辑、观察、保存和删除等操作。 3 Command History窗口
Command History窗口主要用来显示已执行命令。MATLAB每次启动时,该窗口都会记录启动时间,并将Command Window窗口中的命令记录下来,窗口如图2-3
图2.3 Command History窗口
4 Current Directory窗口
Current Directory窗口主要显示当前在什么路径下进行的工作,包括文件的保存等都是在当前路径下实现的。用户可以使用【File】菜单下的【Set Path】命令设置当前路径,Set Path窗口如图2.4所示。
图2.4 Set Path窗口
4
2.3 MATLAB图像的基本操作 2.3.1 图像文件信息的查询
在MATLAB中,可以使用imfinfo函数来获取图像处理工具箱所支持的各类格式图像信息。该函数语法格式为:
info=imfinfo(filename,fmt) info=imfinfo(filename) info=imfinfo(URL,...) 说明:
info=imfinfo(filename,fmt)返回一个结构info,它反映了该图像各个方面的信息,参数fmt对应于所有图像处理工具箱所支持的图像格式,并且可以省略fmt这一参数。
info=imfinfo(URL,...)用于读取Internet上的图像信息。 2.3.2 图像文件的读取
MATLAB进行数字图像处理时,利用imread函数来完成图像的读取,该函数常用语法格式如下:
A=imread(filename,fmt):用于读取由filename指定的图像数据到数组A,fmt对应于图像文件格式。若图像为灰度图像,数组A大小为M×N,若为彩色图像,则大小为M×N×3;
[X,map]=imread(filename,fmt):读取由filename指定的索引图像数据到数组X,并将图像颜色表写入map中;
[...]=imread(URL,...):用于读取从Internet上超链接的图像,URL必须包含协议的类型,例如http://;
[...]=imread(...,'frames',idx)(适用于GIF):用于读取GIF文件中第idx个图像帧,idx可以取值为'all';
[...]=imread(...,ref)(适用于HDF):用于读取包含多帧图像的HDF格式图像的第ref帧图像,默认值为1。 2.3.4 图像文件的写入
使用MATLAB进行图像处理时,根据需要有时要求我们对处理后的结果图像进行保存,MATLAB提供了imwrite来提供该操作,常用的格式有以下几种:
imwrite(A,filename,fmt):用于将图像A写入到名为filename、格式为fmt的图像文件中;
5
imwrite(X,map,filename,fmt):用于将索引图像以及与之相关的颜色映射map写入到名为filename、格式为fmt的图像文件中;
imwrite(...,filename):用于将图像写入达到filename的文件中,文件格式由文件名的拓展名决定,扩展名为MATLAB所支持的格式。 2.3.5 MATLAB图像工具箱中的图像显示函数
MATLAB工具箱中提供了imshow和imview两个函数来进行图像的显示。 1 imshow函数
调用该函数来显示一幅数字图像时,将自动设置图像的窗口、图像的坐标轴和图像属性,imshow函数常用的语法格式为:
imshow(I,n):利用n个灰度等级来显示一幅灰度图像I,n忽略时,24位显示系统默认为256,其他显示系统默认为64;
imshow(I,[low hight]):显示灰度图像I并指定I的数据范围。I的数据中小于或等于low的像素值被设为黑色,大于等于high的像素值被设为白色;
imshow(BW):用于显示二进制图像BW,图像中像素值为0的用黑色表示,像素值为1的用白色表示;
imshow(X,map):用于显示颜色映射表map的图像X; imshow(RGB):用于显示真彩色图像RGB;
imshow(x,y,A,...):利用二维向量x、y建立一个空间坐标系统;
imshow filename:用于显示存储在图形文件中文件名为filename的图像文件。 2 imview函数
Imview是一个在图像阅览器中显示图像的函数。图像阅览器可以在窗口中显示一幅数字图像并提供图像的大小信息、像素值的范围、光标所指像素的坐标和像素值的信息等。其语法格式如下:
imview(I):显示灰度图像I;
imview(RGB):显示真彩色图像RGB;
imview(X,map):显示图像像素映射表为map的索引图像X;
imview(I,range):显示灰度图像I,参数range是一个二维向量[low high],用于控制显示图像有黑到白的区域;
imview(filename):用于显示指定文件夹下图像名为filename的图像文件; imview close all:用于关闭所有的图像浏览器。
6
3 阈值化分割
阈值分割的基本原理为:利用一定的方法,设定不同的阈值,把图像的像素点分到若干不同的区域中。阈值分割是一种比较简单有效的图像分割方法,该方法利用一个或多个阈值将图像像素分为不同的灰度级分,将属于同一灰度级的像素划分为相同的区域。根据求阈值的不同,可以分为双峰法、迭代法以及最大类间方差法。 3.1 双峰法
双峰法即人工选择法,通过人眼对图像直方图的观察,选出合适的阈值。 3.1.1 数学推导
假定图像由具有不同灰度级的目标背景组成,图像的灰度分布曲线可以近似地认
22为有两个正态分布函数1,1和2,2叠加而成,则图像会出现具有双峰的分布特性的直方图,该特性可以用图3.1表示。 OP图3-1 具有双峰分布的直方图图3.1 具有双峰分布的直方图
如图3-1,选择双峰直方图的波谷处,设其灰度级为P,则可以将图像分为两部分,即可以表示为:
t0f(x,y)Pg(x,y)
tf(x,y)P1白色)。 其中,P为分割阈值,结果图像的灰度级取t00(黑色)、t11(若为多个阈值,则:
t0f(x,y)P0tPf(x,y)P1g(x,y)10
tkPk1f(x,y)Pk3.1.2 双峰法图像分割示例
利用双峰法进行图像分割,首先要查看图像直方图的分布情况,即在MATLAB中
7
执行下述程序,来观察所需分割图像的直方图:
clear all
I=imread('细菌.jpg'); figure(1); imshow(I);
title('原始图像'); figure(2); imhist(I);
title('直方图');
axis([0 255 0 2000]);
执行结果如图3.2所示。
图3.2 原图与直方图
观察上述直方图可以选择阈值为30,执行下述分割程序: th=30;
J=im2bw(I,th/255); figure(3); imshow(J);
title('分割结果');
分割结果如下图3.3所示。
图3.3 双峰法分割结果
8
3.2 自动选择法
自动选择法通常根据图像直方图所呈现出的特性来分析图像灰度值的分布情况。 3.2.1 自动选择法推导过程
1 迭代法
双峰发对于目标区域和背景区域像素的分布区域有明显区别是容易使用,对于不明显的图像阈值选择需要进行改进,而迭代法正式基于这种要求产生的。
迭代法可以利用一定的算法原理来完成阈值的自动选取操作,并能根据所选取的阈值进行分割操作,其具体实施步骤如下:
(1)选择一个初始阈值P,可利用图像像素的最大灰度和最小灰度来选择; (2)利用选择的阈值P对图像进行分割分为大于P和小于P两部分; (3)计算两个区域的灰度均值1和2;
(12)。
(4)计算新阈值p22 最大类间方差法
最大类间方差法的计算方法为:
根据灰度级,确定阈值T,就可以把一幅数字图像f(x,y)的像素点分为两个类中,其中图像灰度的最小值、最大值分别表示为Zmin和Zmax则可以把图像表示为:
fminf(x,y)Tf(x,y)
Tf(x,y)fmax图像总的像素为:NNi,则各灰度出现的概率为,P(i)iNiN
假设两个区域分别为A,B,则区域A出现的概率为:PA均值为:AifminP(i),
TifminiP(i)PfmaxT
A则区域B出现的概率为:PB均值为:BiT1P(i)
TfmaxfmaxiT1iP(i)P
B图像f(x,y)的均值为:ifminiP(i)iP(i)iP(i)PAifminiT1fmaxAPBB
两个区域的方差为 :2(T)PA(A)2PB(B)2
最大类间方差法是把两类的类间方差作为阈值的选择标准,使得类间方差2(T)最大的T则为最佳阈值。
9
3.2.2 迭代法图像分割
使用MATLAB利用迭代法进行图像分割操作时,根据之前原理的描述,需要编写以下程序代码:
clear all
I=imread('细菌.jpg'); tmin=min(I(:)); tmax=max(I(:)); th=(tmin+tmax)/2; ok=true; while ok
g1=I>=th;
g2=I
th=floor(th);
J=im2bw(I,th/255); subplot(1,2,1); imshow(I);
title('原始图像'); subplot(1,2,2);
str=['迭代分割阈值:阈值Th=',num2str(th)]; imshow(J); title(str);
将以上程序输入MATLAB命令窗口,得到如下图3.4的分割结果。
图3.4 迭代法分割结果
3.2.3 最大类间方差法图像分割
MATLAB的库函数中直接提供了最大类间方差法的阈值分割grayhresh函数,语法格式为:level=graythesh(I)
10
使用MATLAB进行图像分割时,需要的程序如下: clear all
I=imread('细菌.jpg') th=graythresh(I); J=im2bw(I,th); th=255*th; subplot(1,2,1); imshow(I);
title('原始图像'); subplot(1,2,2);
str=['最大类间方差法分割结果:TH=',num2str(th)]; imshow(J); title(str);
程序执行后的分割结果如下图3.5所示。
图3.5 最大类间方差法图像分割结果
4 区域化分割 4.1 区域生长分割算法 4.1.1 区域生长法简介
区域生长是从图片的一个像素出发,即选取一个种子像素,比较与之相邻的像素之间的相似性,将与种子像素在灰度、边缘、纹理等特征具有相似属性的像素归并到同一个区域,然后再将这些像素点作为新的种子像素继续上述归并过程,直到查找不到满足条件的像素为止,从而完成对一幅图片的分割操作。
区域生长算法具体描述如下:
(1) 选取图像目标区域内一点作为种子像素点(x0,y0);
(2) 以(x0,y0)为中心,与(x0,y0)的邻域像素(x,y)进行比较,如果(x,y)满足选定的生长准则,则将(x,y)与(x0,y0)合并;
(3) 再将归并的像素点(x,y)作为新的种子像素点(x0,y0),继续步骤(2)的操作; (4) 当满足区域生长的停止条件时,结束操作,完成分割算法。
11
其中,生长准则是评价种子像素与其邻域像素点的相似程度的判断准则;根据设定不同的阈值来确定停止条件,停止条件的选择对分割结果的精确度有至关紧要的作用,在利用区域生长法进行图像的分割时,要根据具体的图像特征来选择合适的生长停止条件。
利用图形形象的表示区域生长法原理如下4.1所示。
54536343a)8262817154446444b)8262817144444444c)84448171a) 原始图像和种子点 b) 阈值T=1 c) 阈值T=2
图4.1 区域生长
4.1.2 区域生长法的MATLAB程序与分割操作 1 MATLAB程序
(1)先编写区域生长法的算法程序,并保存在MATLAB的m文件中,程序如下: function Yout=regiongrow(I,seed,th_mean) [M,N]=size(I); L=size(seed); Yout=zeros(M,N); for i=1:L
Yout(seed(i,1),seed(i,2))=1; end
for i=1:L
sum(i)=I(seed(i,1),seed(i,2)); end
seed_mean=mean(sum); ok=true; s_star=1; s_end=L; while ok ok=false;
for i=s_star:s_end x=seed(i,1); y=seed(i,2);
if x>2&&(x+1) seed=[seed;[x+u,y+v]]; 12 end end end end end s_star=s_end+1; L=size(seed); s_end=L; end (2)对上述m文件保存为regiongrow.m格式,编写区域生长的主程序并调用上述regiongrow算法: clear all I=imread('细菌.jpg'); figure(1); imshow(I); title('原始图像'); I=double(I); [y1,x1]=getpts; x1=round(x1); y1=round(y1); seed=[x1,y1]; th_mean=40; Yout=regiongrow(I,seed,th_mean); figure(2); imshow(Yout); title('区域生长分割'); 2 分割结果图 执行程序时,首先在figure1窗口选择需要的种子点选择,在此选择中间的大个细菌作为示例,其中选择不同的阈值th_mean会得到不同的分割结果,当th_mean=40时分割结果如图4.2所示。 图4.2 区域生长法分割效果(th_mean=40) 当th_mean=70时,得到的分割结果如图4.3所示。 13 图4.3 区域生长法分割效果(th_mean=70) 由图4.2和图4.3可以发现,当选择th_mean=70时,分割效果已经很好,当选择更大的th_mean时,会归并更多的像素,即有可能将背景像素归到目标区域中,进而影响分割准确性,所以,要根据图片特点选择合适的th_mean值。 4.2 分裂合并分割算法 4.2.1 分裂合并分割算法简介 分裂合并分割算法的原理是根据图像数据的四叉树的层次结构来将图像划分成几个不相交的区域,然后从这个结构中的任何一个区域开始,依照一定的准则来分裂、合并这些区域。当一个区域中的数据特征不满足这一准则时,则对这一区域继续进行分裂操作,直至相邻的区域之间满足一定的特征时,分裂结束,进行合并。 分裂合并分割算法中经常使用的方法就是四叉树分解法,令R表示整个图像区域,如果P(Ri)false,则将图像分成四个区域,如果有任何一个区域依然有P(Ri)false,怎讲这个继续分割为四个区域,以此类推直到Ri为单个像素。四叉树分解法可以用下图4.4的示意图表示。 RR1R2R1R41R42R3R43R44aR4R41R41bR43R44 R2R3R4a) 图像分割示意图 b) 四叉树表示 图4.4 四叉树分解示意图 如图4.5所示,假设图中灰色区域为我们所需要的目标区域,白色为背景区域。 14 对整个图像P(Ri)false,令P(Ri)ture表示该区域中所有像素均具有相同的灰度值。所以根据以上条件先将图(a)分割成四个区域,此时右上角的区域满足P(Ri)ture,所以不再进行分割,而其他区域继续进行分割操作,直至分割的每个子区域均满足条件,则分裂停止,进行合并。 (a) 原图像 (b) 分裂过程1 (c) 分裂过程2 (d) 分裂过程3 图4.5 区域分裂与合并分割法图解 根据四叉树分解示意图,MATLAB中提供了三种函数来实现这一规则。具体操作步骤是,首先将图像分成四个小区域,然后根据一定的准则判断各个区域是否具有特定的相似性,不满足则进行进一步的分裂,直至分裂的每一小块都达到一定的相似准则,再对各个区域进行合并。 qtdecomp函数用于对图像进行四叉树分解; qtgeblk函数用于经过四叉树分解后的各个区域的图像信息; qtsetblk函数用于设定分解区域的灰度值。 4.2.2 分裂合并法的MATLAB程序与分割操作 对数字图像进行分裂合并分割的MATLAB程序为: clear all I=imread('细菌.jpg'); S=qtdecomp(I,.2); blocks=repmat(uint8(0),size(S)); for dim=[512 256 128 64 32 16 8 4 2 1]; numblocks=length(find(S==dim)); if(numblocks>0) values=repmat(uint8(1),[dim dim numblocks]); values(2:dim,2:dim,:)=0; blocks=qtsetblk(blocks,S,dim,values); end end blocks(end,1:end)=1; blocks(1:end,end)=1; figure(1); subplot(1,2,1); imshow(I); title('原始图像'); subplot(1,2,2); imshow(blocks,[]); 15 title('分解图像'); 对细菌图像进行分割后的结果图为图4.6所示。 图4.6 细菌图像的四叉树分解 5 图像分割算法的评价 5.1 图像分割算法评价概述 尽管已经有了很多种分割算法,而且该技术也在不断地发展中,但是迄今为止仍然还没有一种通用的分割算法,绝大部分分割算法通常有一定的使用范围。而对于某个具体实际图像,为了得到满意的分割结果,通常会面临一个如何选择合适的分割算法的问题,特别是对分割算法不是很了解的情况下,这时就需要参考分割算法的一些性能指标来进行选择。这就是分割算法中的评价问题。尽管很多文献与著作在分割算法的评价方面已有了较深入的研究,但是迄今为止还没有一个通用的客观评价标准,在这个方面就需要我们做出进一步的努力。在做图像处理时要求我们根据不同的要求选择合适的分割算法,因此对不同分割算法作一个比较客观的评价是必需的。 5.2 图像分割算法评价方法和要求 图像分割算法的评价可以有一下这些情况: (1)性能刻划。即同一分割算法在不同的图像情况下,分割的性能比较。 (2)性能比较。比较不同的分割算法在对同一个图像进行分割时,分割性能的比较。 对分割评价算法的一般要求包括:评价算法的通用性、评价算法的复杂性、可靠性,是否需要参考图和是否需要人工参考等。一般通过分析和实验两种方式对分割算法进行客观评价。所以一个客观的评价方法可分为分析与实验方法两类。 1 分析法 分析法对图像的原理和性能进行直接分析。该算法的原则是指所采用的分析方法和理论,经常采用先进的理论方法将得到更精确的结果。虽然分析方法能避免某些因素, 16 但缺乏分割结果的支持,具有较大的局限性,通过分析分割结果的实际评价分割算法具有实际意义。分析方法通常提供辅助信息,它很少单独使用。 2 实验评价方法 实验法是比较不同算法的分割结果,对分割结果图像进行评价的。在实际应用也是经常使用中这种评价方法。实验方法是对测试图像分割结果进行评估,实验方法所提出的评价方法,一般可分为优化方法和偏差的方法。优化方法是基于一般人的一些视觉图像特征为依据来评估分割效果;偏差的方法通常需要提供一个理想的分割图像作为比较标准,根据计算实和理想分割图像分割效果的差异,但可供比较的形象往往难以统一样本。 5.3 本文算法分析与评价 本文中介绍了两种不同的分割算法,分别为阈值化分割和区域化分割,其中阈值分割算法又有三种不同的求阈值方法分别为双峰法、迭代法和最大类间法;区域化分割又包括区域生长法和分裂合并法。 其中各自的适用范围如下: (1)双峰阈值算法适合直方图呈现明显双峰特性的图像,在进行图像分割之前先进行一步对图像的求直方图操作,根据直方图所体现的特性找出谷点即为所需要的阈值,在直接给阈值th赋值为该谷点的值利用函数im2bw进行分割。 但是,很多时候图像的直方图并不能体现出明显的双峰特性,这时候找到的谷点值就不能很好地把目标图像分割出来,会把大量的目标像素归为背景或者把大量的背景元素归为目标,这样则会是分割的准确性下降,进而影响对图像下一步的处理操作。 例如对lena图像进行双峰法的阈值分割过程与结果如下: 先对其进行求直方图操作,结果如下图5.1所示。 图5.1 lena图像的直方图 17 lena的直方图特点如上,如果利用双峰法进行分割则需要确定阈值,若选择阈值th=60,进行分割结果如图5.2所示。 图5.2 阈值th=60分割结果 图5.3 阈值th=90分割结果 若选择阈值th=90,进行分割的结果如上图5.3所示。 由图5.2与图5.3可以看出,图5-3显示的当th=90时的分割效果就比th=60时的分割效果要好,但是两个不同阈值的效果都没有达到理想的分割结果,即未能把目标图像很好地分割出来。 可以得出结论:如果图像的直方图没有呈现明显的双峰特性,那么利用双峰法进行的分割结果就不准确,即双峰法适合对一些背景简单、直方图具有双峰特性的图像来进行分割。 (2)有些时候,图像直方图呈现一定的双峰特性,但是并不能直观、准确的观察出图像的阈值特点,这就需要利用一定的算法实现自动选取阈值,迭代法就是在这个方面对双峰法的改进,该方法可以完成阈值的自动选取。 例如对之前lena图像进行分割,如果使用迭代法分割结果如下5.4所示。 图5.4 迭代法对lena图像进行分割 再对cameraman图像的分割示例: 首先,求出该图像的直方图,结果为图5.5所示。 18 图5.5 cameraman的直方图特性 如利用双峰法选择阈值th=60,进行的分割结果如图5.6所示 图5.6 对cameraman选择阈值为60进行分割结果 而利用迭代法进行的分割结果如图5.7所示。 图5.7 迭代法分割结果 比较图5.6与图5.7能发现迭代法分割的效果就比双峰法分割效果要更准确,例如,迭代法就把图片的下半部分很好的分割了出来。 可以得出结论:对于那些具有一定的双峰特性但又不是能明确观察出阈值的图像就要求我们利用迭代法来进行分割,即迭代法是对双峰法的改进。 (3)MATLAB中提供了一种最大类间方差阈值分割的阈值函数graythresh,用法 19 为:th=graythresh(I),I可以使uint8、uint16或者是double型的图像。该分割算法能根据不同的图像调用graythresh函数来获得最佳阈值,选择lena图像进行示范,结果如图5.8所示。 图5.8 最大类间方差法图像分割 对于一些不存在双峰特性的图像也能进行比较理想的分割效果,例如下图5.9所示图像。 图5.9 原图像与直方图 观察上图的直方图并不体现双峰特性,利用该方法进行分割结果如下图5.10所示。 图5.10 原始图像与分割结果 (4)以上三种都能针对特定的图像进行目标分割,但是很多时候我们只需要对目 20 标图像的一部分进行研究,那么就只要求我们将所需的部分分割出来,根据这一要求生成了区域生长算法,利用这种算法能根据需要自主地选择种子像素点,从而分割出需要的部分。例如下图5.11的示例。 图5.11 区域生长法分割示例 如上图的示例所示,该分割方法可以根据图像特点在m文件里设定graythresh函数的不同阈值,选取特定的种子像素点利用区域生长法找到它周围相近或者说像素差值在一定阈值内的像素点,归并为一个区域,然后显示出来。 (5)区域生长过程是从一组生长点开始,通过不断地接纳新像素最后得到整个目标区域。而分裂合并法是在开始时将图像分割成一系列任意不相交的区域,直到最后所分得的每个区域内的像素都满足一定的灰度值则分裂停止,进行合并。该方法能对所有图片进行分割,但是对那些目标区域灰度值较相近的并且与背景区域灰度值有明显差别的图像能进行较好的分割。例如对cameraman和硬币图像的分割效果,如图5.12和5.13所示。 图5.12 分裂合并法对cameraman分割示例 21 图5.13 分裂合并法对cameraman分割示例 由图5.12与图5.13可以明显的观察到,当图像的目标区域像素灰度值相近时使用分裂合并分割算法进行分割的效果会比较准确,分割效果更接近所需结果。但对于类似cameraman类型图片时,即目标区域像素的灰度值分布较离散,不具有相似性的图片时,利用该算法就无法将所需目标精确地分割出来,分割的效果就比较粗糙。在精确性要求较高的情况下,该算法就不能完成要求。 6 总结 根据前几章的研究,本文具体概括了一下阈值化分割和区域化分割的基本理论和实验。其中,阈值化分割算法根据求阈值的不同又可以分为人工选择法(主要包括双峰法)和自动选择法(包括迭代法和最大类间方差法),而区域化分割算法又可以分为区域生长法和区域分裂合并法。在前面章节的研究中,不仅对同一分割算法使用不同的图像进行分割,来比较分割的性能,而且还比较不同的分割算法在对同一个图像进行分割时,分割性能的好坏。使用这样的方法能对每一种分割算法进行全面的分割效果分析,能够得出更准确的结论。 至今,各种文献和专著已经提出了多种不同的分割算法,每种算法的实现方式均不相同,但是都基于图像在像素级的不连续性和相似性。每种算法都有其一定的适用范围,但是却没有哪种算法能够适合所有的图像特点,只能根据图像的不同特性或者一定的应用要求来找到适合的算法。 22 参考文献 [1] 张德丰.数字图像处理(MATLAB版)[M].北京:人民邮电出版社,2009:258-296. [2] 刘刚.MATLAB数字图像处理[M].北京:机械工业出版社,2010:198-222. [3] 余松煜,周源华,张瑞.数字图像处理[M].上海:上海交通大学出版社,2007. [4] 陈天华.数字图像处理[M].北京:清华大学出版社.2007. [5] 秦襄培.MATLAB图像处理与页面编程[M].北京.电子工业出版社,2009:441-469. [6] 万毅.指纹图像分割技术算法研究[D].吉林:吉林大学,2011. [7] 徐琳俊.数字图像分割算法研究[D].江苏:江苏科技大学,2011. [8] 姚猛.静态图像中的人体分割与姿态估计[D].大连:大连理工大学,2011. [9] 钱智明.图像分割方法研究[D].长沙:国防科技大学,2010. [10] 冯艳平,王徽.基于阈值分割和边缘检测的枪支THz图像识别[J].红外,2011,32(12):23-26. [11] 肖辉.彩色图像分割[J].测绘科技情报,2004,53(4):6-11. [12] 罗志宏,冯国灿.一种新变方法在图像分割中的应用[J].计算机科学,2011,38(12):263-265. [13] 李强.图像分割中的阈值法研究[J].铜仁职业技术学院学报(自然科学版),2008.6(6):52-54. [14] 王丽.相似背景下的苹果图像分割方法仿真研究[J].计算机仿真,2011,28(12):281-284. [15] 龚声荣.数字图像处理与分析[M].北京:清华大学出版社,2006:168-208. [16] 姚敏.数字图像处理[M].北京:机械工业出版社,2006:225-262. [17] Kong W Z,Zhu Sh A.Multi-face detection based on down sampling and modified subtractive clustering for color images[J].Journal of Zhejiang University Science,2007,8(1):72-78. [18] Jain A K,Hsu R L,Mohamed A M.Face detection in color images[J].IEEE Trans on Pattern Analysis and Machine Intelligence,2002,24(5):696-706. 23 因篇幅问题不能全部显示,请点此查看更多更全内容