halcon三维点云数据处理(二)
目录
- 一、计算3D对象模型的3D表面法线函数
- 二、对3D对象模型的属性应用阈值选取点函数
- 三、将多个3D对象模型合并为一个新的3D对象模型函数
- 四、确定3D对象模型的连接组件函数
- 五、根据全局特征从3D对象模型数组中选择3D对象模型函数
一、计算3D对象模型的3D表面法线函数
计算3D对象模型的3D表面法线
surface_normals_object_model_3d( : : ObjectModel3D, Method, GenParamName, GenParamValue : ObjectModel3DNormals)
二、对3D对象模型的属性应用阈值选取点函数
select_points_object_model_3d( : : ObjectModel3D, Attrib, MinValue, MaxValue : ObjectModel3DThresholded)
Attrib:‘mapping_col’, ‘mapping_row’, ‘neighbor_distance’, ‘num_neighbors’, ‘num_neighbors_fast’, ‘point_coord_x’, ‘point_coord_y’, ‘point_coord_z’, ‘point_normal_x’, ‘point_normal_y’, ‘point_normal_z’
‘mapping_row’:三维点集合的二维映射的行分量
‘mapping_col’:三维点集合的二维映射的列分量
‘neighbor_distance N’:第n个最近点的距离。N必须为正整数,默认为25。对于每个点,所有其他点根据它们的距离排序,并使用第n个点的距离。
‘num_neighbors X’:在不超过x的距离内的邻居数量。它可以用来去除3D对象模型中稀疏分布的部分,例如离群值或通过在3D表面之间平滑产生的点。
‘num_neighbors_fast X’:在最多为x的距离内的邻居的近似数量。距离使用体素进行近似,与‘num_neighbors’相比,导致更快的处理。
三、将多个3D对象模型合并为一个新的3D对象模型函数
union_object_model_3d( : : ObjectModels3D, Method : UnionObjectModel3D)
四、确定3D对象模型的连接组件函数
确定ObjectModel3D中给定的输入3D对象模型的连接组件。三维物体模型的两个部分是否连通,可以基于不同的属性和各自的距离函数来判断。
connection_object_model_3d( : : ObjectModel3D, Feature, Value : ObjectModel3DConnected)
属性和距离函数可在Feature中选择:
“distance_3d”:
测试了三维点集的点坐标之间的欧氏距离。对于低于该值的任何距离,这些点都被认为是连通的。
“angle”:
比较三维物体模型中各点法线之间的夹角。如果相似法线的角距离低于Value,则认为它们是连通的。值以弧度指定,应该在0和pi之间。
前提条件:3D对象模型必须包含法线,法线可以通过surface_normals_object_model_3d计算。
“distance_mapping”:
该映射测量存储在2D映射中的3D对象模型中点的像素坐标之间的距离。使用大于1.5的value值来获得图像中8邻域的连接。
前提条件:3D对象模型必须包含2D映射,如果已经使用xyz_to_object_model_3d创建了3D对象模型,则该映射可用。
“mesh”:
返回用三角形或多边形连接的3D对象模型的部分。Value被忽略。
前提条件:3D对象模型必须提供三角剖分,该三角剖分可通过triangulate_object_model_3d获取。或者,如果3D对象模型已经包含一个2D映射,prepare_object_model_3d可以与Purpose设置为“segmentation”一起使用,以快速三角化3D对象模型。
‘lines’:
返回对象模型中由线条连接的部分。值被忽略。
前提条件:3D对象模型必须包含折线,可以用intersect_plane_object_model_3d计算。
五、根据全局特征从3D对象模型数组中选择3D对象模型函数
select_object_model_3d( : : ObjectModel3D, Feature, Operation, MinValue, MaxValue : ObjectModel3DSelected)
Feature: ‘area’, ‘central_moment_2_x’, ‘central_moment_2_xy’, ‘central_moment_2_xz’, ‘central_moment_2_y’, ‘central_moment_2_yz’, ‘central_moment_2_z’, ‘diameter_axis_aligned_bounding_box’, ‘diameter_bounding_box’, ‘diameter_object’, ‘has_faces’, ‘has_lines’, ‘has_point_normals’, ‘has_points’, ‘has_primitive_data’, ‘has_segmentation_data’, ‘has_shape_based_matching_3d_data’, ‘has_surface_based_matching_data’, ‘has_triangles’, ‘has_xyz_mapping’, ‘mean_points_x’, ‘mean_points_y’, ‘mean_points_z’, ‘num_faces’, ‘num_lines’, ‘num_points’, ‘num_triangles’, ‘volume’, ‘volume_axis_aligned_bounding_box’