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

Halcon---3D知识点总结(待整理完善)

文章目录

  • 1.点云预处理
    • 1.1 点云滤波
      • 1.1.1 滤波-中值/均滤波
      • 1.1.2 平滑滤波
    • 1.2 点云分割
      • 1.2.1 硬阈值分割
      • 1.2.2 连通域分割
    • 1.3 点云采样处理
      • 1.3.1 点云采样
  • 2.点云-轮廓处理
    • 2.1 点云截面生成/轮廓量测
      • 2.1.1 surface_normals_object_model_3d
      • 2.1.2 triangulate_object_model_3d
      • 2.1.3 intersect_plane_object_model_3d
      • 2.1.4 project_object_model_3d
    • 2.2 点云定位_传统定位
      • 2.2.1 create_surface_model
      • 2.2.2 find_surface_model
      • 2.2.3 create_shape_model_3d
      • 2.2.4 find_shape_model_3d
    • 2.3 点云定位-位置关系换算
    • 2.4 点云定位_轮廓定位
      • 2.4.1 create_shape_model_xld
      • 2.4.2 find_shape_model_xld
  • 3.点云检测/量测
    • 3.1 点云边界框检测
    • 3.2 点云高度/体积测量
      • 3.2.1 volume_object_model_3d_relative_to_plane
      • 3.2.2 fit_primitives_object_model_3d
  • 4. 点云拼接/比对/显示
    • 4.1 点云拼接
      • 4.1.1 register_object_model_3d_pair
      • 4.1.2 affine_trans_object_model_3d
      • 4.1.3 union_object_model_3d
    • 4.2 点云对比
      • 4.2.1 distance_object_model_3d
    • 4.3 点云显示
      • 4.3.1 read_object_model_3d
      • 4.3.2 visualize_object_model_3d
  • 5.应用小结
    • 5.1 点云处理类封装功能算子
    • 5.2 Halcon封装隐患来源以及解决方式

1.点云预处理

在这里插入图片描述

1.1 点云滤波

在这里插入图片描述

1.1.1 滤波-中值/均滤波

  Halcon处理流程;

在这里插入图片描述
  对应算子;
在这里插入图片描述

median_image(关键算子)	计算一个中值滤波器
mean_image(关键算子)	计算一个均值滤波器
object_model_3d_to_xyz(辅助算子)	从3D对象模型转换为3D点图像;
xyz_to_object_model_3d(辅助算子)	从3D点图像转换为3D对象模型;

  Halcon的主要耗时用于三维到二维的映射期间
在这里插入图片描述

中值滤波效果图

在这里插入图片描述

均值滤波效果图

1.1.2 平滑滤波

  Halcon处理流程;
在这里插入图片描述
  平滑滤波算子;

在这里插入图片描述
  halcon中的smooth_object_model_3d
  Halcon 3D 常见算子描述
在这里插入图片描述

平滑滤波效果图

1.2 点云分割

  Halcon处理流程;
在这里插入图片描述
  对应算子:
在这里插入图片描述

select_points_object_model_3d(关键算子)	对3D对象模板设定一个属性的阈值,输出符合阈值的3D对象模板
connection_object_model_3d	确认3D对象模型中连接组件状态,可选择对应属性关系作为判断条件
select_object_model_3d	从一组3D对象模型中按照对应属性条件选择3D对象模型

1.2.1 硬阈值分割

在这里插入图片描述
在这里插入图片描述

硬阈值效果图

1.2.2 连通域分割

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

连通域分割效果图

  连通域分割方式可对多组连接件进行条件分割,功能更加强大,但其耗时稍长,耗时主要由于单元体素的遍历时间较长,如遇连通域分割情况,可先采样再计算,能缩短一定的CT。

1.3 点云采样处理

在这里插入图片描述

1.3.1 点云采样

  Halcon处理流程;

在这里插入图片描述

  对应算子:

