模式识别课程设计Word文件下载.doc
《模式识别课程设计Word文件下载.doc》由会员分享,可在线阅读,更多相关《模式识别课程设计Word文件下载.doc(9页珍藏版)》请在冰豆网上搜索。
图象分割应用在许多方面,例如在汽车车型自动识别系统中,从CCD摄像头获取的图象中除了汽车之外还有许多其他的物体和背景,为了进一步提取汽车特征,辨识车型,图象分割是必须的。
因此其应用从小到检查癌细胞、精密零件表面缺陷检测,大到处理卫星拍摄的地形地貌照片等。
在所有这些应用领域中,最终结果很大程度上依赖于图象分割的结果。
因此为了对物体进行特征的提取和识别,首先需要把待处理的物体(目标)从背景中划分出来,即图象分割。
但是,在一些复杂的问题中,例如金属材料内部结构特征的分割和识别,虽然图象分割方法已有上百种,但是现有的分割技术都不能得到令人满意的结果,原因在于计算机图象处理技术是对人类视觉的模拟,而人类的视觉系统是一种神奇的、高度自动化的生物图象处理系统。
目前,人类对于视觉系统生物物理过程的认识还很肤浅,计算机图象处理系统要完全实现人类视觉系统,形成计算机视觉,还有一个很长的过程。
因此从原理、应用和应用效果的评估上深入研究图象分割技术,对于提高计算机的视觉能力和理解人类的视觉系统都具有十分重要的意义。
二.常用的图像分割方法
1.基于阈值的分割方法
包括全局阈值、自适应阈值、最佳阈值等等。
阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。
阈值确定后,将阈值与像素点的灰度值比较和像素分割可对各像素并行地进行,分割的结果直接给出图像区域。
全局阈值是指整幅图像使用同一个阈值做分割处理,适用于背景和前景有明显对比的图像。
它是根据整幅图像确定的:
T=T(f)。
但是这种方法只考虑像素本身的灰度值,一般不考虑空间特征,因而对噪声很敏感。
常用的全局阈值选取方法有利用图像灰度直方图的峰谷法、最小误差法、最大类间方差法、最大熵自动阈值法以及其它一些方法。
2.基于边缘的分割方法
检测灰度级或者结构具有突变的地方,表明一个区域的终结,也是另一个区域开始的地方。
这种不连续性称为边缘。
不同的图像灰度不同,边界处一般有明显的边缘,利用此特征可以分割图像。
图像中边缘处像素的灰度值不连续,这种不连续性可通过求导数来检测到。
对于阶跃状边缘,其位置对应一阶导数的极值点,对应二阶导数的过零点(零交叉点)。
因此常用微分算子进行边缘检测。
常用的一阶微分算子有Roberts算子、Prewitt算子和Sobel算子,二阶微分算子有Laplace算子和Kirsh算子等。
在实际中各种微分算子常用小区域模板来表示,微分运算是利用模板和图像卷积来实现。
这些算子对噪声敏感,只适合于噪声较小不太复杂的图像。
由于边缘和噪声都是灰度不连续点,在频域均为高频分量,直接采用微分运算难以克服噪声的影响。
因此用微分算子检测边缘前要对图像进行平滑滤波。
LoG算子和Canny算子是具有平滑功能的二阶和一阶微分算子,边缘检测效果较好,如图4所示。
其中loG算子是采用Laplacian算子求高斯函数的二阶导数,Canny算子是高斯函数的一阶导数,它在噪声抑制和边缘检测之间取得了较好的平衡。
3.基于聚类分析的图像分割方法
特征空间聚类法进行图像分割是将图像空间中的像素用对应的特征空间点表示,根据它们在特征空间的聚集对特征空间进行分割,然后将它们映射回原图像空间,得到分割结果。
其中,K均值、模糊C均值聚类(FCM)算法是最常用的聚类算法。
K均值算法先选K个初始类均值,然后将每个像素归入均值离它最近的类并计算新的类均值。
迭代执行前面的步骤直到新旧类均值之差小于某一阈值。
模糊C均值算法是在模糊数学基础上对K均值算法的推广,是通过最优化一个模糊目标函数实现聚类,它不像K均值聚类那样认为每个点只能属于某一类,而是赋予每个点一个对各类的隶属度,用隶属度更好地描述边缘像素亦此亦彼的特点,适合处理事物内在的不确定性。
利用模糊C均值(FCM)非监督模糊聚类标定的特点进行图像分割,可以减少人为的干预,且较适合图像中存在不确定性和模糊性的特点。
三.K均值聚类分割算法概述
1.K-均值聚类算法的工作原理:
K-means算法的工作原理:
算法首先随机从数据集中选取
K个点作为初始聚类中心,然后计算各个样本到聚类中的距离,把样本归到离它最近的那个聚类中心所在的类。
计算新形成的每一个聚类的数据对象的平均值来得到新的聚类中心,如果相邻两次的聚类中心没有任何变化,说明样本调整结束,聚类准则函数
已经收敛。
本算法的一个特点是在每次迭代中都要考察每个样本的分类是否正确。
若不正确,就要调整,在全部样本调整完后,再修改聚类中心,进入下一次迭代。
如果在一次迭代算法中,所有的样本被正确分类,则不会有调整,聚类中心也不会有任何变化,这标志着
已经收敛,因此算法结束。
2.K-means聚类算法的一般步骤及处理流程:
(1)从n个数据对象任意选择
k
个对象作为初始聚类中心;
(2)循环(3)到(4)直到每个聚类不再发生变化为止;
(3)根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;
并根据最小距离重新对相应对象进行划分;
(4)重新计算每个(有变化)聚类的均值(中心对象)3.K-means算法的特点。
采用两阶段反复循环过程算法,结束的条件是不再有数据元素被重新分配:
①指定聚类,即指定数据
到某一个聚类,使得它与这个聚类中心的距离比它到其它聚类中心的距离要近。
②修改聚类中心。
优点:
本算法确定的K个划分到达平方误差最小。
当聚类是密集的,且类与类之间区别明显时,效果较好。
对于处理大数据集,这个算法是相对可伸缩和高效的,计算的复杂度为O(NKt),其中N是数据对象的数目,t是迭代的次数。
一般来说,K<
<
N,t<
N。
四、聚类图像分割实例:
1、流程图
2、实验过程
(1)、读取待处理图片
closeall;
clear;
I_rgb=imread('
bird.jpg'
);
%读取文件数据
figure
(1);
subplot(1,2,1);
imshow(I_rgb);
%显示原图
title('
原始图像'
(2).将彩色图像从RGB转化到lab彩色空间
C=makecform('
srgb2lab'
%设置转换格式
I_lab=applycform(I_rgb,C);
(3).进行K-mean聚类将图像分割成3个区域
ab=double(I_lab(:
:
2:
3));
%取出lab空间的a分量和b分量
nrows=size(ab,1);
ncols=size(ab,2);
ab=reshape(ab,nrows*ncols,2);
nColors=3;
%分割的区域个数为3
(4).显示聚类结果
[cluster_idxcluster_center]=kmeans(ab,nColors,'
distance'
'
sqEuclidean'
Replicates'
3);
%重复聚类3次
pixel_labels=reshape(cluster_idx,nrows,ncols);
subplot(111);
imshow(pixel_labels,[]),title('
聚类结果'
(5)、显示分割后的各个区域
segmented_images=cell(1,nColors);
rgb_label=repmat(pixel_labels,[113]);
fork=1:
nColors
color=I_rgb;
color(rgb_label~=k)=0;
segmented_images{k}=color;
End
imshow(segmented_images{1}),title('
分割结果1'
imshow(segmented_images{2}),title('
分割结果2'
imshow(segmented_images{3}),title('
分割结果3'
五、实验结果分析
本算法确定的K个划分到达平方误差最小,当聚类是密集的,且类与类之间区别明显时,效果较好,对于处理大数据集,这个算法是相对可伸缩和高效的。
但是在实验过程中,很明显的感觉到了k均值方法的缺点,在K-means算法中K是事先给定的,这个K值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适;
另外,初始聚类中心的选取也是很重要的,聚类中心的选取会很大的影响图形的提取。