如何计算SVD并验证OpenCV的第一个到最后一个奇异值的比率是否合理?

时间:2013-05-08 11:43:50

标签: opencv svd

我想验证单应矩阵会产生良好的效果,而this answer  有答案 - 但是,我不知道如何实现答案。
那么有人可以推荐我如何使用OpenCV来计算SVD并验证第一个到最后一个奇异值的比例是否合理?

2 个答案:

答案 0 :(得分:5)

有几种方法可以在OpenCV中计算SVD:

cv::SVD homographySVD(homography, cv::SVD::FULL_UV); // constructor
// or: 
homographySVD(newHomography, cv::SVD::FULL_UV); // operator ()
homographySVD.w.at<double>(0, 0); // access the first singular value

// alternatives:
cv::SVD::compute(homography, w); // compute just the singular values
cv::eigen(homography, w);

有关详细信息,请查看cv::SVDcv::eigen的文档。

答案 1 :(得分:1)

您可以使用numpy在python中计算SVD。 例如:

    import numpy as np
    U, s, V = np.linalg.svd(a, full_matrices=True)

将维a的矩阵M x N视为u * np.diag(s) * v,其中uv是单一的,s是1-数组a的奇异值。

可以找到更多here