在这里插入图片描述
在这里插入图片描述

点云采样效果图

2.点云-轮廓处理

在这里插入图片描述

2.1 点云截面生成/轮廓量测

在这里插入图片描述
  Halcon处理流程;
在这里插入图片描述

  对应算子:
在这里插入图片描述
在这里插入图片描述

1.surface_normals_object_model_3d	计算三维对象模型的三维曲面法线:1)如果对象是点,则使用MLS(移动最小二乘法)算法进行法线评估;2) 对象包含三角形,则从点附近三角形的法线加权获取点法线;3)对象包含2D映射,则从 2D映射中的点的5x5 邻域(进行平面拟合)获取点法线;
2.triangulate_object_model_3d	为三维对象模型创建曲面三角剖分,支持:1)polygon_triangulation:将三维对象模型中的多边形转换
为三角形面表示的简单方法;2)xyz_mapping:根据二维映射在二维中对点进行三角化;3)greedy
(贪婪)、 implicit(隐式):用于从具有未知曲面拓扑结构的纯三维点数据计算三角形面;
3.intersect_plane_object_model_3d	使三维对象模型与平面相交,得到交集(三维对象模型),前提是输入图像中必须包含三角形信息。
4.sample_object_model_3d	对三维对象模型进行采样,新对象由彼此具有最小采样距离的点组成,支持:1)fast:后续加入模型的点需不接近之前所有加入的点;2)accurate:会计算是否有任何点位于半径为采样距离的一个圆球内,若没有则将该点加入模型,若有则计算重心加入模型;
5.project_object_model_3d	将三维对象模型投影到图像坐标中,得到投影模型轮廓。
1.select_shape_xld	使用形状特征选择轮廓或多边形。
2.union_adjacent_contours_xld	合并端点相近的等高线。
3.get_contour_xld	返回XLD轮廓的坐标,即得到x、y坐标的数组。
4.smallest_rectangle1_xld	包围平行于等高线或多边形坐标轴的矩形。
5.gen_region_line	创建一个平行于坐标轴的直线。
6.distance_pl	计算点到直线之间的距离。
7.distance_pp	计算点到点之间的距离。
8.gen_plane_object_model_3d	创建表示平面的三维对象模型,前面一般是create_pose 。
9.select_obj	从对象元组中根据索引选择对象。
10.tuple_max	数组中最大值。
11.tuple_find_first	找到一个元组在另一个元组中第一次出现的索引。

2.1.1 surface_normals_object_model_3d

在这里插入图片描述

2.1.2 triangulate_object_model_3d

在这里插入图片描述

2.1.3 intersect_plane_object_model_3d

在这里插入图片描述

2.1.4 project_object_model_3d

在这里插入图片描述
在这里插入图片描述

截面生成效果图

  1.从截面生成到测量Halcon效率不差,但是读取的ply格式图像只是纯XYZ信息,需要三角剖分算子(点数量较多),耗时较长。
  2.Halcon截面解析辅助算子较多,尤其对点云需要进行三角剖分,耗时很长。

2.2 点云定位_传统定位

在这里插入图片描述
  Halcon处理流程;
在这里插入图片描述

  对应算子:

在这里插入图片描述

1.create_surface_model	创建基于曲面的匹配模型,三维对象模型要求包含点与法线信息,可以是以下组合:1)点与法线;2)点与三角形或多边形网格,例如,CAD文件;3)点和2D映射,例如,XYZ图像【类似深度图】;
2.find_surface_model	在三维场景中查找曲面模型的最佳匹配,匹配的对象要求包含点与法线信息,可以是以下组合:1)点与法线;2)点和 2D映射,例如,XYZ图像【注:网格化数据(CAD文件)模型只会利用其顶点信息,三角网格或多边形网格会被忽略】
3.create_shape_model_3d	创建要匹配的三维对象模型。
4.find_shape_model_3d	在图像中查找三维形状模型的最佳匹配。
5.sample_object_model_3d	对三维对象模型进行采样,新对象由彼此具有最小采样距离的点组成,支持:1)fast:后续加入模型的点需不接近之前所有加入的点;2)accurate:会计算是否有任何点位于半径为采样距离的一个圆球内,若没有则将该点加入模型,若有则计算重心加入模型;
6.get_object_model_3d_params	得到三维对象模型的属性,支持:1) standard attrbutes: 包含3D点集的xyz坐标、RGB通道、点以及多边形的的个数;2) extended attributes: 通过特殊的算子或者用户自定义的算子从标准属性中引申出来的属性;

