gpt4 book ai didi

matlab - OpenCV-如何使用C++计算黎曼距离?

转载 作者:行者123 更新时间:2023-12-02 17:10:46 25 4
gpt4 key购买 nike

Matlab中两个协方差矩阵A和B的黎曼距离计算为:

C = sqrt(sum(log(eig(A,B)).^2))

使用C++的OpenCV等效于什么?

最佳答案

现在我得到的结果与Matlab相同。遵循我的C++解决方案:

double calculateRiemannianDistance(cv::Mat A, cv::Mat B) {
Eigen::MatrixXf e_A, e_B;
cv::cv2eigen(A, e_A);
cv::cv2eigen(B, e_B);

/* compute generalized eigenvalues */
Eigen::GeneralizedEigenSolver<Eigen::MatrixXf> ges;
ges.compute(e_A, e_B);
cv::Mat gev;
cv::eigen2cv(Eigen::MatrixXf(ges.eigenvalues().real()), gev);

/* riemannian distance */
cv::Mat partial_res;
cv::log(gev, partial_res);
cv::pow(partial_res, 2, partial_res);
double distance = sqrt(cv::sum(partial_res)[0]);
return distance;
}

关于matlab - OpenCV-如何使用C++计算黎曼距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42227174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com