我正在寻找在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/