2.2.1 create_surface_model

在这里插入图片描述
  create_surface_model算子
  Halcon 基于表面的点云配准

2.2.2 find_surface_model

匹配分为三个步骤:
  1.近似匹配
  2.稀疏姿态细化
  3.密集姿态细化

  1 近似匹配:搜索场景中表面模型实例的近似姿态【使用关键点】

 
▪RelSamplingDistance:确定曲面模型中3D点的采样距离,默认0.05;
▪KeyPointFraction:关键点比例,确定从采样场景点中提取关键点的数量,默认0.2;关键点在具有相似距离和相对方向的曲面模型上;
▪MinScore:一个潜在匹配项被视为正确实例的最低得分,用于过滤结果,只返回得分高于该阈值的匹配项;
▪num_matches:设置最大匹配数量,建议值为125;
▪max_overlap_dist:最大重叠距离,由2个匹配曲面模型的边界框中心距离确定;
▪scene_normal_computation:控制采样场景的法线计算,分为‘fast’(小领域中计算)、‘mls’(大邻域且更复杂精确的算法);
▪3d_edges:设置允许为边缘支持的基于曲面的匹配模型手动设置三维场景边(模型在train_3d_edges下创建);
▪3d_edge_min_amplitude:设置提取基于边缘支持的曲面匹配的三维边时的最小振幅阈值(提取的边是输入对象点集的子集,仅支持包  含2D映射的模型,
如设置3d_edges,则忽略此参数) ;

   2.优化近似姿态:进一步优化前一步中找到的近似姿态,增加姿势和分数值的准确性【使用采样点,使得点到平面距离最小

▪sparse_pose_refinement:是否启用稀疏姿态优化,默认为true(使用关键点得到候选姿态进行优化);
▪score_type:设置返回得分的类型,分为 ‘model_point_fraction’(若没有边缘支持,为在场景中可见的物体表面的近似分数,即 “num_model_points”除以模型点数;若有边缘,为表面分数和边缘分数的几何平均值,即从采样的模型边缘与场景的边缘对齐的点的 数量,除以模型上的边缘潜在可见点的最大 数目), ‘num_scene_points’(计算位于找到的对象表面上的采样场景点数量的加权计数,每 个点都基于到找到的对象的距离进行加权), 'num_model_points' (计算在场景中检测到的采样模型点的数量);
pose_ref_use_scene_normals:设置是否使用场景法线用于姿势优化,默认为false

  3 稠密姿态优化:进一步优化步骤2中的姿态【使用所有点,精度被控制在模型尺寸的0.1%左右】

▪dense_pose_refinement:是否启用姿态优化,默认为true;
▪pose_ref_num_steps:密集姿势优化的迭代次数,默认为5;
▪pose_ref_sub_sampling:设置用于密集姿势优化的场景点的速率,默认2。例如,设置为5,则场景中的每第5个点都将用于姿势优化;
▪pose_ref_dist_threshold:设置相对于曲面模型的距离阈值,只有比此距离更接近对象的场景点才用于优化,默认0.1;
▪pose_ref_scoring_dist:设置得分的距离阈值,在计算姿势优化后的分数时,只有比此距离更接近对象的场景点才被视为“在模型上”;
▪score_type:设置返回得分的类型,分为 ‘model_point_fraction’(若没有边缘支持,为在场景中可见的物体表面的近似分数,即 “num_model_points”除以模型点数;若有边缘,为表面分数和边缘分数的几何平均值,即从采样的模型边缘与场景的边缘对齐的点的 数量,除以模型上的边缘潜在可见点的最大数目), ‘num_scene_points’(计算位于找到的对象表面上的采样场景点数量的加权计数,每 个点都基于到找到的对象的距离进行加权), 'num_model_points' (计算在场景中检测到的采样模型点的数量);
▪pose_ref_use_scene_normals:设置是否使用场景法线用于姿势优化,默认为false

