gpt4 book ai didi

opencv - 多 View 几何

转载 作者:太空宇宙 更新时间:2023-11-03 20:52:40 26 4
gpt4 key购买 nike

我从两台相同品牌的相机拍摄的两张图像相距一定距离,拍摄相同的场景。我想计算两个相机之间的真实世界旋转和平移。为了实现这一点,我首先提取了两个图像的 SIFT 特征并匹配它们。

我现在有了基本矩阵以及单应矩阵。然而无法进一步进行,很多困惑。谁能帮我估计两个相机之间的旋转和平移

我正在使用 OpenCV 进行特征提取和匹配、单应性计算。

最佳答案

如果你有单应性,那么你也有旋转。一旦你有了单应性,就很容易得到旋转和平移矩阵。

例如,如果您使用的是 OpenCV c++:

param[in] H
param[out] pose
void cameraPoseFromHomography(const Mat& H, Mat& pose)
{
pose = Mat::eye(3, 4, CV_32FC1); // 3x4 matrix, the camera pose
float norm1 = (float)norm(H.col(0));
float norm2 = (float)norm(H.col(1));
float tnorm = (norm1 + norm2) / 2.0f; // Normalization value

Mat p1 = H.col(0); // Pointer to first column of H
Mat p2 = pose.col(0); // Pointer to first column of pose (empty)

cv::normalize(p1, p2); // Normalize the rotation, and copies the column to pose

p1 = H.col(1); // Pointer to second column of H
p2 = pose.col(1); // Pointer to second column of pose (empty)

cv::normalize(p1, p2); // Normalize the rotation and copies the column to pose

p1 = pose.col(0);
p2 = pose.col(1);

Mat p3 = p1.cross(p2); // Computes the cross-product of p1 and p2
Mat c2 = pose.col(2); // Pointer to third column of pose
p3.copyTo(c2); // Third column is the crossproduct of columns one and two

pose.col(3) = H.col(2) / tnorm; //vector t [R|t] is the last column of pose
}

此函数根据包含旋转的单应性计算相机位姿。如需进一步的理论信息,请关注此 thread .

关于opencv - 多 View 几何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12658839/

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