三维高斯模型 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
  • 12780

常见三维重建算法及其实现(含源码下载链接)

这里三维重建,输入的是断层图像切片,节选于自己毕业设计,文末贴出一些关键代码。 三维重建的方法大概有两种:直接将体素投影到计算机显示平面的方法被称为体绘制(Volume Rendering),也可...

【信号、图像、Matlab】如何得到高斯滤波器的整数模板

【信号、图像、Matlab】如何得到高斯滤波器的整数模板如何得到高斯滤波器的整数模板?这个问题困扰了我两天,上网搜索的代码,基本上都生成的小数,有的文档给写了3*3,5*5,7*7的整数形式,但是没有...

三维重建面试8:点云图像的滤波方法

点云数据是三维空间的离散数据,不是类似于PLY格式的点线概念,因此可以使用所谓的“滤波方法”。点云数据若非看成深度map数据,则不再适用于使用二维图形的核卷积方法。此外,滤波方法与点云存储格式密切相关...

运动目标的背景建模-混合高斯背景建模和KNN模型建模的OpenCV代码实现

运动检测通常用于分析视频序列中的移动目标,如车辆和行人检测,其中所需要解决的关键问题是在场景中分离前景目标与背景。既然要分离,那就要先求解出背景,背景建模的作用就是对背景进行求解。求解出背景之后,利用...

OpenCV实现SfM:双目三维重建

  • 2015年09月02日 14:29
  • 30.71MB
  • 下载

OPENCV中混合高斯背景模型的实现

看高斯混合模型的论文的时候感觉一头雾水,主要是那些概率公式比较难懂,看了几遍论文和代码才有了一点感觉,以下是个人的对混合高斯背景模型代码的理解,后面会通过进一步理解不断对此贴修正..... 注:本人...

OPENCV中混合高斯背景模型的实现

看高斯混合模型的论文的时候感觉一头雾水,主要是那些概率公式比较难懂,看了几遍论文和代码才有了一点感觉,以下是个人的对混合高斯背景模型代码的理解,后面会通过进一步理解不断对此贴修正..... 注:本人...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:三维高斯模型 opencv实现
举报原因:
原因补充:

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