【问题标题】:Halcon - Shift coordinates to a different planeHalcon - 将坐标转移到不同的平面
【发布时间】:2021-03-15 05:31:16
【问题描述】:

我有相对于姿势上特定平面的坐标 (X/Y)。

我需要知道 Y 值如何变化,如果从相机的视角将点投影到另一个平面,该平面位于 Z 方向上 10 毫米之外。

我发现的唯一方法是使用project_3d_point 将我的 X/Y 点转换为图像坐标,然后使用 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)
             
            

【问题讨论】:

    标签: projection plane halcon world-coordinates


    【解决方案1】:

    试试这个:

    * -----------
    * Data simulation
    * -----------
    
    * Camera Pose
    TransX := 0
    TransY := -0.5
    TransZ := 1
    RotX := 30
    RotY := 0
    RotZ := 0
    OrderOfTransform := 'Rp+T'
    OrderOfRotation := 'gba'
    ViewOfTransform  := 'point'
    
    create_pose (TransX, TransY, TransZ, RotX, RotY, RotZ, OrderOfTransform , OrderOfRotation, ViewOfTransform , CamPose)
    
    Focal_m := 0.00173333
    PixelSize_m :=5.2e-006
    CameraParam := [Focal_m, 0, PixelSize_m , PixelSize_m , 640, 512, 1280, 1024]
    
    * Point1 with world coordinate system
    Xw1 :=0
    Yw1 :=0.2
    Zw1 :=0
    
    * -----------
    * Calculation
    * -----------
    
    * Focal Point with world coordinate system
    Xfocalw := -CamPose[0]
    Yfocalw := -CamPose[1]
    Zfocalw := -CamPose[2]
    
    Zw3 :=0.1
    Xw3 := 1.0*(Xw1-Xfocalw)/(Zw1-Zfocalw)*(Zw3-Zw1)+Xw1
    Yw3 := 1.0*(Yw1-Yfocalw)/(Zw1-Zfocalw)*(Zw3-Zw1)+Yw1
    

    【讨论】:

      猜你喜欢
      • 2020-10-02
      • 1970-01-01
      • 2012-09-12
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多