计算马哈拉诺比斯距离

时间:2015-01-16 22:16:36

标签: c++ opencv

从一堆图像I中,平均颜色C_m发展。现在我想获得一个距离图像,使用马哈拉诺比斯距离,其中每个像素mahalanobis距离C_m得到计算。我无法使OpenCV的Mahalanobis()功能起作用。 我使用I的所有像素颜色计算calcCovarMatrix,将其反转并将其传递给Mahalanobis()。接下来,我循环遍历新图像以计算每个像素的距离:

  Mat covar, incovar, mean;
  calcCovarMatrix(...);
  invert(covar,incovar,DECOMP_SVD);

  for (int row = 0; row < image.rows; ++row) {
        for (int col = 0; col < image.cols; ++col) {
            Scalar color = image.at<Vec3b>(row, col);
        double m_dist = Mahalanobis(color, mean, incovar);
        }
  }

导致: OpenCV Error: Assertion failed (type == v2.type() && type == icovar.type() && sz == v2.size() && len == icovar.rows && len == icovar.cols) in Mahalanobis, file /tmp/opencv-8GA996/opencv-2.4.9/modules/core/src/matmul.cpp,

我的错误是什么?提前谢谢!

1 个答案:

答案 0 :(得分:1)

Mahalanobis不是针对单个像素,而是针对整个图像。所以请尝试:

double dist = Mahalanobis( image1, image2, invcovar );