三维高斯模型 opencv实现

原创 2012年03月25日 16:36:28
OnProbabilityModel()
{
	int i;
	for(int x=0;x<workImg->height;x++)
	{
		for(int y=0;y<workImg->width;y++)
		{
			//double cur[3];
			CvMat* cur=cvCreateMat(3,1,CV_32F);
			for(i=0;i<3;i++){
				double tt=((uchar*)(workImg->imageData+x*workImg->widthStep))[y*3+i];
				cvmSet(cur,i,0,tt);
			}
			CvMat dst=cvRGB2YCbCr(cur);
			if(CalProbability(WHITE,&dst)<0.1&&CalProbability(YELLOW,&dst)<0.1)
				for (i=0;i<3;i++)
				((uchar*)(workImg->imageData+x*workImg->widthStep))[y*3+i]=0;
		}
	}
	Invalidate();
}


double CalProbability(int classid,CvMat* cur)
{
	/************************************************************************/
	/* function:
	一个像素点cur[3]={r,g,b}; 它属于classid色类的概率
	*/
	/************************************************************************/
	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);

	//double tmp[3][3],tmp1[3][3];
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	temp=1/pow(2*PI,3/2)/sqrt(norm[classid]);
	//cvmGetMat()

	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=cvNorm(tmp,0,CV_L1,0);
	t1=cvmGet(res,0,0);
	t1*=(-0.5);
	temp*=pow(Ezhishu,t1);

	return temp;
}


高斯(核)函数简介

高斯(核)函数简介  1函数的基本概念 所谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数。通常定义为空间中任一点x到某一中心xc之间欧氏距...
  • rns521
  • rns521
  • 2012年04月06日 21:56
  • 13223

【OpenCV】高斯混合背景建模

OpenCV中实现了两个版本的高斯混合背景/前景分割方法(Gaussian Mixture-based Background/Foreground Segmentation Algorithm)[1-...
  • xiaowei_cqu
  • xiaowei_cqu
  • 2014年04月14日 17:40
  • 48487

Opencv学习笔记(十)高斯混合模型

原创文章,转载请注明:http://blog.csdn.net/crzy_sparrow/article/details/7413019      好吧,我承认这个题目有点噱头,其实本文要讲的一般...
  • crzy_sparrow
  • crzy_sparrow
  • 2012年03月30日 21:28
  • 48697

学习笔记一:在VS2013下配置OpenCV3.0并运行SIFT(原来版本为VS2010下的OpenCV2.2)

1.在官网下载并安装OpenCV3.0并
  • gaoyinzhu
  • gaoyinzhu
  • 2014年09月28日 21:11
  • 2491

openCV的矩阵乘法

1 转自http://nestle001.blog.hexun.com/32159866_d.html ------------------------------------------ Op...
  • lcj_cjfykx
  • lcj_cjfykx
  • 2013年08月13日 02:27
  • 1410

二维高斯核实现

因在工程中,要求代码可移植性,经常是用纯C写的。下面代码是计算2-D高斯核,然后将计算得到的2-D高斯核可以用来对图像进行高斯滤波。 /* * Eclispe CDT */ #include ...
  • utimes
  • utimes
  • 2014年02月25日 20:21
  • 2277

如何获取两个算子之间的距离

 当有时候,我们需要知道两个算子之间距离的时候,中的distance函数就粉墨登场了。它的使用十分的简单,比如 dist = distance( container.begin(), containe...
  • hello_wyq
  • hello_wyq
  • 2006年07月05日 10:46
  • 775

混合高斯背景模型及opencv实现

一、理论 混合高斯背景建模是基于像素样本统计信息的背景表示方法,利用像素在较长时间内大量样本值的概率密度等统计信息(如模式数量、每个模式的均值和标准差)表示背景,然后使用统计差分(如3σ原则)进...
  • xw20084898
  • xw20084898
  • 2014年12月09日 17:20
  • 14435

概率图模型学习(6)——高斯网络模型1

由于最近用到了多特征高斯分布,所以提前看了这一章。 1.      多元高斯分布 个人总结高斯分布其实就三个元素:期望、方差、概率密度函数。而多元高斯分布和单高斯分布不同点在于期望由一个值变成了期...
  • juanjuan1314
  • juanjuan1314
  • 2016年12月03日 15:16
  • 1265
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:三维高斯模型 opencv实现
举报原因:
原因补充:

(最多只允许输入30个字)