halcon案例set_object_model_3d_attrib.hdev

C:\Users\Public\Documents\MVTec\HALCON-23.05-Progress\examples\hdevelop\3D-Object-Model\Creation

set_object_model_3d_attrib.hdev

  • 在这个示例中,设置了一个三维物体模型的立方体的坐标。
  • 其次,设置了三角形和颜色。第三,修改了一个三维物体模型的坐标。
  • 第四,展示了移除已设置属性的过程。
  • 在所有步骤之间,都会对生成的三维物体模型进行可视化。
    获取3D的空体
    gen_empty_object_model_3d
    修改点的坐标
    set_object_model_3d_attrib_mod
    设置点坐标
    set_object_model_3d_attrib

1、distance_object_model_3d
distance_object_model_3d 是 HALCON 中的一个操作符,用于计算一个三维对象模型(ObjectModel3DFrom)中的点到另一个三维对象模型(ObjectModel3DTo)中的点、三角形、多边形或基本体的距离。

主要功能

  • 计算距离:该操作符会将计算得到的距离存储为 ObjectModel3DFrom 中名为 “&distance” 的扩展属性。此属性可以使用 get_object_model_3d_params 查询,也可以通过 select_points_object_model_3d 等操作符进行处理。
  • 目标数据选择:目标数据(点、三角形、多边形或基本体)是基于 ObjectModel3DTo 中包含的属性自动选择的。选择的优先顺序为:基本体、三角形、多边形和点。也可以通过通用参数 “distance_to” 明确指定目标数据类型。
  • 距离计算方法:根据目标数据类型,可以选择不同的方法来计算距离,例如线性搜索(linear)、KD树(kd-tree)或体素(voxel)方法。
  • 性能优化:通过设置 MaxDistance 参数,可以限制计算的最大距离范围,从而提高计算效率。
  • 其他功能:还可以计算带符号的距离(signed_distances),并返回每个点的最近点或三角形的索引(store_closest_index)。

参数说明

  • ObjectModel3DFrom:源三维对象模型句柄。
  • ObjectModel3DTo:目标三维对象模型句柄。
  • Pose:应用于 ObjectModel3DFrom 的点的姿态。
  • MaxDistance:感兴趣的最大距离。
  • GenParamNameGenParamValue:通用输入参数的名称和值,用于设置距离计算的具体行为。

应用场景

  • 点云分析:计算点云中点到某个目标物体的距离。
  • 目标检测:在复杂场景中检测与目标物体距离满足特定条件的点或区域。
  • 三维建模:优化三维模型的拓扑结构,通过距离计算调整模型的细节。

如果需要更详细的示例或具体用法,可以参考 HALCON 的官方文档。

2、remove_object_model_3d_attrib
remove_object_model_3d_attrib 是 HALCON 中用于移除三维对象模型(3D Object Model)中指定属性的操作符。以下是其功能和使用方法的详细说明:

功能

remove_object_model_3d_attrib 用于从一个三维对象模型中移除指定的标准或扩展属性。该操作符会创建一个输入模型的副本,并在副本中移除指定的属性,然后返回修改后的模型。

参数

  • ObjectModel3D:输入的三维对象模型句柄。
  • Attributes:要移除的属性名称。可以是单个属性名称,也可以是属性名称的数组。
  • ObjectModel3DOut:移除指定属性后生成的新三维对象模型句柄。

支持的属性

以下是可以通过 Attributes 参数指定的属性名称:

  • 'point_normal':移除点的法向量。
  • 'triangles':移除三角形数据。
  • 'polygons':移除多边形数据。
  • 'lines':移除线数据。
  • 'xyz_mapping':移除与图像坐标的映射。
  • 'extended_attribute':移除所有用户定义的扩展属性。
  • 'primitives_all':移除所有基本体参数。
  • 'primitive_plane':移除平面基本体参数。
  • 'primitive_sphere':移除球体基本体参数。
  • 'primitive_cylinder':移除圆柱体基本体参数。
  • 'primitive_box':移除立方体基本体参数。
  • 'shape_based_matching_3d_data':移除基于形状的 3D 匹配数据。
  • 'distance_computation_data':移除距离计算数据。
  • 'score':移除评分属性。
  • 'red''green''blue':移除颜色属性。
  • 'original_point_indices':移除原始点索引。
  • 'all':移除除点坐标外的所有属性。

使用示例

remove_object_model_3d_attrib (ObjectModel3D, 'extended_attribute', ObjectModel3DOut)

此示例将从输入的三维对象模型 ObjectModel3D 中移除所有扩展属性,并将结果存储在 ObjectModel3DOut 中。

