怎么用Matlab计算两幅图像的协方差

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用Matlab计算两幅图像的协方差相关的知识,希望对你有一定的参考价值。

>>
x=rand(1,5);
>>
y=2*rand(1,5);
>>
cov(x,y)
%计算协方差
ans
=
0.1079
-0.0225
-0.0225
0.6148
协方差分析是建立在方差分析和回归分析基础之上的一种统计分析方法。
方差分析是从质量因子的角度探讨因素不同水平对实验指标影响的差异。一般说来,质量因子是可以人为控制的。
回归分析是从数量因子的角度出发,通过建立回归方程来研究实验指标与一个(或几个)因子之间的数量关系。但大多数情况下,数量因子是不可以人为加以控制的。
参考技术A %frm,frame为两不同的灰度图像,他们的大小相同即分辨率,求他们的协方差
meanfrm = mean(mean(frm));%图像像素均值
meanframe = mean(mean(frame));
[row,col]=size(frm);
sum = double(0);
for i=1:row
for j=1:col
sum = sum+(frm(i,j)-meanfrm)*(frame(i,j)-meanframe);
end
end
cov = sum/(row*col);%协方差

使用OpenCV计算两幅图像的协方差

要计算协方差首先要知道协方差的数学原理。

定义 Cov(X,Y) = E [X-E(X)][Y-E(Y)] 为随机量X与Y的协方差。
其中E(X)为随机变量X的期望(均值),E(Y)为随机变量Y的期望(均值)。

我们通常用下面的这个公式计算协方差。
Cov(X,Y)=E(XY)-E(X)E(Y)

另外,大家还可以注意一下方差与协方差之间的关系,如下:
D(X+Y) = D(X)+D(Y)+2Cov(X,Y)

知道了原理,就可借助代码实现了。

OpenCV环境下实现求两幅图像协方差的C++源码,
请大家访问本博文的原文查看,
本博文的原文链接如下:

https://www.hhai.cc/thread-145-1-1.html

代码运行结果如下:

如果您对代码中的“cv::Scalar”对象不太清楚,那么可以参考下面这篇博文:
https://www.hhai.cc/thread-144-1-1.html

如果您对代码中的矩阵元素乘法、加法、减法不太清楚,那么可以参考下面这篇博文:
https://www.hhai.cc/thread-143-1-1.html

以上是关于怎么用Matlab计算两幅图像的协方差的主要内容,如果未能解决你的问题,请参考以下文章

用matlab算最小方差

怎么求协方差矩阵啊,R,matlab,或者excel都可以。

MATLAB怎么计算协方差?

MATLAB 怎么计算协方差

MATLAB中关于协方差矩阵特征值的问题

matlab中方差计算的问题