gpt4 book ai didi

ios - 了解solvepnp的输出?

转载 作者:行者123 更新时间:2023-12-02 16:40:58 39 4
gpt4 key购买 nike

我一直在使用solvepnp()来计算旋转和平移矩阵。但是从获得的旋转矩阵计算出的欧拉角给出了非常不稳定的值。为了找到问题,我为我的标记设置了一组2D投影点,并将solvepnp()的其他参数保持不变。
例如:

2D点[219.67473, 242.78395; 363.4151, 238.61298; 503.04855, 234.56117; 501.70917, 628.16742; 500.58069, 959.78564; 383.1756, 972.02679; 262.8746, 984.56982; 243.17044, 646.22925]根据solvepnp()的输出旋转矩阵计算出的欧拉角theta(x)为-26.4877

接下来,我仅将第一个点的x值(即219.67473)增加0.1,以检查theta(x)欧拉角的变化(保持其余点和其他参数恒定)并再次运行solvepnp()。很小的变化,我的值从-19度降低到-18度(对于x坐标= 223.074)然后突然跳到27度(对于x坐标= 223.174到226.974)然后下降到1.3度(对于x坐标= 227.074)。

我完全无法理解这种行为。有人可以解释一下吗?
我从旋转矩阵计算的欧拉角使用this procedure

最佳答案

尝试使用Rodrigues()在旋转矩阵和旋转 vector 之间进行转换,以确保一切都正确无误。非RANSAC版本对异常值非常敏感,这些异常值会在参数中产生巨大的误差,从而使解决方案产生偏差。使用solvePnP的RANSAC version可使它对异常值更稳定。例如,对一个坐标点添加太多,最终将使其离群,并且此后不会影响解决方案。

如果一切失败,请编写一系列单元测试:在3D中创建一个人工的点集(可能是非平面的),首先应用一个简单的平移,在第二个变量中,仅应用旋转,在第三个测试中,两个都应用。使用相机矩阵进行投影,然后将2D,3D点和投影矩阵插入代码中以查找姿势。如果结果偏离平移和旋转的倒数,则您应用到这些点的位置会寻找将参数馈入PnP的错误。

关于ios - 了解solvepnp的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22343578/

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