我一直在使用solvepnp()
计算旋转和平移矩阵。但是从获得的旋转矩阵计算出的欧拉角给出了非常不稳定的值。为了找到问题,我为我的标记设置了一组 2D 投影点,并保持其他参数solvepnp()
不变。
例如值:
2D点从solvepnp()的输出旋转矩阵计算出
[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]
的欧拉角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)。
我根本无法理解这种行为。有人可以解释一下吗?我从旋转矩阵计算欧拉角使用这个过程。