Halcon算子学习:sample_object_model_3d

image.png

sample_object_model_3d

( : : ObjectModel3D, Method, SampleDistance, GenParamName, GenParamValue : SampledObjectModel3D)

示例一个3D对象模型

输入:


ObjectModel3D

对3D对象模型的处理进行采样。


Method

选择不同的子采样方法。

默认值:“fast”

值列表:‘accurate’, ‘accurate_use_normals’, ‘fast’, ‘fast_compute_normals’


SampleDistance

采样距离。

元素个数:SampleDistance = = 1 | | SampleDistance = ObjectModel3D

默认值:0.05


GenParamName

可以调整的通用参数的名称。

默认值:[]

值列表:“max_angle_diff”,“min_num_points”


GenParamValue(input_control)号数组→(real / integer / string)

可调整的通用参数的值。

默认值:[]

建议值:1、2、5、10、20、0.1、0.25、0.5


输出:


SampledObjectModel3D

包含采样点的3D对象模型的手柄。

元素数量:SampledObjectModel3D = ObjectModel3D

描述

1.sample_object_model_3d创建一个3D对象模型ObjectModel3D的采样版本,该对象模型由彼此之间具有最小距离的点组成。创建的3D对象模型在SampledObjectModel3D中返回。


2.如果需要对复杂的点云进行细化以获得更快的后处理,或者需要将原语转换为点云,那么建议使用sample_object_model_3d。请注意,如果3D对象模型是三角化的,并且应该通过尽可能保持其原始几何形状来简化,则应该使用simplify_object_model_3d。


3.如果输入对象模型ObjectModel3D只包含点,则可以使用参数方法选择几种抽样方法。

默认的“fast”方法是将输入模型中不接近前面添加到输出模型中的任何点的所有点添加到输出模型中。如果存在,则将法线、xyz映射和扩展点属性复制到输出模型中。


4.方法’fast_compute_normals’选择与方法’fast’相同的点,但附加计算所选所有点的法线。为此,输入对象模型必须包含复制的法线,或者必须包含计算法线的xyz映射属性。xyz映射由xyz_to_object_model_3d创建。


该方法“accurate”遍历三维对象模型ObjectModel3D的各个点,并计算在被检查点周围的半径采样距离范围内是否有任何其他点。如果没有其他点,则原始点存储在SampledObjectModel3D中。如果存在其他点,则这些点(包括原始点)的重心存储在SampledObjectModel3D中。重复这个过程,直到没有点剩下。不复制输入3D对象模型的扩展属性,但复制法线和xyz映射。对于这种方法,可以通过在GenParamName和GenParamValue中为‘min_num_points’指定一个值来去除噪声,该值可以去除所有在原始模型中少于指定相邻点数量的内插点。

方法‘accurate_use_normals’需要在输入3D对象模型中使用法线,并且只插入具有相似法线的点。相似度取决于法线之间的角度。角度的阈值可以在GenParamName和GenParamValue中指定,并使用’max_angle_diff’。默认值是180度。此外,可以通过设置通用参数“min_num_points”来删除方法“accurate”中描述的异常值。


如果输入对象模型包含面(三角形或多边形)或3D原语,则使用给定的距离对表面进行采样。在这种情况下,方法中指定的方法将被忽略。注意,平面和圆柱必须有有限的范围。如果输入对象模型包含行,则使用给定的距离对这些行进行采样。


采样过程通过在输出对象模型中创建新点来近似曲面。因此,任何来自输入对象模型的扩展属性都会被丢弃。


对于混合输入对象模型,采样优先级是(从上到下)面、线、原语和点,即,只有最高优先级的对象被采样。

参数SampleDistance可以接受一个值(该值用于ObjectModel3D中传递的所有3D对象模型),也可以接受每个输入对象模型一个值。样本距离的单位是通常的HALCON-internal单位“m”。


注意,如果不再需要或应该覆盖3D对象模型,则必须首先通过调用操作符clear_object_model_3d来释放内存。


示例:

gen_box_object_model_3d ([0,0,0,0,0,0,0],3,2,1, ObjectModel3D)
sample_object_model_3d (ObjectModel3D, 'fast', 0.05, [], [], SampledObjectModel3D)
dev_get_window (WindowHandle)
visualize_object_model_3d (WindowHandle, SampledObjectModel3D, [], [], [], [], [], [], [], PoseOut)


————————————————

版权声明:本文为CSDN博主「Leon_Chan0」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Vichael_Chan/article/details/102744980



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年3月    »
123
45678910
11121314151617
18192021222324
25262728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864