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仅用一个样本计算协方差矩阵的主要内容,如果未能解决你的问题,请参考以下文章