gpt4 book ai didi

java - 来自单应性opencv的旋转和平移矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 22:19:34 25 4
gpt4 key购买 nike

我正在用 java 开发一个 android 应用程序,我使用 findHomography() 计算了 opencv 的单应性,我如何通过单应性找到包含旋转和平移的相机姿势矩阵

 Mat homography = Calib3d.findHomography(ReferencePoints2, ReferencePoints1,0,Calib3d.RANSAC);

最佳答案

你需要知道相机的内在参数才能做到这一点。

考虑 z=0 平面。重点

 X=(x,y,0,1)'

投影到图像上为

p=P*X.

现在使用分解

P=K[R t],

其中 K 是校准矩阵,[R t] 是外部参数。由于 z=0,R 的第三列 vector 乘以零。我们现在可以删除第 3 列以获得

p=K*[r1 r2 t]*(x,y,1)=H*(x,y,1),

其中 H 是平面单应性。

您已经从例如已知点。现在可以恢复 R 的第一列和第二列以及 vector t

[r1 r2 t]=inv(K)*H.

确保r1和r2是单位长度,那么t就是正确的平移 vector 。 R的第三列 vector 可以恢复,因为R是正交的,例如使用叉积。

r3=cross(r1,r2).

由于 H 是一个测量值,因此您计算的 r1 和 r2 并不准确。您可以使用 SVD 获得最接近测量值的旋转矩阵。然后你可以组成一个投影矩阵

P=K[r1 r2 r3 t]

它根据您的同轴坐标系的 2D 坐标系在坐标系中投影任何 3D 点。

这里有一些类(class) Material ,描述了这种情况。

https://www.dropbox.com/s/qkulg4j64lyn0qa/2018_proj_geo_for_cv_projcv_assignment.pdf?dl=0

这是一个相关的问题。 Computing camera pose with homography matrix based on 4 coplanar points

正如@nbsrujan(谢谢)所指出的,对于那些使用 OpenCV 的人来说,有一个 function给定内在函数,它可以将单应性分解为平移和旋转矩阵。

关于java - 来自单应性opencv的旋转和平移矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52373216/

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