python 计算协方差矩阵_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

在计算协方差矩阵时,在源数据矩阵中,默认以行为样本数,以列为维度。如果你是相反的,那么结果可能和我的不一样。

在opencv2中,先利用公式来进行计算:

代码:

Mat data = (Mat_(2, 3) << 1, 2, 3, 10, 20, 30);

cout<< "data:"<

Mat means(1, data.cols, data.type(), Scalar::all(0));for (int i = 0; i < data.cols; i++)

means.col(i)= sum(data.col(i)) / data.rows; //计算列均值

cout << "means:"<

Mat tmp= repeat(means, data.rows, 1);

data= data - tmp; //源数据减去均值

Mat covar = (data.t()*data) / (data.rows - 1); //(X'*X)/n-1

cout << "covar:"<

结果:

data:

[1, 2, 3;

10, 20, 30]

means:

[5.5, 11, 16.5]

covar:

[40.5, 81, 121.5;

81, 162, 243;

121.5, 243, 364.5]

请按任意键继续. . .

结果和matlab计算是一样的。

还有一种比较简便的方法,那就是使用opencv自带的函数calcCovarMatrix来计算。

void calcCovarMatrix(InputArray samples, OutputArray covar, OutputArray mean, int flags, int ctype=CV_64F)

代码:

Mat covar, means;

Mat data= (Mat_(2, 3) << 1, 2, 3, 10, 20, 30);

cout<< "data:" << endl << data <

calcCovarMatrix(data, covar, means, CV_COVAR_NORMAL| CV_COVAR_ROWS);

cout << "means:" << endl << means <

cout<< "covar:" << endl << covar << endl;

结果:

data:

[1, 2, 3;

10, 20, 30]

means:

[5.5, 11, 16.5]

covar:

[40.5, 81, 121.5;

81, 162, 243;

121.5, 243, 364.5]

和上面的结果完全一样。注意最后一个参数CV_COVAR_ROWS表示以行为样本,即一行为一个向量。如果你是以列为向量,则应换成CV_COVAR_COLS

标记位参数值极其意义

标志参数的具体标志值

意义

CV_COVAR_NORMAL

计算均值和协方差

CV_COVAR__SCRAMBLED

快速PCA”Scrambled”协方差

CV_COVAR_USE_AVERAGE

输入均值而不是计算均值

CV_COVAR_SCALE

重新缩放输出的协方差矩阵

这个函数的具体介绍可以参考官方文档:传送门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

源码安装mysql5.1.51

1. ./mysql_install_db --force 2. 进入到mysql的安装目录执行下面4个命令 groupadd mysql useradd -g mysql mysql chown -R mysql . chgrp -R mysql . 3. 将源码里的my-medium.cnf文件拷贝到mysql的安装目录 cp support-files/my-medium.cnf etc/my.cnf 4. 执行…

python读取文件路径报invalid_关于Python读取文件的路径中斜杠问题

最近用Python读取文件&#xff0c;发现有时候用 \ 会报错&#xff0c;换成 \\ 就不会报错。查了下资料发现&#xff0c;\是Python的转义字符&#xff0c;如果路径中存在\t或者\r这样的特殊字符&#xff0c;\就无法起到目录跳转的作用&#xff0c;因此报错。解决办法就是告诉系统…

vb如何定义微软服务器stul,VBScrip微软官方教程.doc

VBScrip微软官方教程VBScript微软官方教程Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员&#xff0c;它将灵活的 Script 应用于更广泛的领域&#xff0c;包括 Microsoft Internet Explorer 中的 Web 客户机 Script 和 Microsoft Inter…

cocos2d-x for wp 之Box2D的应用

本文大部分内容是基于fengyun1989的博文&#xff0c;自己只是加深巩固而已 Box2d是一款用于2d游戏的物理引擎。在这个世界里创造出的物体都更接近于真实世界的物体。 首先&#xff0c;在项目添加Box2D.XNA.DLL。 新建一个页面BOX2DLayer并继承于CCLayer 重写init函数&#xff0…

qt 添加依赖库lib_在QT中添加LIB的方法

自动显示隐藏布局的listView借助View的OnTouchListener接口来监听listView的滑动,通过比较与上次坐标的大小,判断滑动方向,并通过滑动方向来判断是否需显示或者隐藏对应的布局,并且带有动画效果. 1.自动显示 ...ImFire即时通讯系统构建(需求)ImFire需求 一期需求(近期) 1.新用户…

python中集合运算_Python中的集合操作与集合运算

Python中的集合是一种无序的&#xff0c;无重复值的数据结构类型。Python中的集合可以用来检测元素检测或消除重复的元素。 一、python 集合概述 &#xff08;1&#xff09;Python中的集合元素是无序的&#xff0c;即元素没有顺序问题&#xff0c;也不能像数组、列表、字符串那…

Asp.net 定时任务

