【问题标题】:Calculate mahalanobis distance计算马氏距离
【发布时间】:2015-01-17 06:25:09
【问题描述】:

从一堆图像I 中演变出一种平均颜色C_m。现在我想获得一个距离图像,使用马氏距离,其中计算每个像素到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() &amp;&amp; type == icovar.type() &amp;&amp; sz == v2.size() &amp;&amp; len == icovar.rows &amp;&amp; len == icovar.cols) in Mahalanobis, file /tmp/opencv-8GA996/opencv-2.4.9/modules/core/src/matmul.cpp,

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

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    Mahalanobis 不是处理单个像素,而是处理整个图像。所以改为尝试:

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

    【讨论】:

    • 好的,所以我想我必须编写自己的函数来完成获取平均颜色和实际像素颜色之间距离的任务。我要这样做,因为这是写在一篇论文中的:“对第二帧和从第一帧构建的道路模型之间每个像素的马氏距离的视觉检查表明,一些颜色变换将- 形式比其他人更好”。道路模型仅包含平均颜色。
    猜你喜欢
    • 2019-08-01
    • 1970-01-01
    • 2015-06-25
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 2019-07-28
    • 1970-01-01
    相关资源
    最近更新 更多