我正在寻找在C ++中实现多元标准PDF [1],以在类的图像成员资格中分配每个像素,即

    for each pixel
        for each class
            compute multivariate normal PDF using the pixel's feature vector and the class' mean vector and covariance matrix
         end
     end


是否有一个图书馆可以有效地做到这一点(即类似于Matlab的mvnpdf函数[2])?如果没有任何想法,哪种库或方法将是最好的(我正在考虑使用Eigen)。

最佳答案

我不知道现成的一步式解决方案。对于两步混合匹配方法,您可以熟悉Boost.Math,该变量在统计分布部分中具有用于单变量正态分布的extended example

// [...] many headers and namespaces inclusions

int main()
{
      // Construct a standard normal distribution s
        normal s; // (default mean = zero, and standard deviation = unity)
        cout << "Standard normal distribution, mean = "<< s.mean()
          << ", standard deviation = " << s.standard_deviation() << endl;

/*` First the probability distribution function (pdf).
*/
      cout << "Probability distribution function values" << endl;
      cout << "  z " "      pdf " << endl;
      cout.precision(5);
      for (double z = -range; z < range + step; z += step)
      {
        cout << left << setprecision(3) << setw(6) << z << " "
          << setprecision(precision) << setw(12) << pdf(s, z) << endl;
      }
      cout.precision(6); // default

      // [...] much more
    }


然后,您可以使用Eigen进行必要的矢量和矩阵操作,以将标量传递给它。此blog posting具有更多详细信息(尽管它使用Boost.Random生成样本值)。

关于c++ - 在C++中实现多元正态pdf进行图像分类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17282956/

10-11 07:49