Я сделал Kmeans кластеризацию и выяснили центры кластеров с использованием OpenCV C++ API.Махаланобиса расстояние в Kmeans Кластеризация с помощью OpenCV
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);
Как бы использовать Махаланобиса Расстояние вместо евклидово расстояние? Я знаю, что мне нужно вычислить матрицу ковариации и инвертировать ее и найти расстояние Махаланобиса.
Однако я не знаю, как я это делаю и в чем ЗАКАЗ (найти матрицу кова, перевернутую матрицу, из которой данные/матрица)?
он делает именно то, что вы хотите, и дает соответствующую opencv-функцию для каждого шага :). – jlengrand
И просто используйте функцию opencv Mahalanobis (я отредактировал ваш ответ) –
еще лучше: ^^ – jlengrand