当前位置: 首页 > news >正文

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的位姿


http://www.mrgr.cn/news/82998.html

相关文章:

  • 自动化测试脚本实践:基于 Bash 的模块化测试框架
  • JavaEE初阶——计算机工作原理
  • LeetCode 3019.按键变更的次数:遍历(转小写)
  • 排序算法:冒泡排序
  • FinDKG: 用于检测金融市场全球趋势的动态知识图谱与大型语言模型
  • 【数据结构-堆】力扣2530. 执行 K 次操作后的最大分数
  • List ---- 模拟实现LIST功能的发现
  • MBTiles 及爬取到发布与数据转换
  • torch.max和torch.softmax python max
  • 【算法】字符串算法技巧系列
  • nginx 配置 本地启动
  • 二、BIO、NIO编程与直接内存、零拷贝
  • ubuntu18升级至ubuntu20
  • 【STM32+CubeMX】 新建一个工程(STM32F407)
  • QT 下拉菜单设置参数 起始端口/结束端口/线程数量 端口扫描4
  • python无需验证码免登录12306抢票 --selenium(2)
  • CODESYS MODBUS TCP通信(禾川Q1 PLC作为MODBUS TCP从站)
  • Vue 3 和 Electron 来构建一个桌面端应用
  • 【python/html/js 鼠标点选/框选图片内容】
  • gorm使用Session()函数后where条件不生效
  • matlab系列专栏-快捷键速查手册
  • 为什么页面无法正确显示?都有哪些HTML和CSS相关问题?
  • uniapp打包到宝塔并发布
  • OSPF浅析
  • 使用 uniapp 开发微信小程序遇到的坑
  • 关于ssh-server在windows系统中进行部署及通过mobaxterm中ssh隧道技术实现不同网段之间进行网络通讯的问题