2.2.3 create_shape_model_3d

在这里插入图片描述

2.2.4 find_shape_model_3d

在这里插入图片描述

2.3 点云定位-位置关系换算

  Halcon处理流程;

Halcon位置关系的仿射变换
'

在这里插入图片描述
  对应算子:
在这里插入图片描述
  参数说明:

default_parameters:选择fast参数集可以缩短计算时间,accurate将给出更准确的结果,robust还以计算时间为代价提高结果分数的质量。
rel_sampling_distance:此参数控制用于表示计算曲面的三维对象模型的相对采样率。
key_point_fraction:此参数控制作为匹配过程关键点的采样点的比率,这个数字与模型的采样点有关。降低此比率可以加快过程,而增大该比率则可以获得更可靠的结果。
pose_ref_num_steps:用于姿势优化的迭代步骤数。
pose_ref_sub_sampling:为姿势优化跳过的点数,该值指定每个选定点跳过的点数,在这种情况下,以更快的代价增加结果的准确性。此参数仅与两个对象中较小的对象相关。
pose_ref_dist_threshold_rel:两个面可能必须被视为潜在重叠的最大距离,该值相对于较大对象的直径。
pose_ref_dist_threshold_abs:两个面可能必须被视为潜在重叠的最大距离,作为绝对值。
model_invert_normals:反转较小对象的法线(如果其法线相对于其他对象反转)。

2.4 点云定位_轮廓定位

在这里插入图片描述
  Halcon处理流程;
在这里插入图片描述
  对应算子:
在这里插入图片描述

create_shape_model_xld	创建一个形状模型以匹配XLD轮廓。
find_shape_model	查找图像中形状模型的最佳匹配项。
create_shape_model	创建要匹配的形状模型。
gen_region_contour_xld	XLD转化为Region。
gen_image_const	创建一个灰度值恒定的图像。
paint_region	将Region绘制到图像中,并将结果返回到ImageResult中。

2.4.1 create_shape_model_xld

  参数说明:

在这里插入图片描述
  算子分析:
在这里插入图片描述
  说明
  1).214个点不足以建模,原因不是点的个数比较小,同比放到X和Y的坐标后可以正常建模,可能是生成的轮廓图像长宽数值比较小,不足以建模。
  2).同时find_shape_model是在图像中查找,我们需要将XLD生成Region,再生成图像,其中XLD是亚像素在到Region会有损失,本来XLD显示可能就一个像素,导致生成轮廓图像是完全不能体现XLD信息的。

2.4.2 find_shape_model_xld

  参数说明:
在这里插入图片描述

3.点云检测/量测

在这里插入图片描述

3.1 点云边界框检测

  Halcon处理流程;
在这里插入图片描述
  对应算子:
在这里插入图片描述

smallest_bounding_box_object_model_3d	计算3D目标模型点集的最小包围盒,支持:1)type: 用于估计最小包围盒的方法,可以是轴对齐的,也可以是带方向的;
gen_box_object_model_3d	创建表示包围盒的3D目标模型,支持:1)pose: 描述生成的包围盒的位置和朝向;
hom_mat3d_identity	生成相同的3D变换的齐次变换矩阵;
hom_mat3d_rotate	向齐次3D变换矩阵中添加旋转向量;
affine_trans_object_model_3d	将任意一个3D仿射变换应用于3D对象模型;

