opencv里用calcCovarMatrix计算协方差矩阵

Mat_<double> temp1(10, 3);
    Mat_<double> mean1, cov1;
    temp1(0, 0) = 49;
    temp1(0, 1) = 7;
    temp1(0, 2) = 29;

    temp1(1, 0) = 8;
    temp1(1, 1) = 19;
    temp1(1, 2) = 16;

    temp1(2, 0) = 12;
    temp1(2, 1) = 8;
    temp1(2, 2) = 14;

    temp1(3, 0) = 19;
    temp1(3, 1) = 37;
    temp1(3, 2) = 22;

    temp1(4, 0) = 3;
    temp1(4, 1) = 43;
    temp1(4, 2) = 21;

    temp1(5, 0) = 34;
    temp1(5, 1) = 17;
    temp1(5, 2) = 17;

    temp1(6, 0) = 20;
    temp1(6, 1) = 34;
    temp1(6, 2) = 27;

    temp1(7, 0) = 49;
    temp1(7, 1) = 14;
    temp1(7, 2) = 37;

    temp1(8, 0) = 20;
    temp1(8, 1) = 26;
    temp1(8, 2) = 21;

    temp1(9, 0) = 31;
    temp1(9, 1) = 41;
    temp1(9, 2) = 21;

    calcCovarMatrix(temp1, cov1, mean1, CV_COVAR_NORMAL | CV_COVAR_ROWS);
    cout << mean1 << endl;
    cout << cov1/9 << endl;

这样算出来的结果和matlab是一样的,

如果最后不除以9(样本数减1),则得不到正确的协方差矩阵。另外flag中如果加上CV_COVAR_SCALE,则相当于除以10(样本数)。

时间: 2024-10-29 19:09:45

opencv里用calcCovarMatrix计算协方差矩阵的相关文章

opencv2学习:计算协方差矩阵

图像的高级处理中,协方差矩阵计算是必不可少的,但opencv关于这方面的资料却相当少. 首先,利用matlab计算一下,便于比较: >> data=[1,2,3;10,20,30] data = 1 2 3 10 20 30 >> convar=cov(data) convar = 40.5000 81.0000 121.5000 81.0000 162.0000 243.0000 121.5000 243.0000 364.5000 在计算协方差矩阵时,在源数据矩阵中,默认以行为

[zz]计算 协方差矩阵

http://www.cnblogs.com/chaosimple/p/3182157.html http://blog.csdn.net/goodshot/article/details/8611178 一.统计学的基本概念 统计学里最基本的概念就是样本的均值.方差.标准差.首先,我们给定一个含有n个样本的集合,下面给出这些概念的公式描述: 均值: 标准差: 方差: 均值描述的是样本集合的中间点,它告诉我们的信息是有限的,而标准差给我们描述的是样本集合的各个样本点到均值的距离之平均. 以这两个

正式使用opencv里的训练和检测 - opencv_createsamples、opencv_traincascade

好久没有来写blog了,学生生涯终结,就不好好总结了,今天把opencv里关于adaboost训练和检测的过程记录下来,方便别人也方便自己~~~啊哈哈~~~~ 一.基础知识准备 首先,opencv目前仅支持三种特征的训练检测, HAAR.LBP.HOG,选择哪个特征就去补充哪个吧.opencv的这个训练算法是基于adaboost而来的,所以需要先对adaboost进行基础知识补充啊,网上一大堆资料,同志们速度去查阅.我的资源里也有,大家去下载吧,这些我想都不是大家能直接拿来用的,我下面将直接手把

opencv里vector的内存的申请和释放的问题

改成: CvMemStorage* m_storage=cvCreateMemStorage(0); CvSeq * m_contour=0; cvFindContours( &IPlImage(img), m_storage, &m_contour, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0)); //释放内存 cvReleaseMemStorage(&m_storage); msdn

[C++]opencv 里计算多项式用的算式...

初看OpenCV写多项式的算式有点晦涩难懂,形如(((z3y2 + z2)y2+z1)*y2)来表示一个二次到六次的偶次多项式,这样的算式究竟快在哪里?今天正好比较闲,就拿来跑一跑,供大家参考(但其实意义不大),代码如下所示: #include<iostream> #include<time.h> using namespace std; int main(){ clock_t t1,t2; t1 = clock(); double x = 1.2,y = 1.2, x2, y2,

numpy和matlab计算协方差矩阵的不同(matlab是标准的,numpy相当于转置后计算)

matlab是标准的,numpy相当于转置后计算 >> x = [2,0,-1.4;2.2,0.2,-1.5;2.4,0.1,-1;1.9,0,-1.2] x = 2.0000    0            -1.4000 2.2000    0.2000    -1.5000 2.4000    0.1000    -1.0000 1.9000    0            -1.2000 >> cov(x) ans = 0.0492        0.0142      0

OpenCV轮廓检测,计算物体旋转角度

效果还是有点问题的,希望大家共同探讨一下 // FindRotation-angle.cpp : 定义控制台应用程序的入口点. // // findContours.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <vector> #include <opencv2/opencv.hpp> #include <opencv2/core/core.h

OpenCV里IplImage和char *的相互转换,以及极易忽视的细节

OpenCV中IplImage和单字节char*的相互转换 从 IplImage到 char* : data = image->imageData //对齐的图像数据 或者data = image->imageDataOrigin //未对齐的原始图像数据 从 char* 到 IplImage: image =cvCreateImageHeader(cvSize(width,height), depth, channels); cvSetData(image, data, step); ste

OpenCV里的颜色空间

RGB三原色组合方式是最常用的 RGB色彩空间: R:红色分量 G:绿色分量 B:蓝色分量 HSV色彩空间: H - 色调(主波长). S - 饱和度(纯度/色调). V - 明度(强度). LAB色彩空间: L - 亮度(强度). A颜色分量从绿色到品红色的一种颜色成分. B颜色分量从蓝色到黄色. YCrCb色彩空间: Y - 伽马校正后从RGB获得的亮度或亮度分量. Cr = R - Y(距离Luma红色分量有多远). Cb = B - Y(来自Luma的蓝色组分有多远). 在OpenCV中