模式识别大作业.docx
《模式识别大作业.docx》由会员分享,可在线阅读,更多相关《模式识别大作业.docx(31页珍藏版)》请在冰豆网上搜索。
![模式识别大作业.docx](https://file1.bdocx.com/fileroot1/2023-5/16/2be7bc3d-e8e4-4003-bce5-a6ea02a0f10e/2be7bc3d-e8e4-4003-bce5-a6ea02a0f10e1.gif)
模式识别大作业
模式识别大作业
作业1用身高和/或体重数据进行性别分类
(一)
基本要求:
用和的数据作为训练样本集,建立Bayes分类器,用测试样本数据对该分类器进行测试。
调整特征、分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。
具体做法:
1.应用单个特征进行实验:
以(a)身高或者(b)体重数据作为特征,在正态分布假设下利用最大似然法或者贝叶斯估计法估计分布密度参数,建立最小错误率Bayes分类器,写出得到的决策规则,将该分类器应用到测试样本,考察测试错误情况。
在分类器设计时可以考察采用不同先验概率(如对,对,对等)进行实验,考察对决策规则和错误率的影响。
图1-先验概率:
分布曲线图2-先验概率:
分布曲线
图3--先验概率:
分布曲线图4不同先验概率的曲线
有图可以看出先验概率对决策规则和错误率有很大的影响。
程序:
和
2.应用两个特征进行实验:
同时采用身高和体重数据作为特征,分别假设二者相关或不相关(在正态分布下一定独立),在正态分布假设下估计概率密度,建立最小错误率Bayes分类器,写出得到的决策规则,将该分类器应用到训练/测试样本,考察训练/测试错误情况。
比较相关假设和不相关假设下结果的差异。
在分类器设计时可以考察采用不同先验概率(如vs.,vs.,vs.等)进行实验,考察对决策和错误率的影响。
训练样本female来测试
图1先验概率vs.图2先验概率vs.
图3先验概率vs.图4不同先验概率
对测试样本1进行试验得图
对测试样本2进行试验
有图可以看出先验概率对决策规则和错误率有很大的影响。
程序和
3.自行给出一个决策表,采用最小风险的Bayes决策重复上面的某个或全部实验。
设以ceshi1单个特征身高进行试验:
决策表
W1
W2
W1
0
W2
0
closeall;
clearall;
X=120:
:
200;%设置采样范围及精度
pw1=;pw2=;%设置先验概率
sample1=textread('')%读入样本
samplew1=zeros(1,length(sample1(:
1)));
u1=mean(sample1(:
1));
m1=std(sample1(:
1));
y1=normpdf(X,u1,m1);%类条件概率分布
figure
(1);
subplot(2,1,1);
plot(X,y1);
title('F身高类条件概率分布曲线');
sample2=textread('')%读入样本
samplew2=zeros(1,length(sample2(:
1)));
u2=mean(sample2(:
1));
m2=std(sample2(:
1));
y2=normpdf(X,u2,m2);%类条件概率分布
subplot(2,1,2);
plot(X,y2);
title('M身高类条件概率分布曲线');
P1=pw1*y1./(pw1*y1+pw2*y2);
P2=pw2*y2./(pw1*y1+pw2*y2);
figure
(2);
subplot(2,1,1);
plot(X,P1);
title('F身高后验概率分布曲线');
subplot(2,1,2);
plot(X,P2);
title('M身高后验概率分布曲线');
P11=pw1*y1;
P22=pw2*y2;
figure(3);
subplot(3,1,1);
plot(X,P11);
subplot(3,1,2);
plot(X,P22);
subplot(3,1,3);
plot(X,P11,X,P22);
sample=textread('all')%读入样本
[result]=bayes(sample1(:
1),sample2(:
1),pw1,pw2);
%bayes分类器
function[result]=bayes(sample1(:
1),sample2(:
1),pw1,pw2);
error1=0;
error2=0;
u1=mean(sample1(:
1));
m1=std(sample1(:
1));
y1=normpdf(X,u1,m1);%类条件概率分布
u2=mean(sample2(:
1));
m2=std(sample2(:
1));
y2=normpdf(X,u2,m2);%类条件概率分布
P1=pw1*y1./(pw1*y1+pw2*y2);
P2=pw2*y2./(pw1*y1+pw2*y2);
fori=1:
50
ifP1(i)>P2(i)
result(i)=0;
pe(i)=P2(i);
else
result(i)=1;
pe(i)=P1(i);
end
end
fori=1:
50
ifresult(k)==0
error1=error1+1;
elseresult(k)=1
error2=error2+1;
end
end
ratio=error1+error2/length(sample);%识别率,百分比形式
sprintf('正确识别率为%.2f%%.',ratio)
作业2用身高/体重数据进行性别分类
(二)
基本要求:
试验直接设计线性分类器的方法,与基于概率密度估计的贝叶斯分离器进行比较。
具体做法:
同时采用身高和体重数据作为特征,用Fisher线性判别方法求分类器,将该分类器应用到训练和测试样本,考察训练和测试错误情况。
将训练样本和求得的决策边界画到图上,同时把以往用Bayes方法求得的分类器也画到图上,比较结果的异同。
解答:
Clc
clearall
sample1=textread('')%读入样本
sample2=textread('')%读入样本
[length1,width1]=size(sample1);
[length2,width2]=size(sample2);
One1=ones(length1,1);
One2=ones(length2,1);
plot(sample1(:
1),sample1(:
2),'r*',sample2(:
1),sample2(:
2),'bo')
title('Famale和male身高体重聚类图');
Y1=sample1(:
1:
2);
Y2=sample2(:
1:
2);
m1=mean(Y1);
m2=mean(Y2);
S1=(Y1-One1*m1)'*(Y1-One1*m1);
S2=(Y2-One2*m2)'*(Y2-One2*m2);
sw=S1+S2;
ww=inv(sw);
w=inv(sw)*(m1-m2)';
Y=[Y1;Y2];
z=Y*w;
holdon
t=z*w'/norm(w)^2;
plot(t(:
1),t(:
2))
fori=1:
length1+length2
plot([Y(i,1)t(i,1)],[Y(i,2)t(i,2)],'-.')
end
axis([12020040100])
title('fisher线性变换后');
grid
作业2图一
作业2图二
利用K-L变换进行特征提取的实验
一、基本要求
用和的数据作为本次实验使用的样本集,利用K-L变换对该样本集进行变换,与过去用Fisher线性判别方法或其它方法得到的分类面进行比较,从而加深对所学内容的理解和感性认识。
二、具体做法
1.不考虑类别信息对整个样本集进行K-L变换(即PCA),并将计算出的新特征方向表示在二维平面上,考察投影到特征值最大的方向后男女样本的分布情况并用该主成分进行分类
2.利用类平均向量提取判别信息,选取最好的投影方向,考察投影后样本的分布情况并用该投影方向进行分类。
3.将上述投影和分类情况与以前做的各种分类情况比较,考察各自的特点和相互关系。
三、实验原理
K-L变换是一种基于目标统计特性的最佳正交变换。
它具有一些优良的性质:
即变换后产生的新的分量正交或者不相关;以部分新的分量表示原矢量均方误差最小;变换后的矢量更趋确定,能量更集中。
这一方法的目的是寻找任意统计分布的数据集合之主要分量的子集。
设n维矢量
,其均值矢量
,协方差阵
,此协方差阵为对称正定阵,则经过正交分解克表示为
其中
,
为对应特征值的特征向量组成的变换阵,且满足
。
变换阵
为旋转矩阵,再此变换阵下
变换为
在新的正交基空间中,相应的协方差阵
。
通过略去对应于若干较小特征值的特征向量来给y降维然后进行处理。
通常情况下特征值幅度差别很大,忽略一些较小的值并不会引起大的误差。
1.不考虑类别信息对整个样本集进行K-L变换(即PCA)
(1)读入和两组数据,组成一个样本集。
计算样本均值向量
和协方差
(2)计算协方差阵C的特征值
和特征向量U
(3)选取特征值最大的特征向量作为投影方向
(4)选取阈值进行判断
2.利用类平均信息提取判别信息
(1)读入和两组数据,分别计算样本均值向量
和协方差
,及总均值向量
(2)计算类间离散度矩阵Sb(
)与类内离散度矩阵Sw(
)
(3)用
比较分类性能,选择最佳投影方向
(4)选取阈值进行判断
四、实验结果与分析
1.不考虑类别信息对整个样本集进行K-L变换(即PCA)
U=,T,P1=,P2=
判错个数
错误率
采用K-L变换判别方法
14
14%
采用Fisher线性判别方法
12
12%
2.利用类平均信息提取判决信息
U=,T,P1=,P2=
判错个数
错误率
采用K-L变换判别方法
13
13%
采用Fisher线性判别方法
12
12%
%不考虑类别信息
clc;
clearall;
[FHFW]=textread('C:
\Users\rengang\Desktop\homework\','%f%f');
[MHMW]=textread('C:
\Users\rengang\Desktop\homework\','%f%f');
FA=[FHFW];FA=FA';
MA=[MHMW];MA=MA';
fork=1:
50
NT(:
k)=FA(:
k);
end
fork=51:
100
NT(:
k)=MA(:
k-50);
end
X=(sum(NT')/length(NT))';%这里NT'是一个100*2的矩阵,X为总样本均值。
c=cov(NT');
[u,v]=eig(c);%求矩阵c的全部特征值,构成对角阵v,并求c的特征向量构成u的列向量。
[a,b]=max(v);
[c,d]=max(a);
U=u(:
d)
x=U'*X;
errorg=0;
errorb=0;
fork=1:
100
TT(:
k)=U'*NT(:
k);
ifk<=50
ifTT(:
k)>x
errorg=errorg+1;
end
else
ifTT(:
k)errorb=errorb+1;
end
end
end
errorg
errorb
error=errorg+errorb
h=error/100
%利用类平均信息
clc;
clearall;
[FHFW]=textread('C:
\Users\rengang\Desktop\homework\','%f%f');
[MHMW]=textread('C:
\Users\rengang\Desktop\homework\','%f%f');
FA=[FHFW];FA=FA';
MA=[MHMW];MA=MA';
a=cov(FA');
b=cov(MA');
x1=(sum(FA')/length(FA))';
x2=(sum(MA')/length(MA))';
Sw=*a+*b;
[u,v]=eig(Sw);
x=(x1+x2)/2;
Sb=*(x1-x)*(x1-x)'+*(x2-x)*(x2-x)';
ifu(:
1)'*Sb*u(:
1)/v(1,1)>u(:
2)'*Sb*u(:
2)/v(2,2)
u=u(:
1);
else
u=u(:
2);
end
fork=1:
50
TF(:
k)=u'*FA(:
k);
TM(:
k)=u'*MA(:
k);
end
w=(sum(TF)+sum(TM))/100;
errorg=0;
errorb=0;
fork=1:
50
ifTF(:
k)>w
errorg=errorg+1;
end
ifTM(:
k)errorb=errorb+1;
end
end
errorg
errorb
error=errorg+errorb
h=error/100
%留一法在测试集上的运用
clc
clearall;
[T1T2]=textread('','%f%f%*s');%读取测试集
TT=[T1T2];%构造测试集矩阵
T=TT';
[k3l3]=size(T);
TG=zeros(2,50);
TB=zeros(2,250);
fori=1:
50
TG(:
i)=T(:
i);%构造矩阵TG
end
forj=51:
l3
TB(:
j-50)=T(:
j);
end
m1=2;
m2=2;
n1=50;
n2=250;
tempA=zeros(m1,n1-1);
count1=0;
count2=0;
fori=1:
n1%在n1个样本中取出一个然后测试
forj=1:
(i-1)
tempA(:
j)=TG(:
j);
end
forj=(i+1):
n1
tempA(:
j-1)=TG(:
j);
end
[w,y0]=fisher((tempA.'),TB');
yy=(w.')*[TG(1,i);TB(2,i)];
ifyycount1=count1+1;
end
end
tempB=zeros(m2,n2-1);
fori=1:
n2%在n2个样本本中取出一个然后测试
forj=1:
(i-1)
tempB(:
j)=TB(:
j);
end
forj=(i+1):
n2
tempB(:
j-1)=TB(:
j);
end
[w,y0]=fisher(TG',(tempB.'));
yy=(w.')*[TB(1,i);TB(2,i)];
ifyy>y0%男的,错误记1
count2=count2+1;
end
end
count1
count2
error_ratio=(count1+count2)/(n1+n2)%错误率
作业四
机器人视觉伺服控制方法及其应用的研究
机器人视觉伺服控制方法研究的基本方法:
机器人视觉伺服控制方法是一门交叉性、综合性较强的学科,研究内容涉及计算机视觉、图像处理、模式识别和机器人运动学、动力学、控制理论、实时计算等多学科知识【“。
考虑机器人手眼系统(Eye-in·Hand)对静止物体抓取问题,机器人视觉伺服控制算法的基本思想为,首先使机器人末端执行器上摄像机在目标物体抓取位置上获得目标物体图像,称之为目标图像;则当机器人末端执行器在空间未知点对目标物体进行抓取任务时,安装在机器人末端执行器上的摄像机会获得当前位置上的图像,称之为当前图像;则当前图像与目标图像就存在一误差向量,该误差向量可从两幅图像的图像特征减操作中获取,以这个误差向量为机器人视觉伺服控制系统的控制误差,使该误差向量最终为零,则实现了机器人手眼系统在机器人视觉伺服控制算法下的物体抓取任务。
如图1.1所示,表示了机器人视觉伺服控制方法的基本原理,即利用视觉传感器得到的图像作为反馈信息,构造机器人的位姿的闭环控制。
.2基于图像的机器人视觉伺服控制方法研究内容
图像采集、处理和特征提取
机器人环境信息经摄像机CCD和图像采集卡采样后,输出数字图像信息,并经量化后得到的数字图像以供视觉伺服控制算法处理。
目前,计算机图像采集卡及其图像处理计算机处理系统的性能己基本可胜任机器人视觉伺服实验实时视频处理的要求。
如常用图像采集卡有,美国国家仪器公司(NationalInstrumentlnc.J推出的(IMAQ)NIPCI.1411图像采集卡和LabVIEW等图像处理软硬件系统,可构架工业级视频处理软系统,实现对NTSC、PAL、S-Video等视频格式进行高精实时采样和处理p…。
英国EPIX公司推出的高速图像采集设备,P1CX[系列图像采集卡和XCAP图像处理软件系统,可实时高速采集图像高达100帧/秒口”。
还有本文实验平台所采用的,由北京微视电子技术有限责任公(MicroViewlnc.)推出的MVPCIMiNi/SDK型图像采集卡,其实时性要求不是很高但完全满足了本文机器人视觉伺服控制算法实验系统的要求,具体特点将在第二章实验系统中进行详细介绍。
图像雅可比矩阵的估计基于图像的视觉伺服控制算法,需要根据所选的图像特征组来构造图像雅可比矩阵,以把目标物体信息从图像特征空间映射到机器人任务空间。
图像雅可比矩阵的概念是由Weiss首次提出,当时称为特征敏感矩阵、交互矩阵或B矩阵等。
图像雅可比矩阵是描述图像特征的变化和任务空间中机器人末端执行器位姿变化的一个关系矩阵。
设r是机器人任务空间坐标系丁中机器人末端执行器位姿矢量,r∈
T£SE3。
对r求导,P代表机器人末端执行器位姿的变化率;设厂为k维图像特征空间F。
的特征向量,则.厂为特征向量导数,表示图像特征向量的变化率。
图像雅可比矩阵,,,则表示任务空间7_的导数空间i到图像特征向量空间∥的导数空间f之间的一个变换矩阵,如式(1.1)所示,
视觉伺服控制器(VisualServoingController)
当完成机器人视觉伺服控制系统的建模后,剩下就是控制问题。
视觉伺服控制器是机器人视觉伺服控制系统中,以建立在当前图像和目标图像上所选目标图像特征组之间的差值向量e为反馈控制误差的控制系统。
视觉伺服控制方法与一般控制系统的控制方法相似,故最常用控制方法为PID控制法,将机器人当成一被控对象,输入为机器人任务空间中末端执行器的位置或速度运动矢量,不考虑其动态特性,则根据视觉反馈误差e可建立如(1.2)所示控制律。
式中“为控制量输入,可在图像特征空间、工作空间或关节空间中表示;世,、K,、K。
分别为比例、积分、微分三个系数矩阵。
多数情况下,可直接根据误差e,进行坐标变换和轨迹规划后送入机器人控制器,这相当于髟,取单位矩阵,K,、芷。
取零的纯比例控制。
机器人视觉伺服控制系统的图像采集
图像采集卡其他API函数,如视频采集窗口的设定、视频参数设置等接口函数
由图像采集和处理流程图2.10可知,首先,计算机完成图像采集卡的初始化工作,接着对图像采集卡进行软件设置.包括视频源、颜色设置、采集窗口的设定、视频参数设置和内存域地址等设定。
设定完成后,即可发送采集图像命令,等待采集后回送内存图像数据指针值.即可对图像数据进行处理,图像处理完成后即释放控制权,以防止计算机资源的耗尽。
最后,根据图像处理结果和视觉伺服控制算法计算机器人反馈控制信息量;或满足条件后停LE图像采集卡的采集操作而结束程序。
基于位置的机器人视觉伺服控制算法建模
机器人手眼系统一般有Eye-in-HandSystem和Eye-to-HandSystem之分,Eye-in.Hand
System是指将作为视觉传感器的CCD摄像机安装在机器人末端执行器上,CCD摄像机随着机器人末端执行器位姿运动而运动;而Eye.to.HandSystem是指将CCD摄像机安装在全局环境中某固定位置或具有某种已知运动规律的运动位置上,在线观察和监视机器人末端执行器及其周围环境中目标物体的位姿运动。
由于Eye-in-HandSystem中CCD摄像机视野的灵活性和开阔性.一定程度上满足了机器人视觉伺服控制方法研究对视觉反馈控制信息输入敏感性和丰富性要求,因此,以Eye—in-HandSystem机器人手眼系统为实验对象的机器人视觉
伺服控制算法研究得到了充分重视,如图2-l所示为本文基于Eye.in.HandSystem模型构架的典型机器人视觉伺服控制系统实验平台。
机器人视觉系统一般由CCD摄像机、图像采集卡和计算机组成,其输入图像序列为标准数字视频信号.数字视频由连续数字图像帧组成,每帧数字图像为M×N维整型数组,任意^,行N列的数组点为图像象素点(Pixel)坐标,数组值为对应图像象素点的灰度值,按色彩分辨率不同而采用不同域值进行采样,如16色、256色和16Bit真色彩等域值,若采用256色作为采样域值时,则系统采样时,用0-256之间数值表示图像的灰度等级。
由于图像处理算法的局限性,一般计算机视觉系统采用256色域值即可。
如图3.1所示,在图像上定义直角坐标系U,v,每一象素点坐标(“,v)分别表示该象素在图像数组中的列数、行数由于“,v坐标系是基于象素点的离散坐标系统,称为图像象素坐标系。
图像象素坐标系并没有用物理单位元表示象素点在图像中的位置,因此建立以物理单位元(毫米:
mm)的图像物理坐标系x,Y,以方便摄像机定标的数学建模。
设X与“轴、y与v轴平行,D1为x,Y坐标系的原点。
设Dl在甜,V坐标系中的坐标为(Ⅳ。
,v。
),每个象素点在z、Y轴方向上的物理。
基于人工势能场的视觉伺服轨迹规划算法的控制结构
基于人工势能场的机器人视觉伺服轨迹规划算法控制误差直接定义在图像特征空间中。
其主要原因在于基于图像视觉伺服控制算法较基于位置的视觉伺服控制算法有更好的稳定性。
则基于人工势能场的机器人视觉伺服轨迹规划算法控制误差e定义为如式(6.371所示。
式中j‘(,)是随着时间变化而构造的机器人轨迹上摄像机目标图像特征组值,其值为经人工势能场法的视觉伺服轨迹规划的目标机器人位姿轨迹参考数据点r“)的三次样条插补算法计算而得的图像特征组值。
以+为图像雅可比矩阵,的伪逆矩阵估算值,其计算方法已在第四章中进行了讨论。
由式(6·37)可知,作为机器人视觉伺服系统的反馈控制误差e,由于选择以随时间变化,依据人工势能场而构造的机器人规划轨迹上摄像机获得图像特征组值为参考的相对控制误差,在图像空间和机器人结构空间势能场的约束条件下,使得目标物体始终保持在摄像机视野范围内,e的变化也在一个很小范围内,且e定义在图像特征空间中,使得该算法在摄像机建模误差和控制系统噪声干扰等方面具有较好的稳定性。
综上所述,假设摄像机定标模型和目标物体3D构件模型已知的条件下,基于人工势能场的机器人视觉伺服轨迹规划算法控制流程,如图6-6所示,基于人工势能场的机器人视觉伺服轨迹规划算法步骤如下:
基于人工势能场法的视觉伺服轨迹规划算法实