😊😊😊欢迎来到本博客😊😊😊
🌟🌟🌟 Halcon算子太多,学习查找都没有系统的学习查找路径,本专栏主要分享Halcon各类算子含义及用法,有时间会更新具体案例。
😊😊😊 具体食用方式:可以点击本专栏【Halcon算子快速查找】–>搜索你要查询的算子名称;或者点击Halcon算子汇总博客,即可食用。
🎁🎁🎁支持:如果觉得博主的文章还不错或者您用得到的话,可以悄悄关注一下博主哈,如果三连收藏支持就更好啦!这就是给予我最大的支持!😙😙😙
学习目标
- get_object_model_3d_params()
学习内容
算子简介
函数名 | 解释 |
---|---|
get_object_model_3d_params() | 返回三维对象模型的属性。 |
1、get_object_model_3d_params()
get_object_model_3d_params( : : ObjectModel3D, GenParamName : GenParamValue)
函数说明:三维对象模型由一组属性和元数据组成,get_object_model_3d_params
允许访问给定3d对象模型的属性和元数据。请求的属性或元数据的名称在通用参数GenParamName
中传递,相应的值在GenParamValue
中返回。
如果请求的属性或元数据不可用,则会引发异常。get_object_model_3d_params
支持同时访问多个三维对象模型和多个属性。
请注意:属性或元数据可以具有不同的长度。一些标准属性具有定义的长度,如后面介绍的属性描述。其他属性的长度取决于实际的三维对象模型,可以通过将参数GenParamName
设置为“num_points
”、“num_triangles
”、“num_polygons
”或“num_lines
”来查询。因此,要获得标准属性“point_coord_x
”的长度,请将GenParamName
设置为“num_points
”。
函数参数:
ObjectModel3D:输入 3D对象模型句柄;
GenParamName:输入为三维对象模型查询的常规属性的名称;默认: ‘num_points
’;参考: 'blue', 'bounding_box1', 'center', 'diameter_axis_aligned_bounding_box', 'extended_attribute_names', 'extended_attribute_types', 'green', 'has_distance_computation_data', 'has_extended_attribute', 'has_lines', 'has_point_normals', 'has_points', 'has_polygons', 'has_primitive_data', 'has_primitive_rms', 'has_segmentation_data', 'has_shape_based_matching_3d_data', 'has_surface_based_matching_data', 'has_triangles', 'has_xyz_mapping', 'lines', 'mapping_col', 'mapping_row', 'mapping_size', 'neighbor_distance', 'num_extended_attribute', 'num_lines', 'num_neighbors', 'num_neighbors_fast', 'num_points', 'num_polygons', 'num_primitive_parameter_extension', 'num_triangles', 'original_point_indices', 'point_coord_x', 'point_coord_y', 'point_coord_z', 'point_normal_x', 'point_normal_y', 'point_normal_z', 'polygons', 'primitive_parameter', 'primitive_parameter_extension', 'primitive_parameter_pose', 'primitive_pose', 'primitive_rms', 'primitive_type', 'red', 'reference_point', 'score', 'triangles'
;
GenParamValue:输出通用参数值;
属性名 | 解释 |
---|---|
'point_coord_x' | 一组3D点的x坐标(长度可以通过num_points 查询)。该属性通常从运算符xyz_to_object_model_3d 或read_object_model_3d 获得。 |
'point_coord_y' | 一组3D点的y坐标(长度可以通过num_points 查询)。该属性通常从运算符xyz_to_object_model_3d 或read_object_model_3d 获得。 |
'point_coord_z' | 一组3D点的z坐标(长度可以通过num_points 查询)。该属性通常从运算符xyz_to_object_model_3d 或read_object_model_3d 获得。 |
'point_normal_x' | 一组3D点的法线x分量(长度可以通过num_points 查询)。该属性通常从操作符smooth_object_model_3d 中获得。 |
'point_normal_y' | 一组3D点的法线y分量(长度可以通过num_points 查询)。该属性通常从操作符smooth_object_model_3d 中获得。 |
'point_normal_z' | 一组3D点的法线z分量(长度可以通过num_points 查询)。该属性通常从操作符smooth_object_model_3d 中获得。 |
'score' | 一组3D点的分数(长度可以通过num_points 查询)。该属性通常从操作符reconstruct_surface_stereo 中获得。 |
'red' | 一组3D点的red通道(长度可以通过num_points 查询)。该属性通常从操作符reconstruct_surface_stereo 中获得。 |
'green' | 一组3D点的green通道(长度可以通过num_points 查询)。该属性通常从操作符reconstruct_surface_stereo 中获得。 |
'blue' | 一组3D点的blue通道(长度可以通过num_points 查询)。该属性通常从操作符reconstruct_surface_stereo 中获得。 |
'mapping_row' | 3D点集的二维映射的行组件。(长度可以通过num_points 查询)。原始图像的高度可通过mapping_size 查询)。该属性通常从运算符xyz_to_object_model_3d 中获得。 |
'mapping_col' | 3D点集的二维映射的列组件。(长度可以通过num_points 查询)。原始图像的高度可通过mapping_size 查询)。该属性通常从运算符xyz_to_object_model_3d 中获得。 |
'mapping_size' | 原始图像的大小。返回一个具有两个条目宽度和高度的元组。 |
'triangles' | 按以下顺序表示三角形的三维点的索引:前三个值(返回值0,1,2)表示第一个三角形。接下来的三个值(返回值3、4、5)表示第二个三角形等。所有索引都对应于3D点的坐标。可以访问3D点的坐标,例如,将通用参数GenParamName 分别设置为值“point_coord_x ”、“point_cord_y ”和“point_corde_z ”。此属性的长度相当于三角形数量的三倍,可以使用“num_triangles ”查询三角形。该属性通常从操作符triangulate_object_model_3d 或read_object_model_3d 获得。 |
'polygons' | 按以下顺序表示多边形的三维点的索引:第一个返回值包含第一个多边形的点数n。以下值(返回值1,2,…,n)表示第一个多边形的点的索引。下一个值(返回值n+1)包含第二个多边形的点数m。以下m个返回值(返回值n+2,n+3,…,n+1+m)表示第二多边形等的点的索引。所有索引对应于3D点的坐标。可以访问3D点的坐标,例如,将通用参数GenParamName 分别设置为值“point_coord_x ”、“point_cord_y ”和“point_corde_z ”。可以使用“num_polygons ”查询每个三维对象模型的多边形数。该属性通常从操作符read_object_model_3d 中获得。 |
'lines' | 按以下顺序表示多段线的三维点的索引:第一个返回值包含第一条多段线点数n。以下值(返回值1,2,…,n)表示第一条多段线的点的索引。下一个值(返回值n+1)包含第二条多段线的点数m。以下m个值(返回值n+2,n+3,…,n+1+m)表示第二折线等的点的索引。所有索引对应于3D点的坐标。可以访问3D点的坐标,例如,将通用参数GenParamName 分别设置为值“point_coord_x ”、“point_cord_y ”和“point_corde_z ”。可以使用“num_lines”查询每个三维对象模型的行数。该属性通常从操作符intersect_plane_object_model_3d 中获得。 |
'diameter_axis_aligned_bounding_box' | 一组3D点的直径,定义为最小封闭轴平行长方体的对角线长度(请参见参数’bounding_box1 ’)。此属性的长度为1。 |
'center' | 该组3D点的中心的3D坐标。这些坐标是最小封闭轴平行长方体的中心(请参见参数“bounding_box1 ”)。此属性的长度为3。如果三维对象模型中没有三维坐标,则以下规则有效:(1) 如果三维对象模型是圆柱体类型的基本体(请参见 gen_cylinder_object_model_3D ),并且存在扩展,则返回扩展之间的中心点。如果没有扩展,则返回姿势的平移参数;(2) 如果三维对象模型是类型为平面的基元(请参考 gen_plane_object_model_3D ),并且存在扩展,则根据扩展计算平面的重心。如果没有扩展,则返回姿势的平移参数;(3) 如果三维对象模型是球体或长方体类型的基本体(请参考 gen_sphere_object_model_3D 或gen_box_object_model_3D ),则返回对象模型的中心点。 |
'original_point_indices' | 不同三维对象模型中三维点的索引(长度可以通过num_points 查询)。该属性通常从操作符triangulate_object_model_3d 中获得。 |
'primitive_type' | 基元类型(例如,从操作符fit_primitives_object_model_3d 获得)。球体的返回值为“sphere ”。圆柱体的返回值为“cylinder ”。平面的返回值为“plane ”。box的返回值为“box ”。此属性的长度为1。 |
'primitive_parameter' | 基元的参数(例如,从操作符fit_primitives_object_model_3d 获得)。该属性的长度取决于“primitive_type ”,对于每个三维对象模型,长度在4到10之间。(1) 如果三维对象模型是圆柱体类型的基元(请参见 gen_cylinder_object_model_3D ),则返回值为中心[x_center,y_center,z_center] 的(x-,y-,z-) 坐标、圆柱体主轴[x_axis,y_axis,z_axis] 的(x-,y-,z-) 方向以及圆柱体的半径[radius] 。顺序为[x_center,y_center,z_center,x_axis,y_axis,z_axis,radius] 。(2) 如果三维对象模型是类型为球体的基元(请参见 gen_sphere_object_model_3D ),则返回值为球体的中心[x_center,y_center,z_center] 的(x-,y-,z-) 坐标和半径[radius] 。顺序为[x_center,y_center,z_center,radius] 。(3) 如果3D对象模型是平面类型的基元(参见 gen_plane_object_model_3D ),则返回hessian 法线形式的4个参数,即单位法线(x-,y-,z-) 向量[x,y,z] 和平面与坐标系原点的正交距离(d) 。顺序是[x,y,z,d] 。距离(d) 的符号决定了原点所在平面的一侧。(4) 如果三维对象模型是长方体类型的基元( gen_box_object_model_3D ),则返回值为长方体的三维姿势(平移、旋转、旋转类型)和半边长(长度1、长度2、长度3)。length1 是长方体沿姿势的x轴的长度。length2 是长方体沿着姿势的y轴的长度。length3 是长方体沿着姿势的z轴的长度。顺序为[trans_x,trans_y,trans_z,rot_x,rot_y,rot_z,rot_type,length1,length2,length3] 。有关三维姿势和相应变换矩阵的详细信息,请参见操作符create_pose 。 |
'primitive_parameter_pose' | 具有3D姿势格式的基元的参数(例如,从操作符fit_primitives_object_model_3D 获得)。对于所有类型的基本体,返回值都是3D姿势(平移、旋转、旋转类型)。有关三维姿势和相应变换矩阵的详细信息,请参见操作符create_pose 。该属性的长度取决于“primitive_type ”,对于每个三维对象模型,该长度在7到10之间。(1) 如果三维对象模型是圆柱体类型的基元(请参见 gen_cylinder_object_model_3D ),则还会返回圆柱体的半径[radius] 。顺序为[trans_x,trans_y,trans_z,rot_x,rot_y,rot_z,rot_type,radius] 。(2) 如果三维对象模型是类型为球体的基元(请参见 gen_sphere_object_model_3D ),则还会返回球体的半径[radius] 。顺序为[trans_x,trans_y,trans_z,rot_x,rot_y,rot_z,rot_type,radius] 。(3) 如果三维对象模型是类型为平面的基元(请参见 gen_plane_object_model_3D ),则顺序为[trans_x,trans_y,trans_z,rot_x,rot_y,rot_z,rot_type] 。(4) 如果三维对象模型是长方体类型的基元(请参见 gen_box_object_model_3D ),则还会返回长方体的半边长(length1、length2、length3) 。length1 是长方体沿姿势的x轴的长度。length2 是长方体沿着姿势的y轴的长度。length3 是长方体沿着姿势的z轴的长度。顺序为[trans_x,trans_y,trans_z,rot_x,rot_y,rot_z,rot_type,length1,length2,length3] 。 |
'primitive_pose' | 具有3D姿势格式的基元的参数(例如,从操作符fit_primitives_object_model_3D 获得)。对于所有类型的基本体,返回值都是3D姿势(平移、旋转、旋转类型)。有关三维姿势和相应变换矩阵的详细信息,请参见操作符create_pose 。对于每个三维对象模型,该属性的长度为7。顺序为[trans_x,trans_y,trans_z,rot_x,rot_y,rot_z,rot_type] 。 |
'primitive_parameter_extension' | 圆柱体和平面类型的基元的范围(例如,从操作符fit_primitives_object_model_3d 获得)。此属性的长度取决于“primitive_type ”,可以使用“num_primitive_parameter_extension ”进行查询。(1) 如果三维对象模型是圆柱体类型的基本体(请参见 gen_cylinder_object_model_3D ),则返回值为圆柱体的范围(MinExtent、MaxExtent) 。它们按[MinExtent,MaxExtent] 的顺序返回。MinExtent 表示圆柱体在旋转轴负方向上的长度。MaxExtent 表示圆柱体在旋转轴正方向上的长度。(2) 如果三维对象模型是平面类型的基元(使用 fit_primitives_object_model_3D 创建),则返回值是关于拟合平面的共面点的元组。顺序为[点1的x坐标,点2的x坐标、点3的x坐标…、点1的y坐标、点2的y坐标,点3的y坐标…] 。坐标值描述了凸包的支撑点。这是基于拟合平面上有助于拟合的那些点的投影来计算的。如果平面是使用gen_plane_object_model_3d 创建的,则会返回用于创建平面的所有点(XExtent、YExtent) 。 |
'primitive_rms' | 基元的二次残差(例如,从算子fit_primitives_object_model_3d 获得)。此属性的长度为1。 |
'reference_point' | 用于基于形状的3D匹配的所准备的3D形状模型的参考点的3D坐标。参考点是最小封闭轴平行长方体的中心(参见参数“bounding_box1 ”)。此属性的长度为3。 |
'bounding_box1' | 最小封闭轴平行长方体(min_x,min_y,min_z,max_x,max_y,max_z) 。此属性的长度为6。 |
'num_points' | 点数。此属性的长度为1。 |
'num_triangles' | 三角形的数量。此属性的长度为1。 |
'num_polygons' | 多边形的数量。此属性的长度为1。 |
'num_lines' | 线的数量。此属性的长度为1。 |
'num_primitive_parameter_extension' | 基元的扩展数据的数量。此属性的长度为1 |
'has_points' | 三维点是否存在。此属性的长度为1。 |
'has_point_normals' | 三维点法线是否存在。此属性的长度为1。 |
'has_triangles' | 三角形是否存在。此属性的长度为1。 |
'has_polygons' | 多边形是否存在。此属性的长度为1。 |
'has_lines' | 线是否存在。此属性的长度为1。 |
'has_xyz_mapping' | 是否存在3D点到图像坐标的映射。此属性的长度为1。 |
'has_shape_based_matching_3d_data' | 是否存在用于基于形状的3D匹配的形状模型。此属性的长度为1。 |
'has_distance_computation_data' | 是否存在用于三维距离计算的预计算数据结构。此属性的长度为1。数据结构可以使用prepare_object_model_3d 创建,目的是“distance_computerion ”。它由操作符distance_object_model_3d 使用。 |
'has_surface_based_matching_data' | 是否存在用于基于曲面的匹配的数据。此属性的长度为1。 |
'has_segmentation_data' | 是否存在用于3D分割的数据。此属性的长度为1。 |
'has_primitive_data' | 原始数据是否存在。此属性的长度为1。 |
'has_primitive_rms' | 基元的二次残差是否存在。此属性的长度为1。 |
'neighbor_distance' | —— |
'neighbor_distance N' | 对于每个点,第N个最近点的距离。 N必须是一个正整数,默认情况下为25。对于每个点,所有其他点都会根据它们的距离进行排序,并返回第N个点的距离。 |
'num_neighbors X' | 对于每个点,距离最多为X的邻居的数量。 |
'num_neighbors_fast X' | 对于每个点,距离最多为X的邻居的近似数量。使用体素来近似距离,与“num_neighbors ”相比,处理速度更快。 |
扩展属性是指可以通过特殊运算符(例如distance_object_model_3d
)从标准属性派生的属性,或用户定义的属性。操作员set_object_model_3d_attrib可以创建用户定义的属性。可以访问以下扩展属性和元数据:
属性名 | 解释 |
---|---|
'&attribute_name' | 扩展属性的用户定义名称。请注意,此名称必须以“&” 开头,例如“&my_attrib” 。请求的扩展属性的数据在GenParamValue 中返回。返回数据的顺序与在GenParamName 中指定的属性名称的顺序相同。 |
'extended_attribute_names' | 所有扩展属性的名称。对于每个扩展属性名称,都会返回一个值。 |
'extended_attribute_types' | 所有扩展属性的类型。对于每个扩展属性类型,都会返回一个值,从而将这些值排序为扩展属性名称的输出。 |
'has_extended_attribute' | 至少存在一个扩展属性。对于每个三维对象模型,都会返回一个值。 |
'num_extended_attribute' | 扩展属性的数量。对于每个三维对象模型,都会返回一个值。 |
Halcon例程
vector_to_hom_mat3d.hdev 从点对应关系近似不同类型的仿射三维变换
triangulate_object_model_3d_xyz_mapping.hdev 对三维对象模型进行三角化(二维映射)
simplify_object_model_3d.hdev 简化复杂的三维对象模型
select_points_object_model_3d_by_density.hdev 基于点密度删除三维对象模型中有噪声的部分
select_points_object_model_3d.hdev 使用阈值删除三维对象模型的部分
select_object_model_3d.hdev 根据体积和直径选择三维对象模型
segment_object_model_3d.hdev 将2.5D数据分段为圆柱形或球形部分
scene_flow_globe.hdev 计算两个立体图像对之间的3D场景流,以恢复对象在3D中的运动
sample_object_model_3d.hdev 使用采样减少三维对象模型中的点数
reduce_object_model_3d_to_visible_parts.hdev 删除三维对象模型中从定义的摄影机姿势看不到的部分
reconstruct_3d_object_model_for_matching.hdev 通过三维配准从多个视图重建用于匹配的三维对象模型
intersect_plane_object_model_3d.hdev 计算三维对象模型和平面之间的交点
interactive_intersection.hdev 交互式计算三维对象模型和平面之间的交点
inspect_3d_surface_intersections.hdev 通过检查三维对象的平面交点来检查安装凸舌的角度和尺寸
genicamtl_lmi_gocator_objectmodel3d.hdev 使用GenICamTL接口从LMI Technologies Gocator传感器数据生成3D对象模型
fuse_object_model_3d_workflow.hdev 设置多个三维对象模型的三维融合参数
fit_primitives_object_model_3d.hdev 将圆柱体装配到2.5D数据中
find_surface_model_with_edges.hdev 使用边缘支持的基于表面的匹配在3D场景中查找纸箱
find_deformable_surface_model.hdev 使用基于可变形曲面的匹配在三维场景中查找对象
disp_object_model_3d.hdev 显示三维对象模型
check_for_holes_sheet_of_light.hdev 使用校准的光设置表来验证孔的存在和正确性
3d_matching_clamps.hdev 使用三维DXF模型识别图像中的三维对象
【3D Object Model之测量Features】 待更新算子
- area_object_model_3d()
- distance_object_model_3d()
- get_object_model_3d_params()
- max_diameter_object_model_3d()
- moments_object_model_3d()
- select_object_model_3d()
- smallest_bounding_box_object_model_3d()
- smallest_sphere_object_model_3d()
- volume_object_model_3d_relative_to_plane()
汇总
本专栏博客汇总:Halcon算子汇总
🚶🚶🚶今天的文章就到这里啦~
喜欢的话,点赞👍、收藏⭐️、关注💟哦 ~