我有相对于姿势上特定平面的坐标(X/Y)。
我需要知道 Y 值是如何变化的,如果从相机的视角将点投影到另一个平面,即在 Z 方向上距离 10 毫米。
我发现的唯一方法是将我的 X/Y 点转换为图像坐标,project_3d_point
然后使用 z 位移姿势将其转换回世界坐标。问题在于图像分辨率太低而无法获得精确值。这可以在不使用图像坐标的情况下计算吗?在图片中,我有 Y1 和 Y2,需要 Y3 和 Y4。
编辑:
这是我试图解决的其他问题,但我很确定它是垃圾:
计算位姿是原点位姿处的位姿。Z=0.01
set_origin_pose (CalculationPose, 0, 0, Z, ZShiftedPose)
pose_to_hom_mat3d(ZShiftedPose, HomMat3D)
projective_trans_point_3d( HomMat3D, 0, Y1, 0, dummy, ZY1, dummy)
编辑2:
这行得通,但它非常丑陋。有没有更聪明更好的方法来解决这个问题?
set_origin_pose (CalculationPose, 0, 0, Z, ZShiftedPose)
pose_to_hom_mat3d(CalculationPose, HomMat3DCalc)
pose_to_hom_mat3d(ZShiftedPose, HomMat3DShift)
affine_trans_point_3d(HomMat3DCalc, 0, Y1, Z, a, b, c)
project_3d_point( a, b, c, CameraParam , Row, Column)
image_points_to_world_plane(CameraParam, CalculationPose,Row,Column,'mm',dummy,Y3)