注意事项

  • 如果指定的属性在模型中不存在,不会抛出异常。
  • 该操作符不会修改原始的三维对象模型,而是返回一个新的模型。

如果需要修改原始模型而不是创建副本,可以使用 remove_object_model_3d_attrib_mod

3、remove_object_model_3d_attrib_mod
remove_object_model_3d_attrib_mod 是 HALCON 中的一个操作符,用于直接修改三维对象模型(3D Object Model),移除其指定的标准或扩展属性。与 remove_object_model_3d_attrib 不同的是,remove_object_model_3d_attrib_mod 不会创建模型的副本,而是直接在原始模型上进行修改。

功能

  • 直接修改模型remove_object_model_3d_attrib_mod 会直接在输入的三维对象模型上移除指定的属性,而不是创建一个副本。
  • 移除属性:可以移除标准属性(如点的法向量、三角形、多边形等)或用户定义的扩展属性。

参数

  • ObjectModel3D:输入的三维对象模型句柄。
  • Attributes:要移除的属性名称列表。可以是单个属性名称,也可以是多个属性名称的数组。

使用示例

remove_object_model_3d_attrib_mod (ObjectModel3D, 'triangles')

此示例将直接从输入的三维对象模型 ObjectModel3D 中移除三角形数据。

注意事项

  • 如果指定的属性在模型中不存在,操作符不会报错。
  • 由于该操作符直接修改原始模型,因此在使用时需要谨慎,以避免意外丢失数据。

该操作符在处理三维对象模型时非常有用,尤其是在需要减少模型内存占用或清理不需要的属性时。

4、gen_empty_object_model_3d
gen_empty_object_model_3d 是 HALCON 中的一个操作符,用于生成一个空的三维对象模型(3D Object Model)。这个空的模型可以作为后续操作的基础,例如添加点、三角形或其他几何元素。

功能

  • 创建空模型:生成一个不包含任何点、三角形或其他几何数据的三维对象模型。
  • 基础模型:这个空模型可以用于后续的点云处理、三角化或其他 3D 操作。

参数

  • ObjectModel3D:输出参数,存储生成的空的三维对象模型的句柄。

使用示例

gen_empty_object_model_3d (ObjectModel3D)

此示例将生成一个空的三维对象模型,并将其句柄存储在变量 ObjectModel3D 中。

应用场景

  • 点云处理:在处理点云数据时,可以先生成一个空的三维对象模型,然后逐步添加点或几何元素。
  • 三维建模:在构建复杂的三维模型时,可以先创建一个空模型,然后逐步添加和修改几何数据。
  • 初始化:在需要从头开始构建三维模型时,可以使用 gen_empty_object_model_3d 初始化一个空模型。

注意事项

  • 生成的模型是空的,不包含任何数据。如果需要添加点或其他几何元素,需要使用其他操作符,例如 add_points_object_model_3dadd_triangles_object_model_3d
  • 由于模型是空的,因此在使用之前需要确保后续操作能够正确地向模型中添加数据。

gen_empty_object_model_3d 是一个非常基础但重要的操作符,为后续的三维数据处理和建模提供了起点。

5、
set_object_model_3d_attrib_mod
set_object_model_3d_attrib_mod 是 HALCON 中的一个操作符,用于直接修改三维对象模型(3D Object Model)中的属性。这个操作符可以设置或修改模型的标准属性或扩展属性。与 set_object_model_3d_attrib 不同的是,set_object_model_3d_attrib_mod 直接在原始模型上进行修改,而不是创建一个副本。

功能

  • 直接修改模型:直接在输入的三维对象模型上设置或修改指定的属性。
  • 支持多种属性:可以设置或修改标准属性(如颜色、标签等)或用户定义的扩展属性。

参数

  • ObjectModel3D:输入的三维对象模型句柄。
  • Attribute:要设置或修改的属性名称。
  • Selector:用于选择特定数据的字符串(可选)。例如,可以指定特定的点、三角形或基本体。
  • Value:要设置的属性值。

支持的属性

以下是可以通过 Attribute 参数设置的属性名称:

  • 'color':设置模型的颜色。
  • 'disp_pose':设置模型的显示姿态。
  • 'alpha':设置模型的透明度。
  • 'extended_attribute':设置用户定义的扩展属性。
  • 其他标准属性:如 'point_normal'(点的法向量)、'triangles'(三角形数据)等。

使用示例

* 设置模型的颜色为红色
set_object_model_3d_attrib_mod (ObjectModel3D, 'color', [], 'red')

* 设置模型的透明度为 0.5
set_object_model_3d_attrib_mod (ObjectModel3D, 'alpha', [], 0.5)

