halcon三维点云数据处理(八)3D模型匹配相关函数
目录
- 一、create_shape_model_3d 函数
- 二、find_shape_model_3d 函数
- 三、convert_point_3d_spher_to_cart函数
- 四、create_cam_pose_look_at_point函数
- 五、read_shape_model_3d函数
- 六、write_shape_model_3d函数
一、create_shape_model_3d 函数
通过计算三维物体模型在用户指定姿态范围内的不同视图,生成三维形状模型。通过在三维物体模型周围放置虚拟摄像机,并将三维物体模型投影到每个虚拟摄像机位置的图像平面,自动生成视图。对于每个这样获得的视图,计算二维形状表示。因此,在生成3D形状模型时,不使用对象的图像,只使用在ObjectModel3D中传递的3D对象模型。所有视图的形状表示都存储在3D形状模型中,由shapeemodel3did返回。在find_shape_model_3d的匹配过程中,利用形状表示找到最佳匹配的视图,然后从该视图中优化并返回姿态。
create_shape_model_3d (ObjectModel3DID : object_model_3d, // 输入参数,3D对象模型IDCamParam : camera_param, // 输入参数,相机参数RefRotX : real, // 输入参数,参考方向的X轴旋转角度RefRotY : real, // 输入参数,参考方向的Y轴旋转角度RefRotZ : real, // 输入参数,参考方向的Z轴旋转角度'gba' : string, // 输入参数,形状模型匹配模式LongitudeMin : real, // 输入参数,姿态范围的最小经度LongitudeMax : real, // 输入参数,姿态范围的最大经度LatitudeMin : real, // 输入参数,姿态范围的最小纬度LatitudeMax : real, // 输入参数,姿态范围的最大纬度0 : real, // 输入参数,相机滚动角范围的最小值(未使用)rad(360) : real, // 输入参数,相机滚动角范围的最大值(360度)DistMin : real, // 输入参数,3D匹配距离的最小值DistMax : real, // 输入参数,3D匹配距离的最大值10 : integer, // 输入参数,表示3D模型的几何稳定性(不同模型数量级的建议值可能不同)'min_face_angle' : string, // 输入参数,表示使用最小面角作为模型稳定性的指标MinFaceAngle : real, // 输入参数,最小面角的阈值ShapeModel3DID : shape_model_3d_generic // 输出参数,用于存储创建的3D形状模型的ID
)
二、find_shape_model_3d 函数
这里得到的Pose描述了三维对象模型在摄像机坐标下的姿态。需要注意的是,Pose并不是相对于参考坐标系,而是相对于原三维对象模型坐标系。
find_shape_model_3d(
Image // 输入参数,要在其中找到模型的图像
: : ShapeModel3DID, // 输入参数,三维形状模型的handle
MinScore, // 输入参数,要找到的模型实例的最小得分
Greediness, // 输入参数,搜索启发式算法的“贪婪性”(0:安全但慢;1:快速,但可能错过匹配)。
NumLevels, // 输入参数,匹配时使用的金字塔层数(如果|NumLevels| = 2,则使用的最低金字塔层数)
GenParamName, // 输入参数,'border_model', 'cam_roll_max', 'cam_roll_min', 'cov_pose_mode', 'dist_max', 'dist_min', 'latitude_max', 'latitude_min', 'longitude_max', 'longitude_min', 'max_overlap', 'num_matches', 'outlier_suppression', 'pose_refinement', 'recompute_score'
GenParamValue // 输入参数, -0.78, -0.35, -0.17, 0.0, 0.17, 0.35, 0.78, 0.1, 0.2, 0.5, 'none', 'false', 'true', 'least_squares', 'least_squares_high', 'least_squares_very_high', 'standard_deviations', 'covariances', 'medium', 'high'
: Pose, // 输出参数,3D形状模型的3D姿态
CovPose, // 输出参数,姿态参数的6个标准差或36个协方差。
Score) // 输出参数,找到的三维形状模型实例的得分
三、convert_point_3d_spher_to_cart函数
将三维点的球坐标转换为笛卡尔坐标。
convert_point_3d_spher_to_cart(
: : Longitude, // 输入参数,3D点的经度
Latitude, // 输入参数,3D点的维度
Radius, // 输入参数,3D点的半径
EquatPlaneNormal, // 输入参数,赤道面法向量(指向北极)
ZeroMeridian : X, Y, Z) // 输出参数,3D点的X,Y,Z坐标
四、create_cam_pose_look_at_point函数
从相机中心和观看方向创建一个3D相机姿态。
create_cam_pose_look_at_point(: : CamPosX, // 输入参数,相机光学中心的X坐标CamPosY, // 输入参数,相机光学中心的Y坐标CamPosZ, // 输入参数,相机光学中心的Z坐标LookAtX, // 输入参数,相机指向的3D点的X坐标。LookAtY, // 输入参数,相机指向的3D点的Y坐标。LookAtZ, // 输入参数,相机指向的3D点的Z坐标。RefPlaneNormal, // 输入参数,参考平面的法向量(点向上)CamRoll, // 输入参数,相机滚转角: CamPose) // 输出参数,3D相机姿态
五、read_shape_model_3d函数
读3D形状模型
read_shape_model_3d( : : FileName : ShapeModel3DID)
六、write_shape_model_3d函数
把3D形状模型写入文件
write_shape_model_3d( : : ShapeModel3DID, FileName : )
表示将点p在坐标系1的坐标转换到坐标系2的坐标的变换
表示坐标系2经过怎样的变换得到坐标系1
描述了坐标系2相对于坐标系1的位姿