【发布时间】:2023-02-02 02:25:18
【问题描述】:
我一直在为这个测验问题而苦苦挣扎。这是 FSG 2022 注册测验的一部分,我不知道如何解决它
起初我以为我可以使用外部参数和内部参数来使用by Mathworks 或this article 中描述的方程来计算 3D 坐标。后来我意识到相机框架中提供了到物体的距离,这意味着这可以被视为深度相机并将深度信息转换为 3d 空间,如medium.com article 中所述
this article 正在使用下面显示的公式来计算 x 和 y 坐标,与 this question 非常相似,但我无法得到正确的解决方案。
我的一个 Matlab 脚本试图解决它:
rot = eul2rotm(deg2rad([102 0 90]));
trans = [500 160 1140]' / 1000; % mm to m
t = [rot trans];
u = 795; % here was typo as pointed out by solstad.
v = 467;
cx = 636;
cy = 548;
fx = 241;
fy = 238;
z = 2100 / 1000 % mm to m
tmp_x = (u - cx) * z / fx;
tmp_y = (v - cy) * z / fy;
% attempt 1
tmp_cords = [tmp_x; tmp_y; z; 1]
linsolve(t', tmp_cords)'
% result is: 1.8913 1.8319 -0.4292
% attempt 2
tmp_cords = [tmp_x; tmp_y; z]
rot * tmp_cords + trans
% result is: 2.2661 1.9518 0.4253
如果可能的话,我希望看到计算过程而不是任何一种 python 代码。 正确答案在图片下方。
主办方提供的正确解分别为2.030、1.272、0.228 m
【问题讨论】:
标签: matlab image-processing point-clouds depth-camera