Я решил это так:
*get the points of a 100 mm square on my XY plane. Since the XLD is in 1px=1mm
affine_trans_point_3d(Mat3D, 0, 0, 0, X, Y, Z)
project_3d_point(X, Y, Z, CamParam, Xp1, Yp1)
affine_trans_point_3d(Mat3D, 0, 0.1, 0, X, Y, Z)
project_3d_point(X, Y, Z, CamParam, Xp2, Yp2)
affine_trans_point_3d(Mat3D, 0.1, 0.1, 0, X, Y, Z)
project_3d_point(X, Y, Z, CamParam, Xp3, Yp3)
affine_trans_point_3d(Mat3D, 0.1, 0, 0, X, Y, Z)
project_3d_point(X, Y, Z, CamParam, Xp4, Yp4)
*0 on my Image corrisponds to 0 on my XY plane. 100 px square equals the 0.1m square above.
*generate the 2D mat by projection
hom_vector_to_proj_hom_mat2d ([0,100,100,0], [0,0,100,100], [1,1,1,1],
[Xp1,Xp2,Xp3,Xp4], [Yp1,Yp2,Yp3,Yp4], [1,1,1,1], 'dlt', HomMat2D)
*load the first Z plane
select_obj(ListZplanes, CurrentZplaneXLD,i)
*project the Z plane onto the Plane
projective_trans_contour_xld(CurrentZplaneXLD,CurrentZplaneTransXLD,HomMat2D)
person
sharkyenergy
schedule
16.10.2020