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)