Mahalanobis距离(马氏距离)
Mahalanobis距离是多维空间中两点相似性的度量,它本身不是聚类或者分类算法。
Mahalanobis距离与Euclidean距离(欧式距离)类似,不过还需除以空间的协方差矩阵。
如果协方差矩阵是单位矩阵,则Mahalanobis距离退化为Euclidean距离。
opencv
计算协方差矩阵函数
CVAPI(void) cvCalcCovarMatrix( const CvArr** vects, int count,
CvArr* cov_mat, CvArr* avg, int flags );
计算逆矩阵函数
CVAPI(double) cvInvert( const CvArr* src, CvArr* dst,
int method CV_DEFAULT(CV_LU));
Mahalanobis距离 = Euclidean距离 * 空间协方差矩阵的逆矩阵
计算Mahalanobis距离时,用cvInvert函数计算逆矩阵时,参数method做好用CV_SVD_SYM。使用该参数虽速度较慢,但可计算更精确的逆矩阵。
计算时间大部分由cvCalcCovarMatrix()消耗,所以稍微多花点时间计算精确的逆矩阵是明智的。