1. OnProbabilityModel()
  2. {
  3. int i;
  4. for(int x=0;x<workImg->height;x++)
  5. {
  6. for(int y=0;y<workImg->width;y++)
  7. {
  8. //double cur[3];
  9. CvMat* cur=cvCreateMat(3,1,CV_32F);
  10. for(i=0;i<3;i++){
  11. double tt=((uchar*)(workImg->imageData+x*workImg->widthStep))[y*3+i];
  12. cvmSet(cur,i,0,tt);
  13. }
  14. CvMat dst=cvRGB2YCbCr(cur);
  15. if(CalProbability(WHITE,&dst)<0.1&&CalProbability(YELLOW,&dst)<0.1)
  16. for (i=0;i<3;i++)
  17. ((uchar*)(workImg->imageData+x*workImg->widthStep))[y*3+i]=0;
  18. }
  19. }
  20. Invalidate();
  21. }
  1. double CalProbability(int classid,CvMat* cur)
  2. {
  3. /************************************************************************/
  4. /* function:
  5. 一个像素点cur[3]={r,g,b}; 它属于classid色类的概率
  6. */
  7. /************************************************************************/
  8. double temp,t1;
  9. CvMat inv_w,inv_y;
  10. cvInitMatHeader(&inv_w,3,3,CV_32F,Inv_white);
  11. cvInitMatHeader(&inv_y,3,3,CV_32F,Inv_yellow);
  12. CvMat* tmp=cvCreateMat(1,3,CV_32F);
  13. CvMat* tmp1=cvCreateMat(1,3,CV_32F);
  14. CvMat* res=cvCreateMat(1,1,CV_32F);
  15. //double tmp[3][3],tmp1[3][3];
  16. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  17. temp=1/pow(2*PI,3/2)/sqrt(norm[classid]);
  18. //cvmGetMat()
  19. for (i=0;i<3;i++)    {
  20. double x=cvmGet(cur,i,0);
  21. x-=mean_ycbcr[classid][i];
  22. if(x<0)
  23. x=0;
  24. cvmSet(cur,i,0,x);
  25. }
  26. double c1=cvmGet(cur,0,0);
  27. double c2=cvmGet(cur,1,0);
  28. double c3=cvmGet(cur,2,0);
  29. cvTranspose(cur,tmp);//转置
  30. if(classid==WHITE)
  31. cvmMul(tmp,&inv_w,tmp1);
  32. else if(classid==YELLOW)
  33. cvmMul(tmp,&inv_y,tmp1);
  34. cvmMul(tmp1,cur,res);
  35. //t1=cvNorm(tmp,0,CV_L1,0);
  36. t1=cvmGet(res,0,0);
  37. t1*=(-0.5);
  38. temp*=pow(Ezhishu,t1);
  39. return temp;
  40. }

from: http://blog.csdn.net/abcjennifer/article/details/7392373

三维高斯模型 opencv实现的更多相关文章

  1. Opencv混合高斯模型前景分离

    #include "stdio.h" #include "string.h" #include "iostream" #include &q ...

  2. 混合高斯模型:opencv中MOG2的代码结构梳理

    /* 头文件:OurGaussmix2.h */ #include "opencv2/core/core.hpp" #include <list> #include&q ...

  3. OpenCV混合高斯模型函数注释说明

    OpenCV混合高斯模型函数注释说明 一.cvaux.h #define CV_BGFG_MOG_MAX_NGAUSSIANS 500 //高斯背景检测算法的默认参数设置 #define CV_BGF ...

  4. [zz] 混合高斯模型 Gaussian Mixture Model

    聚类(1)——混合高斯模型 Gaussian Mixture Model http://blog.csdn.net/jwh_bupt/article/details/7663885 聚类系列: 聚类( ...

  5. 运动检测(前景检测)之(二)混合高斯模型GMM

    运动检测(前景检测)之(二)混合高斯模型GMM zouxy09@qq.com http://blog.csdn.net/zouxy09 因为监控发展的需求,目前前景检测的研究还是很多的,也出现了很多新 ...

  6. [转]运动检测(前景检测)之(二)混合高斯模型GMM

    转自:http://blog.csdn.net/zouxy09/article/details/9622401 因为监控发展的需求,目前前景检测的研究还是很多的,也出现了很多新的方法和思路.个人了解的 ...

  7. PRML读书会第九章 Mixture Models and EM(Kmeans,混合高斯模型,Expectation Maximization)

    主讲人 网络上的尼采 (新浪微博: @Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:10:56 今天的主要内容有k-means.混合高斯模型. EM算法.对于k-me ...

  8. 混合高斯模型(GMM)推导及实现

    作者:桂. 时间:2017-03-20  06:20:54 链接:http://www.cnblogs.com/xingshansi/p/6584555.html 声明:欢迎被转载,不过记得注明出处哦 ...

  9. 混合高斯模型(Mixtures of Gaussians)和EM算法

    这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与k-means一样,给定的训练样本是,我们将隐含类别标签用表示 ...

随机推荐

  1. [深入浅出Windows 10]应用实战:Bing在线壁纸

    本章介绍一个使用Bing搜索引擎背景图接口实现的一个应用——Bing在线壁纸,讲解如何使用网络的接口来实现一个壁纸下载,壁纸列表展示和网络请求封装的内容.通过该例子我们可以学习到如何使用网络编程的知识 ...

  2. [深入浅出WP8.1(Runtime)]网络编程之HttpClient类

    12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...

  3. BZOJ4499: 线性函数

    Description 小C最近在学习线性函数,线性函数可以表示为:f(x) = kx + b.现在小C面前有n个线性函数fi(x)=kix+bi ,他对这n个线性函数执行m次操作,每次可以: 1.M ...

  4. Crystal Reports 2008(水晶报表) 安装

    这篇blog主要是介绍Crystal Reports2008(水晶报表)的安装. 首先我们应该知道Crystal Reports 有什么作用? 从这里Crystal Reports 你可以了解到它的一 ...

  5. Nginx_HTTP 499 状态码 nginx下 499错误

    日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产 ...

  6. java web(一) 使用sql标签库+tomcat+mysql手动创建一个jsp练习总结

    2016-09-0111:06:53                                     使用sql标签库+tomcat+mysql手动创建一个jsp 1. 1.1安装tomcat ...

  7. Hive_进阶

    回顾: hive 优点 1. 类sql语句靠近关系型数据库,可自定义函数,增加了扩展性,易于开发,减少mapreduce学习成本 2. hive转换sql语句为mapreduce程序以mapreduc ...

  8. next()与nextLine的区别

    next():    1.一定要读取到有效字符后才可以结束输入.    2.对输入有效字符之前遇到的空白,next() 方法会自动将其去掉.    3.只有输入有效字符后才将其后面输入的空白作为分隔符 ...

  9. SQL Server 中字符串中包含字符串变量的表示方法

    在代码中有如下的需求:需要在数据库中使用 in 关键字做删除的时候,又需要使用到参数化,参数又是字符串,所以使用的时候就按照如下方式 StringBuilder sql = new StringBui ...

  10. 一个参数大小写引发的uploadify报错 "Syntax error, unrecognized expression: #"

     上传控件uploadify 报错"Syntax error, unrecognized expression: #" 版本为 uploadify3.2  报错原因:参数ID[hi ...