实验课程名称: 模式识别
姓名: 班级: 20120811 学号:
实验名称 图像的贝叶斯分类 K均值聚类算法 神经网络模式识别 规范程度 原理叙述 实验过程 实验结果 实验成绩 平均成绩 折合成绩 注:1、每个实验中各项成绩按照5分制评定,实验成绩为各项总和
2、平均成绩取各项实验平均成绩
3、折合成绩按照教学大纲要求的百分比进行折合
2015年 4月
实验1 图像的贝叶斯分类
1.1 实验目的
将模式识别方法与图像处理技术相结合,掌握利用最小错分概率贝叶斯分类器进行图像分类的基本方法,通过实验加深对基本概念的理解。
1.2 实验仪器设备及软件
HP D538、MATLAB
1.3 实验原理 1.3.1基本原理
阈值化分割算法是计算机视觉中的常用算法,对灰度图象的阈值分割就是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中每个像素的灰度值与这个阈值相比较。并根据比较的结果将对应的像素划分为两类,灰度值大于阈值的像素划分为一类,小于阈值的划分为另一类,等于阈值的可任意划分到两类中的任何一类。此过程中,确定阈值是分割的关键。
对一般的图像进行分割处理通常对图像的灰度分布有一定的假设,或者说是基于一定的图像模型。最常用的模型可描述如下:假设图像由具有单峰灰度分布的目标和背景组成,处于目标和背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的像素灰度值有较大差别,此时,图像的灰度直方图基本上可看作是由分别对应于目标和背景的两个单峰直方图混合构成。而且这两个分布应大小接近,且均值足够远,方差足够小,这种情况下直方图呈现较明显的双峰。类似地,如果图像中包含多个单峰灰度目标,则直方图可能呈现较明显的多峰。
上述图像模型只是理想情况,有时图像中目标和背景的灰度值有部分交错。这时如用全局阈值进行分割必然会产生一定的误差。分割误差包括将目标分为背景和将背景分为目标两大类。实际应用中应尽量减小错误分割的概率,常用的一种方法为选取最优阈值。这里所谓的最优阈值,就是指能使误分割概率最小的分割阈值。图像的直方图可以看成是对灰度值概
率分布密度函数的一种近似。如一幅图像中只包含目标和背景两类灰度区域,那么直方图所代表的灰度值概率密度函数可以表示为目标和背景两类灰度值概率密度函数的加权和。如果概率密度函数形式已知,就有可能计算出使目标和背景两类误分割概率最小的最优阈值。 假设目标与背景两类像素值均服从正态分布且混有加性高斯噪声,上述分类问题可用模式识别中的最小错分概率贝叶斯分类器来解决。以p1与p2分别表示目标与背景的灰度分布概率密度函数,P1与P2分别表示两类的先验概率,则图像的混合概率密度函数用下式表示
p(x)P1p1(x)P2p2(x)
式中p1和p2分别为
p1(x)1e21122(x1)2212
p2(x)e(x2)2222
P1P21
1、2是针对背景和目标两类区域灰度均值1与2的标准差。若假定目标的灰度较亮,
其灰度均值为2,背景的灰度较暗,其灰度均值为1,因此有
12
现若规定一门限值T对图像进行分割,势必会产生将目标划分为背景和将背景划分为目标这两类错误。通过适当选择阈值T,可令这两类错误概率为最小,则该阈值T即为最佳阈值。 把目标错分为背景的概率可表示为
E1(T)p2(x)dx
T把背景错分为目标的概率可表示为
E2(T)总的误差概率为
Tp1(x)dx
E(T)P2E1(T)PE12(T)
为求得使误差概率最小的阈值T,可将E(T)对T求导并令导数为零,可得
P1p1(T)P2p2(T)
代换后,可得
P(T1)2(T2)212 ln22P212121此时,若设12,则有
T若还有P1P2的条件,则
T122P2ln2 12P1122
这时的最优阈值就是两类区域灰度均值1与2的平均值。
上面的推导是针对图像灰度值服从正态分布时的情况,如果灰度值服从其它分布,依理也可求出最优阈值来。一般情况下,在不清楚灰度值分布时,通常可假定灰度值服从正态分布。因此,本课题中亦可使用此方法来求得最优阈值,来对实验图像进行分割。
1.3.2 最优阈值的迭代算法
在实际使用最优阈值进行分割的过程中,需要利用迭代算法来求得最优阈值。设有一幅数字图像f(x,y),混有加性高斯噪声,可表示为
g(x,y)f(x,y)n(x,y)
此处假设图像上各点的噪声相互独立,且具有零均值,如果通过阈值分割将图像分为目标与背景两部分,则每一部分仍然有噪声点随机作用于其上,于是,目标g1(x,y)和
g2(x,y)可表示为
g1(x,y)f1(x,y)n(x,y) g2(x,y)f2(x,y)n(x,y)
迭代过程中,会多次地对g1(x,y)和g2(x,y)求均值,则
E{g1(x,y)}E{f1(x,y)n(x,y)}E{f1(x,y)}
E{g2(x,y)}E{f2(x,y)n(x,y)}E{f2(x,y)}
可见,随着迭代次数的增加,目标和背景的平均灰度都趋向于真实值。因此,用迭代算法求得的最佳阈值不受噪声干扰的影响。
利用最优阈值对实验图像进行分割的迭代步骤为: (1)确定一个初始阈值T0,T0可取为
T0SminSmax 2式中,Smin和Smax为图像灰度的最小值和最大值。
(2)利用第k次迭代得到的阈值将图像分为目标R1和背景R2两大区域,其中
R1{f(x,y)|f(x,y)Tk} R2{f(x,y)|0f(x,y)Tk}
(3)计算区域R1和R2的灰度均值S1和S2。 (4)计算新的阈值Tk1,其中
Tk1S1S2 2 (5)如果|Tk1Tk|小于允许的误差,则结束,否则kk1,转步骤(2)。 利用迭代法求得最优阈值后,仍需进行一些人工调整才能将此阈值用于实验图像的分割,这是因为,这种最优阈值仍然属于全局阈值,它利用了图像中所有像素点的信息,但当光照不均匀时,图像中部分区域的灰度值可能差距较大,造成计算出的最优阈值分割效果不理想,此时,可设一人工经验因子进行校正。
1.4、实验步骤及程序
实验步骤:
1、读取指定图像,取矩阵的最大值和最小值,并以最大值、最小值的平均值为初始阈值A。 2、比较所有的矩阵因子和初始阈值的大小,若某矩阵因子较大,则有效区域的像素点数增加1,该点灰度值需计入有效区域的灰度总值。反之,背景的像素点增加1,该点灰度值需计入背景的灰度值。
3、所有的矩阵因子都比较完以后,计算有效区域的像素平均灰度值和背景的平均灰度值。取这两个平均值的平均,记为B,若A=B,则循环结束,该值为最优阈值。否则,令A=B, 重复步骤2、3。
开始 读取指定图像,取矩阵的最大值和最小值,并以最大值、最小值的平均值作为初始的阈值A N 矩阵因子>A? Y 有效区域的像素点数增加1,该点灰度值需计入有效区域的灰度总值 背景的像素点增加1,该点灰度值需计入背景的灰度值 N 比较完毕? 令A=B Y 计算有效区域的像素平均灰度值和背景的平均灰度值。取这两个平均值的平均,记为B N A-B<允许误差? Y A值为最佳阈值 结束 图1.4.1 程序流程图
实验程序:
I=imread('blood.jpg'); Picgray = rgb2gray(I); imhist(Picgray); figure
SMax=max(max(I)); SMin=min(min(I)); TK=(SMax+SMin)/2; bCal=1; iSize=size(I); while(bCal) iForeground=0; iBackground=0; ForegroundSum=0; BackgroundSum=0; for i=1:iSize(1) for j=1:iSize(2) tmp=I(i,j); if(tmp>=TK)
iForeground=iForeground+1;
ForegroundSum=ForegroundSum+double(tmp); else
iBackground=iBackground+1;
BackgroundSum=BackgroundSum+double(tmp); end end end
ZO=ForegroundSum/iForeground; ZB=BackgroundSum/iBackground; TKTmp=double((ZO+ZB)/2); if(TKTmp==TK) bCal=0; else
TK=TKTmp; end end
disp(strcat('diedaihoudeyuzhi£º',num2str(TK))); newI=im2bw(I,double(TK)/255); imshow(I) figure imshow(newI)
1.5、实验结果与分析
实验得到的迭代后的分割阈值:94.8064 分割效果图如下所示。
图1.5.1 原始图像
图1.5.2 分割后的图像
120010008006004002000050100150200250
图1.5.3 原始图像的灰度直方图
实验分析:
对灰度图象的阈值分割就是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中每个像素的灰度值与这个阈值相比较。并根据比较的结果将对应的像素划分为两类,灰度值大于阈值的像素划分为一类,小于阈值的划分为另一类,等于阈值的可任意划分到两类中的任何一类。其中确定阈值是分割的关键。最优阈值的求得需要使用迭代算法。它将会影响到迭代的次数和结果精度。
实验2 K均值聚类算法
2.1 实验目的
将模式识别方法与图像处理技术相结合,掌握利用K均值聚类算法进行图像分类的基本方法,通过实验加深对基本概念的理解。
2.2 实验仪器设备及软件
HP D538、MATLAB、WIT
2.3 实验原理
K均值聚类法分为如下几个步骤: 一、 初始化聚类中心
1、 根据具体问题,凭经验从样本集中选出C个比较合适的样本作为初始聚类中
心。
2、 用前C个样本作为初始聚类中心。
3、 将全部样本随机地分成C类,计算每类的样本均值,将样本均值作为初始聚
类中心。
二、 初始聚类
1、 按就近原则将样本归入各聚类中心所代表的类中。
2、 取一样本,将其归入与其最近的聚类中心的那一类中,重新计算样本均值,
更新聚类中心。然后取下一样本,重复操作,直至所有样本归入相应类中。
三、 判断聚类是否合理
采用误差平方和准则函数判断聚类是否合理,不合理则修改分类。循环进行判断、修改直至达到算法终止条件。
2.4 实验步骤及程序
实验步骤:
1、读取原始图像,确定四个初始聚类中心。
2、计算各点与聚类中心的距离,以及各点到不同聚类中心的距离之差,选取距离最近的聚类中心作为该点的聚类中心,依据此原理将属于不同聚类中心的元素聚类。 3、求各类的平均值作为新的聚类中心,检验是否满足精度条件。 4、输出的四个聚类中心值,将图像分成四类输出。
开始 读取原始图像,确定四个初始聚类中心 计算各点与聚类中心的距离,以及各点到不同聚类中心的距离之差,选取距离最近的聚类中心作为该点的聚类中心,据此原理将属于不同聚类中心的元素聚类 将各类的平均值作为新的聚类中心 N 满足误差条件? Y 新的聚类中心即为最终结果 结束
图2.4.1 实验程序流程图
实验程序:
clc clear tic
% A=imread('peppers.jpg');
A=imread('N: 模式识别实验资料\\实验图片\\peppers.bmp'); figure,imshow(A) figure,imhist(A) A=double(A); for i=1:200 c1(1)=25; c2(1)=75; c3(1)=120; c4(1)=200; r=abs(A-c1(i)); g=abs(A-c2(i)); b=abs(A-c3(i)); y=abs(A-c4(i)); r_g=r-g; g_b=g-b; r_b=r-b; b_y=b-y; r_y=r-y;
g_y=g-y;
n_r=find(r_g<=0&r_b<=0&r_y<=0); n_g=find(r_g>0&g_b<=0&g_y<=0); n_b=find(g_b>0&r_b>0&b_y<=0); n_y=find(r_y>0&g_y>0&b_y>0); i=i+1;
c1(i)=sum(A(n_r))/length(n_r); c2(i)=sum(A(n_g))/length(n_g); c3(i)=sum(A(n_b))/length(n_b);
c4(i)=sum(A(n_y))/length(n_y); d1(i)=sqrt(abs(c1(i)-c1(i-1))); d2(i)=sqrt(abs(c2(i)-c2(i-1))); d3(i)=sqrt(abs(c3(i)-c3(i-1))); d4(i)=sqrt(abs(c4(i)-c4(i-1)));
if d1(i)<=0.001&&d2(i)<=0.001&&d3(i)<=0.001&&d4(i)<=0.001 R=c1(i); G=c2(i); B=c3(i); Y=c4(i); k=i; break;
end end R G B Y
A=uint8(A);
A(find(A<(R+G)/2))=0;
A(find(A>(R+G)/2&A<(G+B)/2))=75; A(find(A>(G+B)/2&A<(Y+B)/2))=150; A(find(A>(B+Y)/2))=255; toc
figure,imshow(A) figure,imhist(A)
2.5 实验结果与分析
使用MATLAB所得结果:聚类类别数为4类,聚类中心 R = 19.0109,G =66.1286,B = 132.6709,Y =175.5442,迭代次数 9次、运行时间0.323323s。
图2.5.1 原始图像
300025002000150010005000050100150200250
图2.5.2 原始图像的灰度直方图
图2.5.3 聚类后的图像
x 1021.81.61.41.210.80.60.40.200450100150200250
图2.5.4 聚类后的灰度直方图
使用witDemo所得结果:聚类类别数为4类,聚类中心 R = 17.9247,G =64.4222,
B = 127.926,Y =172.09,迭代次数 7次、运行时间27.265ms。
图2.5.5 witDemo运行界面图
图2.5.6 原始图像
图2.5.7 原始图像的灰度直方图
图2.5.8 聚类后的图像
图2.5.9 运行次数和时间结果
图2.5.10 聚类中心
实验分析:
初始的聚类中心的不同,对聚类的结果没有很大的影响,但是对迭代次数有明显的影响。数据输入顺序的不同也是影响迭代次数的,但是对最后的聚类结果没有太大的影响。 witDemo中迭代次数是实验者设定的,而MATLAB中则是根据精度要求自动完成迭代的。
实验3 神经网络模式识别
3.1 实验目的
掌握利用感知器和BP网进行模式识别的基本方法,通过实验加深对基本概念的理解。
3.2 实验仪器与设备
HP D538、MATLAB
3.3 实验原理
一、设计线性可分实验
线性分类器原理见教材。设计线性分类器对线性可分样本集进行分类,样本数目10个以上,训练及分类步骤齐全,记录分类器训练的迭代次数和训练时间。
二、奇异样本对网络训练的影响
奇异样本:该样本向量同其他样本向量比较起来特别大或特别小时,网络训练所花费的时间将很长。
设计实验考察奇异样本对感知机训练的影响,比较有无奇异点时的训练时间及迭代次数,设计解决此问题的方案并实验验证。
三、分类线性不可分样本
利用线性分类器对线性不可分样本进行分类,考察训练时间及迭代次数。利用BP网对该样本集进行分类,考察训练时间及迭代次数并作对比。
3.4 实验步骤及程序
实验步骤:
感知器实验:1、设计线性可分实验,要求训练样本10个以上 2、奇异样本对网络训练的影响 3、以线性不可分样本集训练分类器 BP网实验:利用BP网对上述线性不可分样本集进行分类
线性可分实验程序:
tic;
P=[-5 -7 -4 -1 0 -5 4 2 -4 -2 1 4 4 3 1 -2;0 -5 4 2 -4 1 4 1 -1 -3 -1 7 -2 -3 5 -5];
T=[1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0]; figure,plotpv(P,T); net=newp(minmax(P),1);
linehandle=plotpc(net.IW{1},net.b{1}); E=1;n=0; while(sse(E))
[net,y,E]=adapt(net,P,T); n=n+1;
perf(n)=sse(E);
linehandle=plotpc(net.IW{1},net.b{1},linehandle);drawnow; end toc
disp(strcat('迭代次数 ',num2str(n))); figure,plot(perf);
奇异样本对网络训练的影响实验程序:
tic;
P=[-5 -9 -4 -1 0 -5 11 2 -1 -2 1 7 4 3 1 -2;0 -20 8 2 -4 1 4 1 -1 -3 -1 7 -2 -3 5 -5];
T=[1 0 1 0 0 1 1 0 1 0 0 1 1 1 1 0]; figure,plotpv(P,T); net=newp(minmax(P),1);
linehandle=plotpc(net.IW{1},net.b{1}); E=1;n=0; while(sse(E))
[net,y,E]=adapt(net,P,T); n=n+1;
perf(n)=sse(E);
linehandle=plotpc(net.IW{1},net.b{1},linehandle);drawnow; end toc
disp(strcat('迭代次数',num2str(n))); figure,plot(perf);
以线性不可分样本集训练分类器实验程序:
tic;
P=[-5 -3 -4 -1 0 -5 4 2 2 -2 1 4 -2 3 1 -2;0 12 4 2 -4 1 4 -8 -1 -3 -1 7 -2 -3 5 9];
T=[1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0]; figure,plotpv(P,T); net=newp(minmax(P),1);
linehandle=plotpc(net.IW{1},net.b{1}); E=1;n=0; while(sse(E))
[net,y,E]=adapt(net,P,T); n=n+1;
perf(n)=sse(E);
linehandle=plotpc(net.IW{1},net.b{1},linehandle);drawnow; end toc
disp(strcat('迭代次数',num2str(n))); figure,plot(perf);
BP网实验程序
clear; tic;
P=[-5 -3 -4 -1 0 -5 4 2 2 -2 1 4 -2 3 1 -2;0 12 4 2 -4 1 4 -8 -1 -3 -1 7 -2 -3 5 9];
T=[1 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0]; figure,plotpv(P,T);
net=newff(minmax(P),[5,5,1],{'tansig','purelin','logsig'},'trainlm'); inputWeights=net.IW{1,1}; inputbias=net.b{1}; layerWeights=net.LW{2,1}; layerbias=net.b{2}; net.trainParam.show=300; net.trainParam.lr=0.05; net.trainParam.mc=0.9; net.trainParam.epochs=1000; net.trainParam.goal=1e-4; tic
[net,tr]=train(net,P,T); toc
A=sim(net,P); E=T-A; MSE=mse(E);
3.5 实验结果与分析
线性可分实验:迭代次数为3次,训练时间6.700444s。
Vectors to be Classified10864P(2)20-2-4-6-8-10-8-6-4-2P(1)02468
图3.5.1 样本分布图a
87654321011.21.41.61.822.22.42.62.83
图3.5.2 样本分布图b 实验结果分析:
由输入矢量建立感知器网络,通过经过网络训练得到的结果矢量与目标矢量做差,得到的误
差,对其平方求和与0比较,如不为0,则继续经过adpat算放训练建立的感知器网络,知道它能够将输入的样本集分开,并且得到的结果与目标矢量一致。此时感知器网络的阈值是一定的。
奇异样本对网络训练的影响实验
Vectors to be Classified151050P(2)-5-10-15-20-25-30-15-10-50P(1)51015
图3.5.3 样本分布图
以线性不可分样本集训练分类器实验
Vectors to be Classified2015105P(2)0-5-10-15-8-6-4-20P(1)246
图3.5.4 样本分布图
BP网实验:利用BP网对上述线性不可分样本集进行分类
Vectors to be Classified151050P(2)-5-10-15-20-25-30-8-6-4-20P(1)246
图3.5.5 样本分布图
0Best Training Performance is 1.7314e-05 at epoch 12 TrainBestGoal10Mean Squared Error (mse)10-110-210-310-410 0-52468101212 Epochs
图3.5.6 样本平均方差图
实验分析:
通过此实验加深理解了BP神经网络的结构和原理,了解了线性可分实验、奇异样本对网络训练的影响以及分类线性不可分样本,巩固了理论知识。
参考教材
[1] 边肇祺,张学工.模式识别.清华大学出版社,2000 [2] 董长虹.Matlab神经网络与应用.国防工业出版社,2005 [3] 冈萨雷斯.数字图像处理(第二版).电子工业出版社,2005
[4] 徐飞,施晓红.MATLAB应用图像处理.西安电子科技大学出版社,2002
因篇幅问题不能全部显示,请点此查看更多更全内容