从一堆图像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,
我的错误是什么?提前谢谢!
答案 0 :(得分:1)
Mahalanobis不是针对单个像素,而是针对整个图像。所以请尝试:
double dist = Mahalanobis( image1, image2, invcovar );