Как рассчитать коварную матрицу для махадистании
Я пытаюсь реализовать дистанцию махаланобисов, используя OpenCV и VC++ 2010.
Я знаю алгоритм для этого, функция.
(x-mean)^T*inv(covarmatrix)*(x-mean)
Но когда я внедряю его в OpenCV, он просто выдает ошибки снова и снова.
это мой код, где я вычисляю ковариационную матрицу.
int Main(){
Mat Image;
Mat, Cov,mean;
float samples=1920000;
calcCovarMatrix(image,samples,covmat,mean,CV_COVAR_NORMAL);
}
calcCovarMatrix
выдает ошибку:
no instance of overloaded function calcCovarMatrix matches the argument list.
После того, как я бы тогда сделал
vec3b pixel;
icovar=covmat^-1;
mdist = mahalanobis(vec3b,mean,icovar);
Примечание: я вычисляю расстояние махаланобиса без квадратного корня, но вышеупомянутая функция делает квадратный корень, как получается, а также я возведу его в квадрат, чтобы сделать его справедливым, как я сделал то же самое, чтобы получить пороговое расстояние.
Спасибо
1 ответ
Первый аргумент должен быть Mat*, поэтому он должен быть &image
См. Http://docs.opencv.org/2.4.4/modules/core/doc/operations_on_arrays.html#void calcCovarMatrix (const Mat* samples, int nsamples, Mat & covar, Mat & mean, int flags, int ctype)