图像识别实验报告学院:信息工程学院专业:信号与信息处理姓名:唐雄辉学号:2009124022授课教师:陈柘2010年7月5日一实验内容:采用基于二值数据的Bayes分类方法,基于最小错误率的Bayes分类方法和基于最小风险的Bayes分类方法三种算法,完成字符(0-9,A-Z)的识别:二实验方法1、Bayes公式若已知总共有M类物体,以及各类在这d维特征空间的统计分布,具体说来是已知各类别wi=1,2,…,M的先验概率P(wi)及类条件概率密度函数P(X|wi)。对于待测样品,Bayes公式可以计算出该样品分属各类别的概率,叫做后验概率,看X属于哪个类的可能性最大,就把X归于可能性最大的那个类,后验概率作为识别对象归属的依据。Bayes公式如下:njjjiiiPXPPXPXP1)()|()()|()|(类别的状态是一个随机变量,而某种状态出现的概率是可以估计的Bayes公式体现了先验概率、类概率密度函数、后验概率三者之间的关系。(1)先验概率P(wi)先验概率P(wi)针对M个事件出现的可能性而言,不考虑其他任何条件。例如由统计资料表明总药品数为n,其中正常药品数为n1异常药品数为n2则211)(nnpnnP22)(称P(wi)及P(w2)为先验概率。显然在一般情况下正常药品占比例大,即P(wi)P(w2),仅按先验概率来决策,就会把所有药品都划归为正常药品,并没有达到将正常药品与异常药品区分开的目的。这表明由先验概率所提供的信息太少。(2)类条件概率密度函数P(X|wi)类条件概率密度函数P(X|wi)是指在已知某类别的特征空间中,出现特征值X的概率密度。即第wi类样品它的属性X是如何分布的。假定只有其一个特征进行分类,即d=1,并已知这两类的类条件概率密度函数分布,如图1所示,概率密度函数P(X|wi)是正常药品的属性分布,概率密度函数P(X|w2)是异常药品的属性分布。图1、类条件概率(3)后验概率后验概率是指呈现状态X时,该样品分属各类别的概率,这个概率值可以作为识别对象归属的依据。由于属于不同类的待识别对象存在着呈现相同观察值的可能,即所观察到的某一样品的特征向量为X,而在M类中又有不止一类可能呈现这一X值,它属于各类的概率又是多少呢?这种可能性可用P(X|wi)表示。可以利用Bayes公式来计算这种条件概率,称之为状态的后验概率P(wi|X)。njjjiiiPXPPXPXP1)()|()()|()|(P(wi|X)是表示在X出现条件下,样品为wi类的概率。2、基于最小错误率的Bayes决策假定得到一个待识别量的特征X后,每个样品X有N个特征,即X=(x1,x2,…,xN)通过样品库,计算先验概率P(wi)及类条件概率密度函数P(wi|X),得到呈现状态X时,该样品分属各类别的概率,显然这个概率值可以作为识别对象判属的依据。从后验概率分布图可见,在X值小时,药品被判为正常是比较合理的,判断错误的可能性小。基于最小错误概率的贝叶斯决策就是按后验概率的大小做判决的。这个规则又可以根据判别数目,写成不同的几种等价形式。两类问题若每个样品属于wi,w2类中的一类,已知两类的先验概率分别为P(wi)和P(w2)两类的类条件概率密度分别为P(X|wi)和P(X|w2)。则任给一X,判断X的类别。由Bayes公式可知:)(/)()|()|(XPPXPXPjjj由全概率公式可知:)()|()(1jMjjPXPXP其中M为类别。对于两类问题)()|()()|()(2211PXPPXPXP所以用后验概率来判别为:判别函数还有另外两种形式,即似然比形式:其中L(x)在统计学中称为似然比,而P(wi)/P(w2)称为似然比阈值,其对数形式:3、基于最小风险的Bayes决策上面讨论了使错误率最小的Bayes决策规则。然而当接触到实际问题是,可以发现使错误率最小并不一定是一个普遍适用的最佳选择,如图2所示:图2、基于最小错误率和基于最小风险分类比较直线B的划分把正常药品误判为异常药品,这样会扩大总错误率,给企业带来一些损失:直线A的划分将异常药品误判为正常药品,虽然是错误分类最小,但会使病人因失去正确的治疗而遭受极大地损失。可见使错误率最小并不一定是最佳选择。实践中,从根据不同性质的错误会引起不同程度的损失考虑出发,宁肯扩大一些总的错误率,但也要使总的损失减少。这时直线B的划分为最实用。这会引进一个与损失有关联的概念——风险,在做出决策时,要考虑所承担的风险。基于最小风险的Bayes决策规则正是为了体现这一点而产生的。基于最小错误率,在分类时取决于观测值X对各类的后验概率中之最大值,因而也就无法估计做出错误决策所带来的损失。为此不妨将做出判决的依据,从单纯考虑后验概率最大值,改为对该观测值X条件下各状态后验概率要求加权和的方式,表示成:)|(),()(1XPjaxRjMjii其中ai代表将X判为wi类的决策;观测样品X实属于wj,由于采用ai决策而被判为wi时所造成的损失。Ri则表示了观测值X被判为i类时损失的均值。4、基于二值数据的Bayes分类方法所谓二值数据,即各样品的每一特征只取数值“1”或“0”。对于数字的分类问题,在每一个数字图像提取特征时,定义了N*N模板,在本程序中N=5,将每个样品的长度和宽度5等份,构成一个5*5模板,相当于将模板笼罩在对应的样品上,对于每一份内的像素个数进行累加统计,除以该模板每一份的面积总数。设置阈值T=0.1,模板所对应的元素黑像素占有率大于T,则特征值取数值“1”;负责取“0”。三实验步骤1、基于二值数据的Bayes分类方法的实验步骤:(1)计算先验概率P(wi),先验概率可由各类的样品数和样品总数近似计算,得P(wi)=Ni/N,i=0,1,2,…,9其中P(wi)为类别为数字i的先验概率,Ni位数字i的样品数,N为样品总数(2)计算Pj(wi),再计算类条件概率P(X|wi)得)2/()1()(10iNxkkjijNxPii=0,1,2,…,9,j=0,1,2…,24Pj(wi)表示样品X(x0,x1,x2,…,x24)属于wi类条件下,X的第j个分量为1(xj=1)的概率估计值。由此可以计算P(xj=1|X∈wi)=Pj(wi)P(xj=0|X∈wi)=1-Pj(wi)i=0,1,2,…,9,j=0,1,2,…,24样品X的类条件概率为:P(X|wi)=P{X=(x0,x1,x2,…,x24)|X∈wi}=∏j=024P(xj=a|X∈wi)i=0,1,2,…,9其中a=0或1。(3)应用Bayes公式求后验概率,得)|()(...)|()()|()()|()()|(991100XPPXPPXPPXPPXPiiii=0,1,2,…,9后验概率的最大值的类别(0~9)就是所要识别数字所属的类别。算法实现代码:/*******************************************************************函数名称:BayesErzhishuju()*函数类型:int*函数功能:基于二值数据的Bayes分类器,返回所要识别的数字的类别******************************************************************/intClassification::BayesErzhishuju(){doublePw[10];//先验概率P(wj)=Nj/NdoubleP[10][25];//Pj(wi)wi:wi类,j:第j个特征doublePXw[10];//类条件概率P(X|wj)doublePwX[10];//后验概率P(wj|X)inti,j;//求先验概率intn[10];//各类样品数intN=0;//样品总数for(i=0;i10;i++){//各数字类别样品数n[i]=pattern[i].number;N+=n[i];//样品总数}for(i=0;i10;i++)Pw[i]=(double)n[i]/(double)N;//先验概率for(i=0;i10;i++){for(j=0;j25;j++){intnumof1=0;//二值数据中1的个数for(intk=0;kpattern[i].number;k++)numof1+=pattern[i].feature[k][j]0.1?1:0;P[i][j]=(double)(numof1+1)/(double)(n[i]+2);}}for(i=0;i10;i++){doublep=1;for(intj=0;j25;j++){p*=(testsample[j]0.1)?P[i][j]:1-P[i][j];}PXw[i]=p;}doublePX=0.0,maxP=0.0;intnumber;for(i=0;i10;i++){PX+=Pw[i]*PXw[i];}for(i=0;i10;i++){PwX[i]=Pw[i]*PXw[i]/PX;if(PwX[i]maxP){maxP=PwX[i];number=i;}}returnnumber;}(4)实验效果图基于二值数据的Bayes分类实现效果如图3所示:2、基于最小错误率的Bayes分类实现的实验步骤数字识别属于多类情况,每类样品呈正态分布。(1)求出每一类样品的均值9,....2,1,0,),...,,(1211ixxxXNXTimiiNjijiiiNi代表wi类的样品个数,n代表特征数目。(2)求每一类的协方差矩阵nkjxxxxNiklkNljljiijkiS,...,2,1,),)(11L代表样品在wi类的第l个样品,第j个特征值。Xlj代表wi类的第l个样品,第j个特征值。Xj代表wi类的Ni个样品第j个特征的平均值。Xlk代表wi类的第l个样品,第k个特征值。XK代表wi类的Ni个样品第k个特征的平均值。wi类的协方差矩阵为:(3)计算出出每一类的协方差矩阵的逆矩阵Si-1以及协方差矩阵的行列式{Si}。(4)求出每一类的先验概率P(wi)≈N1/N,i=0,1,2,…,9其中P(wi)为类别为数字i的先验概率,N1为数字i的样品数,N为样品总数。(5)将各个数值代入判别函数||ln21)(ln)()(21)(1iiiiTiiSPXXXXXhS(6)判别函数最大值所对应类别就是数字的类别。算法实现代码:/*******************************************************************函数名称:BayesLeasterror()*函数类型:int*函数功能:最小错误概率的Bayes分类器,返回所要识别的数字的类别******************************************************************/intClassification::BayesLeasterror(){doubleX[25];//待测样品doubleXmeans[25];//样品的均值doubleS[25][25];//协方差矩阵doubleS_[25][25];//S的逆矩阵doublePw;//先验概率doublehx[10];//判别函数inti,j,k,n;for(n=0;n10;n++)//循环类别0~9{intnum=pattern[n].number;//样品个数for(i=0;i25;i++)Xmeans[i]=0.0;for(k=0;knum;k++){for(i=0;i25;i++)Xmeans[i]+=pattern[n].feature[k][i]0.10?1.0:0.0;}for(i=0;i25;i++)Xmeans[i]/=(double)num;doublemode[200][25];for(i