模式识别实验报告文档格式.doc
《模式识别实验报告文档格式.doc》由会员分享,可在线阅读,更多相关《模式识别实验报告文档格式.doc(21页珍藏版)》请在冰点文库上搜索。
代换后,可得
此时,若设,则有
若还有的条件,则
这时的最优阈值就是两类区域灰度均值与的平均值。
上面的推导是针对图像灰度值服从正态分布时的情况,如果灰度值服从其它分布,依理也可求出最优阈值来。
一般情况下,在不清楚灰度值分布时,通常可假定灰度值服从正态分布。
因此,本课题中亦可使用此方法来求得最优阈值,来对实验图像进行分割。
1.3.2最优阈值的迭代算法
在实际使用最优阈值进行分割的过程中,需要利用迭代算法来求得最优阈值。
设有一幅数字图像,混有加性高斯噪声,可表示为
此处假设图像上各点的噪声相互独立,且具有零均值,如果通过阈值分割将图像分为目标与背景两部分,则每一部分仍然有噪声点随机作用于其上,于是,目标和可表示为
迭代过程中,会多次地对和求均值,则
可见,随着迭代次数的增加,目标和背景的平均灰度都趋向于真实值。
因此,用迭代算法求得的最佳阈值不受噪声干扰的影响。
利用最优阈值对实验图像进行分割的迭代步骤为:
(1)确定一个初始阈值,可取为
式中,和为图像灰度的最小值和最大值。
(2)利用第k次迭代得到的阈值将图像分为目标和背景两大区域,其中
(3)计算区域和的灰度均值和。
(4)计算新的阈值,其中
(5)如果小于允许的误差,则结束,否则,转步骤
(2)。
利用迭代法求得最优阈值后,仍需进行一些人工调整才能将此阈值用于实验图像的分割,这是因为,这种最优阈值仍然属于全局阈值,它利用了图像中所有像素点的信息,但当光照不均匀时,图像中部分区域的灰度值可能差距较大,造成计算出的最优阈值分割效果不理想,此时,可设一人工经验因子进行校正。
四、实验步骤及程序
1、实验步骤:
(1)利用最优阈值对实验图像进行分割的迭代步骤编写程序流程图;
(2)编写程序,用Matlab语言实现此算法,完成选择图像的分割。
理解最优阈值迭代算法,设计程序实现对自选图像的最优阈值分割。
2、程序流程图:
3、程序如下:
a=imread('
e:
/lena.bmp'
);
figure
(1)
imshow(a)
b=a(:
Smax=max(b);
Smin=min(b);
T0=(Smax+Smin)/2;
delta=1;
whiledelta>
=0.1
clearR1R2
m=1;
l=1;
forn=1:
65536;
ifb(n)<
=T0
R1(m)=b(n);
m=m+1;
else
R2(l)=b(n);
l=l+1;
end
end
Tnext=0.5*(mean(R1)+mean(R2));
delta=abs(Tnext-T0);
T0=Tnext;
end
forn=1:
256
form=1:
ifa(n,m)>
c(n,m)=1;
c(n,m)=0;
figure
(2)
imshow(c)
五、实验结果与分析
分割域值:
T0=124.3653
分割前原图:
分割后效果图:
结论:
利用迭代法求得最优阈值仍然属于全局阈值。
由图可知分割后的效果图有两个灰度级,即分为目标背景两个部分。
将原图中的每一个像素与Tnest作比较,大于的为目标,小于的为背景。
实验2K均值聚类算法
2.1实验目的
将模式识别方法与图像处理技术相结合,掌握利用均值聚类算法进行图像分类的基本方法,通过实验加深对基本概念的理解。
2.2实验仪器设备及软件
HPD538、MATLAB、WIT
2.3实验原理
均值聚类法分为如下几个步骤:
一、初始化聚类中心
1、凭经验选择。
根据具体问题,凭经验从样本集中选出个比较合适的样本作为初始聚类中心。
2、用前个样本作为初始聚类中心。
3、将全部样本随机地分成类,计算每类的样本均值,将样本均值作为初始聚类中心。
4、密度法。
以每个样本为球心,用某个正数为半径作一个球形邻域,落在邻域内的样本数为该点密度,选密度最大点为第一初始聚类中心。
在离开第一点规定距离范围外确定次大密度点,以避免初始聚类中心聚集。
5、从个聚类划分的解中产生个聚类划分的初始聚类中心。
先把全部样本看作一个聚类,其聚类中心为样本的总均值;
然后确定两聚类问题的聚类中心是一聚类问题的总均值和离它最远的点;
以此类推。
二、初始聚类
1、按就近原则将样本归入各聚类中心所代表的类中。
2、取一样本,将其归入与其最近的聚类中心的那一类中,重新计算样本均值,更新聚类中心。
然后取下一样本,重复操作,直至所有样本归入相应类中。
三、判断聚类是否合理
采用误差平方和准则函数判断聚类是否合理,不合理则修改分类。
循环进行判断、修改直至达到算法终止条件。
2.4实验步骤及程序
1、实验步骤
(1)利用K-均值聚类法的算法步骤编写程序流程图;
(2)编写程序,用Matlab语言实现此算法,完成选择图像的分割。
(3)利用WIT实现K均值聚类算法的图像分割
2、程序流程图
WTI聚类程序如图:
tic
img=imread('
[m,n]=size(img);
subplot(2,2,1),imshow(img);
title('
原始图'
)
subplot(2,2,2),imhist(img);
灰度直方图'
holdoff;
img=double(img);
fori=1:
200
c1
(1)=25;
c2
(1)=125;
c3
(1)=200;
r=abs(img-c1(i));
g=abs(img-c2(i));
b=abs(img-c3(i));
r_g=r-g;
g_b=g-b;
r_b=r-b;
n_r=find(r_g<
=0&
r_b<
=0);
n_g=find(r_g>
0&
g_b<
n_b=find(g_b>
r_b>
0);
i=i+1;
c1(i)=sum(img(n_r))/length(n_r);
c2(i)=sum(img(n_g))/length(n_g);
c3(i)=sum(img(n_b))/length(n_b);
d1(i)=(c1(i)-c1(i-1))^2;
d2(i)=(c2(i)-c2(i-1))^2;
d3(i)=(c3(i)-c3(i-1))^2;
ifd1(i)<
=0.001&
&
d2(i)<
d3(i)<
=0.001
R=c1(i);
G=c2(i);
B=c3(i);
k=i;
break;
R
G
B
img=uint8(img);
img(find(img<
R))=0;
img(find(img>
R&
img<
G))=128;
G))=255;
toc
subplot(2,2,3),imshow(img);
聚类后图象'
)
subplot(2,2,4),imhist(img);
聚类后灰度直方图'
2.5实验结果与分析
1、MATLAB实验结果:
聚类类别数:
K=3
聚类中心:
R=68.3649
G=129.3456
B=181.5449
运行时间:
Elapsedtimeis3.042837seconds.
迭代次数:
n=256
2、WIT实验结果:
R=66.6439
G=124.791
B=175.847
Elapsedtimeis2.359378seconds
灰度直方图:
两种实验结果所得聚类中心相近,说明基于K-均值算法利用matlab编写的图像分割程序是有效的。
实验3神经网络模式识别
3.1实验目的
掌握利用感知器和BP网进行模式识别的基本方法,通过实验加深对基本概念的理解。
3.2实验仪器与设备
3.3实验原理
感知器原理
前馈神经网络
输出类别指示
感知器网络结构
输入样本
单层神经网络,只能解决线性可分问题。
神经网络特点
分布式存储信息,用神经网络间连接权值的分布来表示特定的信息,当局部网络受损,仍能恢复
原来的信息。
对信息的处理具有并行性。
每个神经元都可以根据接收到的信息作独立的运算和处理,然后将结
果传输出去,体现了并行处理的概念。
对信息的处理具有自组织、自学习的特点。
通过改变连接权值适应周围环境变化,称为神经元学习过程。
BP法原理
一般为两层前馈神经网络,激励函数为Sigmoid函数。
基本思想:
根据样本希望输出与实际输出之间的平方误差最小,利用梯度下降法,从输出层开始,
逐层修正权系数。
修正周期分两个阶段:
前向传播阶段,反向传播阶段。
BP采用S函数,输出不宜设为1或0,可设为0.9或0.1。
权系数初始化:
不应将初始值设为相同,否则在学习过程中始终不变,可设为随机值。
步长的选择:
应设为可变步长,以防止震荡。
局部最小问题:
BP算法是非线性优化算法,初始值设置不当,可能陷入局部极小。
前馈网络结构:
输入节点数为模式维数,输出节点数一般为类别数,隐层节点数尚无明确方法,实验确定。
3.4实验步骤及程序
感知器实验:
1、设计线性可分实验,要求训练样本10个以上
2、奇异样本对网络训练的影响
3、以线性不可分样本集训练分类器
BP网实验:
利用BP网对上述线性不可分样本集进行分类
2、实验程序:
(1)设计线性可分实验
设计线性分类器对线性可分样本集进行分类,样本数目10个以上,训练及分类步骤齐全,记录分类器训练的迭代次数和训练时间。
程序如下:
closeall;
clear;
clc;
tic;
P=[-3-1-542-4-21431-3;
52141-1-3-1-2-45-6];
%P为输入矢量
T=[111101000010];
%T为目标矢量
figure,plotpv(P,T),title('
对线性可分样本集进行分类'
);
net=newp(minmax(P),1);
%创建感知器神经网络,一个神经元
linehandle=plotpc(net.IW{1},net.b{1});
%net.iw权值,net.b阈值
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;
%绘制分类线
toc;
n%迭代次数
figure,plot(perf),title('
训练样本误差平方和'
%绘制误差变化曲线
(2)奇异样本对网络训练的影响
奇异样本:
该样本向量同其他样本向量比较起来特别大或特别小时,网络训练所花费的时间将很长。
设计实验考察奇异样本对感知机训练的影响,比较有无奇异点时的训练时间及迭代次数,设计解决此问题的方案并实验验证。
解决方案:
对样本归一化,learnpn,其对无奇异点样本集效率较低。
%P为输入矢量
P=[-3-1-542-4-2143150;
52141-1-3-1-2-4510];
%T为目标矢量
分类数据点图'
%绘制待分类数据点图
net=newp(minmax(P),1,'
hardlim'
'
learnpn'
%创建感知器神经网络
%训练感知器神经网络
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);
n
%绘制误差曲线
绘制误差变化曲线'
%绘制误差变化曲线
(3)以线性不可分样本集训练分类器
使用BP网络能适用该样本,该BP网络使用L-M优化算法,能有效减少迭代次数和训练时间,较traingdm效率更高。
P=[-3-1-542-4-21-231-3;
22141-10-1102-2];
T=[111101000010;
111111111111];
绘制数据点图'
net=newff(minmax(P),[9,9,2],{'
tansig'
purelin'
},'
trainlm'
%用前馈反向传播网络
inputWeights=net.IW{1,1}%当前输入层权值和阈值
inputbias=net.b{1};
layerWeights=net.LW{2,1}%当前网络层权值和阈值
layerbias=net.b{1};
outputWeights=net.LW{3,2}
%设置训练参数
%net.trainParam.show=50;
%net.trainParam.lr=0.05;
%net.trainParam.mc=0.9;
net.trainParam.epochs=100;
%对数据组进行重复100次训练
net.trainParam.goal=1e-2;
%误差平方和
[net,tr]=train(net,P,T);
%调用TRAINGDM算法训练BP网络
A=sim(net,P);
%对样本和网络进行训练,得出目标矢量
A
E=T-A;
MSE=mse(E)%均方误差
3.5实验结果与分析
1、设计线性可分实验
Elapsedtimeis0.582415seconds.
n=3
实验截图如下:
结果分析:
由输入矢量建立感知器网络,通过经过网络训练得到的结果矢量与目标矢量做差,得到的误差,对其平方求和与0比较,若不为0,则继续经过adpat算放训练建立的感知器网络,知道它能够将输入的样本集分开,并且得到的结果与目标矢量一致。
此时感知器网络的阈值是一定的。
得到的实验结果如图所示。
2、奇异样本对网络训练的影响
Elapsedtimeis0.721029seconds.
n=4
由上述结果可知,奇异样本会严重影响感知器的训练速度,增加迭代次数。
使用“感知器归一化学习算法”即learnpn函数能有效消除奇异样本的影响。
3、BP网实验:
Elapsedtimeis1.417897seconds.
A=
Columns1through9
1.04150.96670.99160.99070.03190.65050.0481-0.04330.0519
1.07941.04501.08041.03891.00971.05121.03141.03291.0310
Columns10through12
-0.00190.97650.2385
0.96511.01321.0195
MSE=
0.0089
由图可看出输入的样本矢量是线性不可分的,故利用train函数针对输入矢量P建立的相应的BP训练网络。
BP网络不像感知器能训练出稳定结果,每次运行BP网络进行训练都可能得到不同的结果。
程序中建立的网络包括输入层为三层,隐层节点数为9,定义的训练误差为0.01,最大迭代次数为100,所得到的训练结果与目标的误差收敛于程序中定义的误差,故经过训练的BP网络能够对线性不可分的网络进行分类。
参考教材
[1]边肇祺,张学工.模式识别.清华大学出版社,2000
[2]董长虹.Matlab神经网络与应用.国防工业出版社,2005
[3]冈萨雷斯.数字图像处理(第二版).电子工业出版社,2005
[4]徐飞,施晓红.MATLAB应用图像处理.西安电子科技大学出版社,2002