OpenCV仅用一个样本计算协方差矩阵

Posted

技术标签:

【中文标题】OpenCV仅用一个样本计算协方差矩阵【英文标题】:OpenCV calculate covariance matrix with only one sample 【发布时间】:2014-05-03 18:02:49 【问题描述】:

我想计算样本的均值和协方差矩阵。即使样本的大小只有 1,这是否可能?因为当我这样做时:

calcCovarMatrix(descriptor, covar, mean, CV_COVAR_ROWS, CV_32F);

执行后,covar 矩阵只有 1x1 大,并且只包含 0,而 descriptor 是一个包含 390 个不同浮点元素的行向量。

【问题讨论】:

【参考方案1】:

想想在这种情况下 平均值协方差 的含义。如果您只有一个样本,那么:

    平均值是您唯一的样本

    在与平均值的非零距离处没有样本,因此协方差为零。

编辑请注意,如果要计算 390 个浮点值的平均值和方差,则需要使用 CV_COVAR_COLUMNS 而不是 CV_COVAR_ROWS

【讨论】:

CV_COVAR_COLUMNS,你确定吗?即使我的描述符是行向量? @user3236180 正如我所说,你应该做什么取决于你对结果的期望......你究竟想从什么计算(协)方差? 我想从描述符矩阵中计算它,它有时可以包含一个样本,有时甚至是 100 个样本。但是所有样本都以行的形式存储在矩阵中。 @user3236180 所以你想计算 1x390 描述符向量的平均值和协方差矩阵,而不是 390 个浮点值,因此正确的标志是 CV_COVAR_ROWS

以上是关于OpenCV仅用一个样本计算协方差矩阵的主要内容,如果未能解决你的问题,请参考以下文章

关于协方差矩阵需要注意的一个事项

协方差协方差矩阵定义与计算

协方差矩阵的计算

[转]浅谈协方差矩阵(牢记它的计算是不同维度之间的协方差,而不是不同样本之间。)

理解协方差矩阵

协方差矩阵