java opencv calcCovarMatrix 计算协方差矩阵
在opencv的Core中有一个函数是计算协方差矩阵,这个函数为:calcCovarMatrix
在这里我们就来简单的介绍一些协方差矩阵
方差
方差是各个数据与平均数之差的平方的平均数。在概率论和数理统计中,方差(英文Variance)用来度量随机变量和其数学期望(即均值)之间的偏离程度
我们首先看看方差,对于单个向量,我们称为是方差。比如一个n维的向量 其中 方差我们应该:
标准差 :方差开根号
对于两个向量:还有一个概念,协方差
协方差 :在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。
比如向量: 和
协方差计算方式:
协方差是描述两个向量直接的关系
我们计算来一个简单的例子:
对于向量:
如何来求解这个来年两个向量的协方差
我们利用协方差的计算公式:
X的均值为:102.5 Y的均值为:151.5
这个地方 * 我们作为当做内积来使用
所以(112-102.5,93-102.5)* (147-151.5,157-151.5)=(9.5,-9.5)*(-3.5,4.5)=-9.5*3.5-9.5*4.5=85.5
协方差矩阵:
对矩阵来说,我们可以看做是n*m (n行,m列)矩阵 ,我们的协方差矩阵 我们可以看成是m 向量之间的相互关联,那么m个向量之间的关联关系,任意的两个向量之间都存在关系,所以我们可以知道协方差矩阵的维度为m*m
那么任意两个向量之间都是存在协方差,,比如一个3*2的矩阵
那么我们可以其协方差矩阵的维度为2*2
int matSize = 2;Mat covar = new Mat(matSize, matSize, CvType.CV_8UC1);Mat mean = new Mat(1, matSize, CvType.CV_8UC1);Mat src = new Mat(new Size(2,3),CvType.CV_32FC1);src.put(0, 1, new double[] {1,2,3,4,5}); System.out.println(src.dump());Core.calcCovarMatrix(src, covar, mean, Core.COVAR_ROWS | Core.COVAR_NORMAL);System.out.println(covar.dump());
输出协方差矩阵为:
那么到底是否正确:
协方差中矩阵对应的元素
dst(i,j)=
向量X:第i列的所有元素减去第i列元素的均值
向量Y:第j列所有的元素减去第j列所有元素的均值
向量X和向量Y的内积
dst(1,1)=
第一列的均值:(0+2+4)/3=2 第二列均值:(1+3+5)/3=3
向量1=(0-2,2-2,4-2)=(-2,0,2)
向量2=(0-2,2-2,4-2)=(-2,0,2)
向量1和向量2的内积(-2,0,2)*(-2,0,2)=-2*(-2)+0*0+2*2=8
利用同样的方法我们可以计算对应的dst(1,2) dst(2,1),dst(2,2) 最后这些元素按照左边组成矩阵
就是我们上面输出的协方差矩阵了
上面就是对协方差矩阵的简单的理解
希望对你有所帮助!
java opencv calcCovarMatrix 计算协方差矩阵相关推荐
- java 计算协方差矩阵_MUSIC算法推导及代码实现
简介 MUSIC (Multiple Signal Classification)算法,即多信号分类算法,由Schmidt等人于1979年提出.MUSIC算法是一种基于子空间分解的算法,它利用信号子空 ...
- java编写计算协方差矩阵_协方差矩阵的实例与意义
在机器学习中经常需要计算协方差矩阵,本科时没学过这个概念,一直对此非常头疼.现在试图通过实例的计算.图形化的表示来梳理一下什么是协方差矩阵. ###A numerical example 问题: 有一 ...
- python 计算协方差矩阵_opencv2学习:计算协方差矩阵
图像的高级处理中,协方差矩阵计算是必不可少的,但opencv关于这方面的资料却相当少. 首先,利用matlab计算一下,便于比较: >> data=[1,2,3;10,20,30] dat ...
- java opencv 实现换脸
最近碰到个项目,要求是实现人脸交换,即如下图所示,将右边汤唯的脸换成左边鹿晗的脸,变成中间的照片,就是人脸交换. 网上一般都是基于opencv和Dlib来实现,且多为c++或python语言,或app ...
- opencv学习---计算图像的水平积分投影和垂直积分投影
opencv学习---计算图像的水平积分投影和垂直积分投影 标签: opencv水平积分投影垂直积分投影 2016-12-07 18:48 1806人阅读 评论(1) 收藏 举报 分类: opencv ...
- Java基础-时间复杂度计算方式
Java基础-时间复杂度计算方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境 ...
- Atitit Java OpenCV 捕获视频
Atitit Java OpenCV 捕获视频 ,打开一段视频或默认的摄像头 有两种方法,一种是在定义类的时候,一种是用open()方法. 一. 读取视频序列 OpenCV提供了一个简便易用的框架以 ...
- java精确除法计算,四舍五入 Java问题通用解决代码
java精确除法计算,四舍五入 Java问题通用解决代码 参考文章: (1)java精确除法计算,四舍五入 Java问题通用解决代码 (2)https://www.cnblogs.com/svenne ...
- Java判断工作日计算,计算随意2个日期内的工作日
当前位置:我的异常网» Java Web开发 » 计算随意2个日期内的工作日 计算随意2个日期内的工作日 www.myexceptions.net 网友分享于:2013-08-17 浏览:51次 ...
最新文章
- 批处理bat中的脚本
- 静态网页使用Node.js跨域代理服务
- 如何用UE(UltraEdit)删除重复行?--转
- c语言随机产生100个字母,C语言实现产生100以内的随机数做加减运算
- ASP.NET页面刷新的几种实现方法
- 如何让你的webapp也能跳窗口搜索
- android studio cmake opencv_Mac下安装及配置OpenCV环境(Xcode)
- Shell函数:Shell函数返回值、删除函数、在终端调用函数
- 字符串里解析vue表达式
- shell实战之tomcat看门狗
- 轉:VB6中将数据导出到Excel提速之法
- 感觉自己没有美术天赋,要不要放弃成为艺术生?
- 微软发布2016年5月安全补丁 提醒及时修复
- (转)Rust:Ownership,Reference和Lifetime详解
- Optisystem中器件的学习(1-Visualizer Library、Sensors)
- 计算机知识技能大赛总结,计算机技能大赛总结.doc
- matlab 判断鼠标按下_如何让MATLAB控制你的鼠标和键盘
- openCv4Android之fitLine中各算法总结
- torch.Tensor.requires_grad_(requires_grad=True)的使用说明
- 基于随机森林、svm、CNN机器学习的风控欺诈识别模型