在这里插入图片描述

点云边界框
'

  获取包围盒之前需要先获取齐次变换矩阵,然后再做仿射变换得到3D目标模型,仿射变换有时会很耗时。

3.2 点云高度/体积测量

  点云高度处理流程;
在这里插入图片描述
  点云体积测量处理流程;
在这里插入图片描述
  对应算子:
在这里插入图片描述


volume_object_model_3d_relative_to_plane	计算相对于平面的3D目标模型的体积,支持:1)plane: 平面的位姿;2)Mode:得到参考面上方和下方体积的方法;3)UseFaceOrientation: 决定平面的朝向是否应该影响表面下方的体积;
connection_object_model_3d	确定3D目标模型的连通域,支持:1)Feature: 用于计算连通域的属性特征,默认为’distance_3d’;2)Value: 两连通域间的最小距离值;
select_points_object_model_3d	3D对象模型阈值分割
select_object_model_3d	根据全局特征选择需要的3D对象模型
fit_primitives_object_model_3d	3D对象拟合
sample_object_model_3d	3D目标模型采样
triangulate_object_model_3d	3D目标模型三角化

3.2.1 volume_object_model_3d_relative_to_plane

  参数说明:
在这里插入图片描述

3.2.2 fit_primitives_object_model_3d

  参数说明:
在这里插入图片描述

4. 点云拼接/比对/显示

在这里插入图片描述

4.1 点云拼接

在这里插入图片描述
  Halcon处理流程;
在这里插入图片描述
  对应算子:
在这里插入图片描述

1.register_object_model_3d_pair	搜索具有最佳对齐的两个3D对象模型之间的转换。在Pose中返回的转换可以用来将第一个对象转换为第
二个对象的参考矩阵。Score返回两个三维物体模型重叠部分与不重叠部分的比率,如果两个对象没有重叠,则不会返回姿态。
2.affine_trans_object_model_3d	利用齐次变换矩阵对3D对象模型应用任意的仿射3D转换,即缩放、旋转和平移,返回转换后的3D对象模型的句柄。
3.union_object_model_3d	将3D对象模型集合中所有输入模型的数据组合到一个新的3D对象模型中,该对象模型在UnionObjectModel3D中返回。
4.hom_mat3d_identity	生成用于三维变换的齐次变换矩阵HomMat3DIdentity,初始为单位矩阵。
5.pose_to_hom_mat3d	将一个三维位姿,例如外部摄像机参数,转换为等效的齐次变换矩阵HomMat3D。
6.hom_mat3d_compose	通过将两个输入矩阵相乘组成一个新的3D转换矩阵。

4.1.1 register_object_model_3d_pair

  参数说明:
在这里插入图片描述

4.1.2 affine_trans_object_model_3d

  参数说明:
在这里插入图片描述

1.变换矩阵(HomMat3D):仿射变换矩阵,可通过hom_mat3d_identity、hom_mat3d_scale、hom_mat3d_rotate、hom_mat3d_translate等创建;
2.变换后的对象模型输出(ObjectModel3DAffineTrans):经过变换后的输出对象模型,改算子可同时对不同对象模型进行批量转换;

4.1.3 union_object_model_3d

  参数说明:
在这里插入图片描述

1.连接方式(Method):唯一受支持的方法是points_surface,它将所有的点、面和线组合到输出新的3D对象模型中;
2.输入/输出3D对象:输入的3D对象集合,经过拼接得到一个3D对象整体;

在这里插入图片描述

点云拼接效果图

4.2 点云对比

  Halcon处理流程;
在这里插入图片描述
  对应算子:
在这里插入图片描述


