расстояние Махаланобиса в кластеризации Kmeans с использованием OpenCV

Я выполнил кластеризацию Kmeans и обнаружил центры кластеров, используя OpenCV C ++ API.

kmeans(data_points, clusterCount, labels, TermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0), 3, KMEANS_PP_CENTERS, cluster_centers);

Затем я использую евклидово расстояние до , чтобы найти ближайший кластер для новой точки данных относительно всех центров кластеров .

int distance = find_EucledianDist(new_datapoint, cluster_centers);

Как мне использовать Расстояние Махаланобиса вместо Евклидово расстояние ? Я знаю, что мне нужно вычислить матрицу ковариации, инвертировать ее и найти расстояние Махаланобиса.

Однако, Я не знаю, как это сделать и в каком ПОРЯДКЕ (найти коварную матрицу, инвертированную матрицу каких данных / матрицы)?

6
задан garak 28 February 2012 в 13:36
поделиться