1.定时器 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using System.Text; using System.Web.Security; using System.Web.SessionState; using System.Timers;namespace WebApplication1 {public class Global :…

arm64入栈出栈_ARM64的内核栈、用户栈、寄存器上下文

1. 内核栈的分配&#xff0c;即thread_info的分配&#xff0c;是在do_fork->dup_task_struct中分配(默认为2个pages)&#xff0c;并赋值给task_struct->stack&#xff1b;2. 用户栈的分配分两种&#xff1a;一是pthread create会事先mmap分配好用户栈&#xff0c;传给do_…

python程序怎么修改_python文件如何修改

以占用内存的方式修改文件 待修改的文件 word1.txt&#xff0c;文件内容如下&#xff1a;现在要将文中的“汪淼”修改为“WM”&#xff0c;代码如下&#xff1a;#&#xff01;-*-coding:utf-8-*- old_str 汪淼 new_str WM f1 open(word1.txt,r,encoding"utf-8") #…

phpMyAdmin导入大的sql文件

在使用phpMyAdmin的时候经常用到数据的导入和导出(Export/Import)&#xff0c;但是在导入大数据的时候由于php上传文件的限制和脚本响应时间的限制&#xff0c;导致phpMyAdmin无法导入大数据&#xff0c;对于导入大数据到mysql的&#xff0c;我以前使用过使用SHELL的方式导入几…

vue 计算属性和data_Vue:计算属性

一、为什么要使用计算属性1、什么是计算属性计算属性&#xff1a;可以理解为能够在里面写一些计算逻辑的属性。具有如下的作用&#xff1a;减少模板中的计算逻辑。数据缓存。当我们的数据没有变化的时候&#xff0c;不会再次执行计算的过程。依赖固定的数据类型(响应式数据)&am…

Linux添加/删除用户和用户组

本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数。 1、建用户&#xff1a; adduser phpq //新建phpq用户 passwd phpq //给phpq用户设置密码 2、建工作组 groupadd test …

mysql 计算近30天总金额_mysql┃一条更新语句是怎么执行的???

本文共&#xff1a;3018字 预计阅读时间&#xff1a;8分钟文章首发于我的微信公众号&#xff1a;哪儿来的moon&#xff0c;欢迎大家关注mysql┃一条更新语句是怎么执行的&#xff1f;&#xff1f;&#xff1f;前言 通过上一篇文章的内容&#xff0c;大家已经对mysql的基本架构有…

arduinowifi.send怎么获取响应_ChatterBot代码解读-获取对话

这个过程比较复制&#xff0c;安装处理的流程&#xff0c;依次进行代码解读。在定义一个ChatBot后&#xff0c;可以进行对话的训练&#xff0c;这个过程参考&#xff1a;水中的鱼&#xff1a;ChatterBot代码解读&#xff0d;训练数据​zhuanlan.zhihu.com然后就是用如下的代码&…

[jQuery] jQuery函数

&#xff08;1&#xff09;文档就绪函数$(document).ready(function(){--- jQuery functions go here ----});为了防止文档在完全加载&#xff08;就绪&#xff09;之前运行 jQuery 代码。如果在文档没有完全加载之前就运行函数&#xff0c;操作可能失败。下面是具体的例子&…

beautifulsoup网页爬虫解析_Python爬虫神器:PyQuery,解析网页更简单,小白也能学会

图/文&#xff1a;迷神我们做python爬虫&#xff0c;通过requests抓取到内容就需要正则匹配&#xff0c;或者其他解析库解析内容。很多可能和我一样的人&#xff0c;都使用jquery的&#xff0c;那用的还是非常爽的。而pyquery库就是jQuery的Python实现&#xff0c;能够以jQuery…

ubuntu设置始终亮屏_ubuntu系统每次启动屏幕都是最大亮度问题的解决方法

这个方法你尝试过没首先你要确保有这个文件:复制代码代码如下:/sys/class/backlight/acpi_video0/brightnesscat出来的值就是你当前的屏幕亮度.我们修改下面的文件加入一些用户启动设置:复制代码代码如下:sudo gedit /etc/rc.local在 exit 0 的上方加入以下代码(确保exit 0没有…

unityios开发--加载视频以及加载完成之后自动跳转 .

在做游戏或者是虚拟漫游一般都会用到在开始的时候加载一段视频&#xff0c;这个视频可能一个介绍整个游戏或者是整个项目的。在加载完了之后自动的跳转到主画面或一个场景&#xff0c;在前在网上百度了一下找到的大部分都是win的好不容易找到了ios的。 Unity3D中播放游戏视频的…

rnn神经网络模型_一文读懂序列建模(deeplearning.ai)之循环神经网络(RNNs)

作者&#xff1a;Pulkit Sharma&#xff0c;2019年1月21日翻译&#xff1a;陈之炎校对&#xff1a;丁楠雅本文为你详细介绍序列模型&#xff0c;并分析其在不同的真实场景中的应用。简介如何预测一个序列中接下来要发生什么事情是一个非常吸引人的课题&#xff0c;这是我对数据…

mysql 人名用什么类型_如何选择合适的MySQL数据类型

一、MySQL数据类型选择原则更小的通常更好&#xff1a;一般情况下选择可以正确存储数据的最小数据类型。越小的数据类型通常更快&#xff0c;占用磁盘&#xff0c;内存和CPU缓存更小。简单就好&#xff1a;简单的数据类型的操作通常需要更少的CPU周期。例如&#xff1a;整型比字…