- double CalProbability(int classid,CvMat* cur)
- {
-
-
-
- double temp,t1;
-
- CvMat inv_w,inv_y;
- cvInitMatHeader(&inv_w,3,3,CV_32F,Inv_white);
- cvInitMatHeader(&inv_y,3,3,CV_32F,Inv_yellow);
- CvMat* tmp=cvCreateMat(1,3,CV_32F);
- CvMat* tmp1=cvCreateMat(1,3,CV_32F);
- CvMat* res=cvCreateMat(1,1,CV_32F);
-
-
-
- temp=1/pow(2*PI,3/2)/sqrt(norm[classid]);
-
-
- for (i=0;i<3;i++) {
- double x=cvmGet(cur,i,0);
- x-=mean_ycbcr[classid][i];
- if(x<0)
- x=0;
- cvmSet(cur,i,0,x);
- }
-
- double c1=cvmGet(cur,0,0);
- double c2=cvmGet(cur,1,0);
- double c3=cvmGet(cur,2,0);
-
- cvTranspose(cur,tmp);
-
- if(classid==WHITE)
- cvmMul(tmp,&inv_w,tmp1);
- else if(classid==YELLOW)
- cvmMul(tmp,&inv_y,tmp1);
-
- cvmMul(tmp1,cur,res);
-
- t1=cvmGet(res,0,0);
- t1*=(-0.5);
- temp*=pow(Ezhishu,t1);
-
- return temp;
- }
from: http://blog.csdn.net/abcjennifer/article/details/7392373