首页 > 其他分享 >OpenCV3.2图像分割 实例4:GMM(高斯混合模型)样本数据训练与预言

OpenCV3.2图像分割 实例4:GMM(高斯混合模型)样本数据训练与预言

时间:2023-08-18 09:00:36浏览次数:35  
标签:高斯 img int numCluster rng Scalar GMM 255 OpenCV3.2

 1 #include <opencv2/opencv.hpp>
 2 #include <iostream>
 3  
 4 using namespace cv;
 5 using namespace cv::ml;
 6 using namespace std;
 7  
 8 int main(int argc, char** argv) {
 9     Mat img = Mat::zeros(500, 500, CV_8UC3);
10     RNG rng(12345);
11  
12     Scalar colorTab[] = {
13         Scalar(0, 0, 255),
14         Scalar(0, 255, 0),
15         Scalar(255, 0, 0),
16         Scalar(0, 255, 255),
17         Scalar(255, 0, 255)
18     };
19  
20     int numCluster = rng.uniform(2, 5);
21     printf("number of clusters : %d\n", numCluster);
22  
23     int sampleCount = rng.uniform(5, 1000);
24     Mat points(sampleCount, 2, CV_32FC1);
25     Mat labels;
26  
27     // 生成随机数
28     for (int k = 0; k < numCluster; k++) {
29         Point center;
30         center.x = rng.uniform(0, img.cols);
31         center.y = rng.uniform(0, img.rows);
32         Mat pointChunk = points.rowRange(k*sampleCount / numCluster,
33             k == numCluster - 1 ? sampleCount : (k + 1)*sampleCount / numCluster);
34  
35         rng.fill(pointChunk, RNG::NORMAL, Scalar(center.x, center.y), Scalar(img.cols*0.05, img.rows*0.05));
36     }
37     randShuffle(points, 1, &rng);
38     Ptr<EM> em_model = EM::create();
39     em_model->setClustersNumber(numCluster);
40     em_model->setCovarianceMatrixType(EM::COV_MAT_SPHERICAL);//协方差矩阵
41     //训练次数设置为100
42     em_model->setTermCriteria(TermCriteria(TermCriteria::EPS + TermCriteria::COUNT, 100, 0.1));
43     em_model->trainEM(points, noArray(), labels, noArray());
44  
45     // classify every image pixels
46     Mat sample(1, 2, CV_32FC1);
47     for (int row = 0; row < img.rows; row++) {
48         for (int col = 0; col < img.cols; col++) {
49             sample.at<float>(0) = (float)col;
50             sample.at<float>(1) = (float)row;
51             int response = cvRound(em_model->predict2(sample, noArray())[1]);
52             Scalar c = colorTab[response];
53             circle(img, Point(col, row), 1, c*0.75, -1);
54         }
55     }
56  
57     // draw the clusters
58     for (int i = 0; i < sampleCount; i++) {
59         Point p(cvRound(points.at<float>(i, 0)), points.at<float>(i, 1));
60         circle(img, p, 1, colorTab[labels.at<int>(i)], -1);
61     }
62  
63     imshow("GMM-EM Demo", img);
64  
65     waitKey(0);
66     return 0;
67 }

标签:高斯,img,int,numCluster,rng,Scalar,GMM,255,OpenCV3.2
From: https://www.cnblogs.com/ybqjymy/p/17639443.html

相关文章

  • OpenCV3.2图像分割 实例5:GMM(高斯混合模型)图像分割
    1#include<opencv2/opencv.hpp>2#include<iostream>34usingnamespacecv;5usingnamespacecv::ml;6usingnamespacestd;78intmain(intargc,char**argv){9Matsrc=imread("toux.jpg");10if(src.empt......
  • 基于GMM高斯混合模型的语音信息身份识别算法的matlab仿真
    1.算法理论概述一、引言     语音信息身份识别是指通过声音信号对个体进行身份识别的过程。目前,语音信息身份识别已经成为语音处理领域的一个热门研究方向。在语音信息身份识别中,高斯混合模型(GMM)是一种被广泛应用的方法。本文将详细介绍基于GMM的语音信息身份识别算法的实......
  • 【Unity3D】高斯模糊特效
    1高斯模糊原理​边缘检测特效中使用了卷积运算进行了边缘检测,本文实现的高斯模糊特效同样使用了卷积运算,关于卷积核和卷积运算的概念,读者可以参考边缘检测特效。​本文完整资源见→Unity3D高斯模糊特效。​我们将用于模糊处理的卷积核称为模糊算子,它一般满足以下......
  • Stata广义矩量法GMM面板向量自回归PVAR模型选择、估计、Granger因果检验分析投资、收
    原文链接:http://tecdat.cn/?p=24016原文出处:拓端数据部落公众号摘要最近我们被要求撰写关于广义矩量法GMM的研究报告,包括一些图形和统计输出。面板向量自回归(VAR)模型在应用研究中的应用越来越多。虽然专门用于估计时间序列VAR模型的程序通常作为标准功能包含在大多数统计软件......
  • 异常检测——无监督、高斯分布模型,需要带标记的样本数据,基本假设:特征符合高斯分布
    给定数据集x(1),x(2),..,x(m),我们假使数据集是正常的,我们希望知道新的数据xtest是不是异常的,即这个测试数据不属于该组数据的几率如何。我们所构建的模型应该能根据该测试数据的位置告诉我们其属于一组数据的可能性p(x)。......
  • python生成混合高斯分布
    Python生成混合高斯分布介绍高斯分布(正态分布)是概率论中最为常见的一种分布,其在自然和社会科学中有广泛应用。而混合高斯分布则是由多个高斯分布组合而成的概率分布,其能够更好地拟合复杂的数据分布。在本文中,我们将介绍如何使用Python生成混合高斯分布,并提供相应的代码示例。混......
  • iOS开发高斯模糊
    iOS开发高斯模糊在iOS开发中,高斯模糊效果是一种常用的效果,可以用于创建视觉上的深度感和模糊背景等。iOS提供了一种简单的方式来实现高斯模糊效果,即使用UIVisualEffectView类。本文将介绍如何在iOS开发中使用UIVisualEffectView来实现高斯模糊效果,并附带代码示例。什么是高斯模糊......
  • 高斯消去法python代码
    高斯消去法实现多元线性方程组求解1.流程概述高斯消去法(GaussianElimination)是一种用于求解多元线性方程组的常用方法。它通过将方程组表示为增广矩阵的形式,然后进行一系列的行变换,将增广矩阵转化为上三角矩阵,最后利用回代法求解方程组。以下是高斯消去法的流程:步骤操作......
  • 高斯滤波器
    高斯滤波器(Gaussianfilter)是一种常用的图像处理滤波器,用于平滑图像并减少图像中的噪声。它基于高斯函数的概念,通过对图像中的每个像素点进行加权平均来实现平滑效果。高斯函数是一个钟形曲线,具有一个中心点和一个标准差。在高斯滤波器中,中心点周围的像素点会被加权平均,而离中心......
  • ITK 高斯混合模型 GMM EM
    1、高斯混合模型sklearn.mixture是一个能够学习高斯混合模型、抽样高斯模型和从数据中估计模型的包。同样,也提供了帮助决定正确组件数量的方法。一个高斯混合模型是一个概率模型,它假设所有的数据点是从有限未知参数的高斯分布的混合生成的。可以将混合模型当作泛化的k均......