* 设置用户定义的扩展属性
set_object_model_3d_attrib_mod (ObjectModel3D, 'extended_attribute', 'my_attribute', 42)

注意事项

  • 直接修改:由于 set_object_model_3d_attrib_mod 直接修改原始模型,因此在使用时需要谨慎,以避免意外覆盖重要数据。
  • 属性存在性:如果尝试设置一个不存在的属性,HALCON 会自动创建该属性。
  • 扩展属性:扩展属性是用户定义的属性,可以存储任意数据,例如整数、浮点数或字符串。

应用场景

  • 模型可视化:通过设置颜色、透明度等属性,可以更好地在可视化中显示模型。
  • 模型标注:通过设置扩展属性,可以为模型添加自定义的标签或数据,方便后续处理。
  • 模型优化:通过修改标准属性,可以优化模型的显示或处理性能。

set_object_model_3d_attrib_mod 是一个非常灵活的操作符,可以用于自定义和优化三维对象模型的属性。

6、set_object_model_3d_attrib
set_object_model_3d_attrib 是 HALCON 中的一个操作符,用于为三维对象模型(3D Object Model)设置或修改属性。与 set_object_model_3d_attrib_mod 不同的是,set_object_model_3d_attrib 会创建一个输入模型的副本,并在副本中设置或修改指定的属性,而不是直接修改原始模型。

功能

  • 创建副本并修改:该操作符会创建一个输入模型的副本,并在副本中设置或修改指定的属性。
  • 支持多种属性:可以设置或修改标准属性(如颜色、透明度等)或用户定义的扩展属性。

参数

  • ObjectModel3D:输入的三维对象模型句柄。
  • Attribute:要设置或修改的属性名称。
  • Selector:用于选择特定数据的字符串(可选)。例如,可以指定特定的点、三角形或基本体。
  • Value:要设置的属性值。
  • ObjectModel3DOut:输出参数,存储修改后的三维对象模型的句柄。

支持的属性

以下是可以通过 Attribute 参数设置的属性名称:

  • 'color':设置模型的颜色。
  • 'disp_pose':设置模型的显示姿态。
  • 'alpha':设置模型的透明度。
  • 'extended_attribute':设置用户定义的扩展属性。
  • 其他标准属性:如 'point_normal'(点的法向量)、'triangles'(三角形数据)等。

使用示例

* 设置模型的颜色为红色
set_object_model_3d_attrib (ObjectModel3D, 'color', [], 'red', ObjectModel3DOut)

* 设置模型的透明度为 0.5
set_object_model_3d_attrib (ObjectModel3D, 'alpha', [], 0.5, ObjectModel3DOut)

* 设置用户定义的扩展属性
set_object_model_3d_attrib (ObjectModel3D, 'extended_attribute', 'my_attribute', 42, ObjectModel3DOut)

注意事项

  • 创建副本:由于 set_object_model_3d_attrib 会创建一个模型的副本,因此在处理大型模型时可能会占用较多内存。
  • 属性存在性:如果尝试设置一个不存在的属性,HALCON 会自动创建该属性。
  • 扩展属性:扩展属性是用户定义的属性,可以存储任意数据,例如整数、浮点数或字符串。

应用场景

  • 模型可视化:通过设置颜色、透明度等属性,可以更好地在可视化中显示模型。
  • 模型标注:通过设置扩展属性,可以为模型添加自定义的标签或数据,方便后续处理。
  • 模型优化:通过修改标准属性,可以优化模型的显示或处理性能。

set_object_model_3d_attrib_mod 的区别

  • set_object_model_3d_attrib_mod:直接在原始模型上修改属性,不会创建副本。
  • set_object_model_3d_attrib:创建一个模型的副本,并在副本中修改属性,保留原始模型不变。

选择使用哪个操作符取决于具体需求。如果需要保留原始模型,建议使用 set_object_model_3d_attrib;如果直接修改原始模型即可,建议使用 set_object_model_3d_attrib_mod

创建一个位姿,获取XYZ点
用set_object_model_3d_attrib_mod设置为空的3D体中。并显示
1
1

2

1

1

1

1
1

* 在这个示例中,设置了一个三维物体模型的立方体的坐标。
* 其次,设置了三角形和颜色。第三,修改了一个三维物体模型的坐标。
* 第四,展示了移除已设置属性的过程。
* 在所有步骤之间,都会对生成的三维物体模型进行可视化。
* ******************************
* 初始化程序。

dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 412, 412, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
create_pose (0, 0, 40, 30, 60, 15, 'Rp+T', 'gba', 'point', DisplayPose)
VisualParamNames := ['point_size', 'disp_lines', 'attribute_0', 'color_0']
VisualParamValues := [8, 'true', 'points', 'yellow']
Instructions := 'Rotate: Left button'
Instructions[1] := 'Zoom: Shift + left button'
Instructions[2] := 'Move: Ctrl + left button'
* 
* 创建一个空的三维物体模型
gen_empty_object_model_3d (ObjectModel3D)
* 
* 设置一个立方体的点坐标,并在其中一个平面上添加一个额外的点。
PointCoordX := [0.5, 0, 1, 1, 0, 0, 1, 1, 0] - 0.5
PointCoordY := [0, 1, 1, 1, 1, 0, 0, 0, 0] - 0.5
PointCoordZ := [0.5, 0, 0, 1, 1, 0, 0, 1, 1] - 0.5
set_object_model_3d_attrib_mod (ObjectModel3D, ['point_coord_x', 'point_coord_y', 'point_coord_z'], [], [PointCoordX,PointCoordY,PointCoordZ])
* 
* 显示9个点
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], DisplayPose, VisualParamNames, VisualParamValues, 'Define a cube by point coordinates', [], Instructions, DisplayPose)
* 

* 设置包含额外点的平面的4个三角形,这些三角形属于三维物体模型。
T1 := [0, 8, 5]
T2 := [0, 7, 8]
T3 := [0, 6, 7]
T4 := [0, 5, 6]
T5 := [5, 6, 2]
T6 := [5, 2, 1]
T7 := [6, 7, 3]
T8 := [6, 3, 2]
T9 := [7, 3, 4]
T10 := [7, 4, 8]
T11 := [8, 4, 1]
T12 := [8, 1, 5]
T13 := [2, 3, 4]
T14 := [2, 4, 1]
set_object_model_3d_attrib (ObjectModel3D, 'triangles', [], [T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14], ObjectModel3D2)
* 
* Display the manually triangulated cube.
visualize_object_model_3d (WindowHandle, [ObjectModel3D2,ObjectModel3D2], [], DisplayPose, VisualParamNames, VisualParamValues, 'Connect points to triangles', [], Instructions, DisplayPose)
* 
* Modify the point coordinates.
PointCoordY[0, 3, 6, 7] := [-1, 0.3, -.8, -.3]
set_object_model_3d_attrib_mod (ObjectModel3D2, 'point_coord_y', [], PointCoordY)
* 
* Display the modified object (no longer a cube).
visualize_object_model_3d (WindowHandle, [ObjectModel3D2,ObjectModel3D2], [], DisplayPose, VisualParamNames, VisualParamValues, 'Modify some point coordiantes', [], Instructions, DisplayPose)
* 
* Set extended attributes of the triangles
* to visualize the distance from the plane.
gen_plane_object_model_3d ([0, .55, 0, 90, 0, 0, 0], [-1, -1, 1, 1], [-1, 1, 1, -1], PlaneOM3D)
distance_object_model_3d (ObjectModel3D2, PlaneOM3D, [], 0, [], [])
VisualParamNames2 := [VisualParamNames,'color_attrib_0', 'color_attrib_1', 'color_0', 'color_1', 'color_2']
VisualParamValues2 := [VisualParamValues,'&distance', '&distance', 'yellow', 'orange', 'blue']
visualize_object_model_3d (WindowHandle, [ObjectModel3D2,ObjectModel3D2,PlaneOM3D], [], DisplayPose, VisualParamNames2, VisualParamValues2, ['Set extended attribute \'&distance\'', '(from plane) and display as color value'], [], Instructions, DisplayPose)
* 
* Remove the extended attribute &distance in
* a copy of ObjectModel3D2.
remove_object_model_3d_attrib (ObjectModel3D2, '&distance', ObjectModel3D3)
VisualParamNames2 := [VisualParamNames,'color_0', 'color_1', 'color_2']
VisualParamValues2 := [VisualParamValues,'yellow', 'orange', 'blue']
visualize_object_model_3d (WindowHandle, [ObjectModel3D3,ObjectModel3D3,PlaneOM3D], [], DisplayPose, VisualParamNames2, VisualParamValues2, ['The extended attribute \'&distance\'', 'has been removed'], [], Instructions, DisplayPose)
* 
* Remove the manually created triangles.
remove_object_model_3d_attrib_mod (ObjectModel3D3, 'triangles')
VisualParamNames2 := [VisualParamNames,'color_0', 'color_1']
VisualParamValues2 := [VisualParamValues,'yellow', 'blue']
visualize_object_model_3d (WindowHandle, [ObjectModel3D3,PlaneOM3D], [], DisplayPose, VisualParamNames2, VisualParamValues2, 'The triangles have been removed', [], Instructions, DisplayPose)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值