如何计算mahadistance的covar矩阵

时间:2013-06-11 13:31:15

标签: c++ opencv similarity

我正在尝试使用OpenCV和VC ++ 2010实现 mahalanobis距离

我知道它的算法,即函数。

(x-mean)^T*inv(covarmatrix)*(x-mean)

但是当我在OpenCV中实现它时,它只会反复出错。

这是我计算协方差矩阵的代码。

int Main(){

    Mat Image;
    Mat, Cov,mean;
    float samples=1920000;
    calcCovarMatrix(image,samples,covmat,mean,CV_COVAR_NORMAL);
}

calcCovarMatrix给出错误:

no instance of overloaded function calcCovarMatrix matches the argument list.

然后我会做

vec3b pixel;
icovar=covmat^-1;
mdist = mahalanobis(vec3b,mean,icovar);

注意:我计算没有平方根的马哈拉诺比斯距离,但是上面的函数确实是平方根,为什么我会将它调到正确,因为我做了同样的事情以获得阈值距离。

感谢

1 个答案:

答案 0 :(得分:2)

第一个参数应该是Mat *所以它应该是& image

参见http://docs.opencv.org/2.4.4/modules/core/doc/operations_on_arrays.html#void calcCovarMatrix(const Mat * samples,int nsamples,Mat& covar,Mat& mean,int flags,int ctype)