1.create_surface_model	创建基于曲面的匹配模型,三维对象模型要求包含点与法线信息,可以是以下组合:1)点与法线;2)点与三角形或多边形网格,例如,CAD文件;3)点和2D映射,例如,XYZ图像映射;
2.find_surface_model	在三维场景中查找曲面模型的最佳匹配,匹配的对象要求包含点与法线信息,可以是以下组合:1)点与法线;2)点和2D映射,例如,XYZ图像映射;
3.distance_object_model_3d	计算三维对象中的点到目标匹配模型中的点、三角形、多边形或基本体素的距离或有符号距离;
4.surface_normals_object_mo del_3d	计算三维对象模型的三维曲面法线;利用mls估算法线、三角形的法线加权、映射邻域平面的法线计算;
5.triangulate_object_model_3d	为三维模型创建曲面三角剖分,支持多边形转换、映射图转化、贪婪三角法计算等;
6.sample_object_model_3d	三维对象模型的采样计算,利用彼此间最小采样距离的点组成;

4.2.1 distance_object_model_3d

  参数说明:
在这里插入图片描述

4.3 点云显示

  Halcon处理流程;
在这里插入图片描述
  对应算子:
在这里插入图片描述

1.read_object_model_3d	从文件名中读取一个3D对象模型,并在ObjectModel3D中返回一个3D对象模型句柄。
2.visualize_object_model_3d	在窗口中显示ObjectModel3D的3D对象模型,并允许用鼠标交互地修改对象的姿势,可设置3D对象显示颜色、内容以及显示角度等。
3.disp_object_model_3d	在WindowHandle窗口中显示ObjectModel3D的3D对象模型。利用CamParam、Pose显示3D模型固定位姿的场景图像。
4.create_pose	创建ObjectModel3D呈现位姿,位姿描述了一个刚性的三维变换,即由任意平移和旋转组成的变换,
输入6个参数:分别表示沿x轴、y轴和z轴的平移以及三个方向上的旋转角度。

4.3.1 read_object_model_3d

  参数说明:
在这里插入图片描述

4.3.2 visualize_object_model_3d

  参数说明:
在这里插入图片描述

5.应用小结

在这里插入图片描述

5.1 点云处理类封装功能算子

在这里插入图片描述

5.2 Halcon封装隐患来源以及解决方式

在这里插入图片描述

http://www.dtcms.com/a/454403.html

相关文章:

  • 速卖通自养号测评系统构建指南:三大核心技术要点解析
  • 中国城乡建设厅网站首页长沙企业推广
  • 手机上怎么做自己卖菜的网站大埔建设工程交易中心网站
  • 东莞网站建设做网站wordpress 思源黑体
  • 人声增强AI开源软件
  • 学校网站设计理念哪些网站可以做微商
  • 网站制作学生信息管理太原贴吧
  • C语言模拟面向对象编程方法之封装
  • 公司制作网站价格表莱芜生活网
  • 购物网站asp源码门户网站维护
  • 0.5 数据增强、keras模型保存以及读取、绘制loss过程
  • wordpress网站维护页面模板做网站材料
  • 8.复合查询与内外连接
  • load_dotenv() 加载环境变量
  • 【C语言基础】数据类型、运算符与控制语句详解
  • 无限容量网站灵山建设局网站
  • 站长工具网站怎么做外围网站代理
  • 安泽网站建设网站seo在线检测
  • 廊坊企业建站模板东莞哪家做网站好
  • 做网站空间多大做网站前需要做什么准备
  • 中国建设工程造价管理协会登录网站wap网站排名
  • 商业网站建设设计装饰中国建设银行网站下载
  • 鸿蒙跨端开发:ArkTS与Java混合编程的性能边界测试
  • c 可以做网站嘛深度网络
  • StrFormatByteSize 函数:从字节到可读大小的转换
  • 服务器 做网站网站基础代码html
  • 【LaTeX】 15 LaTeX 错误处理指南
  • 建设新网站征求意见电商网站建设求职定位
  • 怎样拍照产品做网站安徽合肥中国建设银行网站首页
  • JSP 表达式语言