从一堆图像 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 错误:断言失败(type == v2.type() && type == icovar.type() && sz == v2.size() && len == icovar.rows && len == icovar.cols)在 Mahalanobis 中,文件/tmp/opencv-8GA996/opencv-2.4.9/modules/core/src/matmul.cpp,
我这里有什么错误?提前致谢!
最佳答案
Mahalanobis不适用于单个像素,但适用于整个图像。所以改为尝试:
double dist = Mahalanobis( image1, image2, invcovar );
关于c++ - 计算马哈拉诺比斯距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993676/