Halcon算子学习:sample_object_model_3d

在这里插入图片描述

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL安装之后没有MySQL数据库的原因

mysql安装完之后,登陆后发现只有两个数据库:mysql> show databases;--------------------| Database |--------------------| information_schema | | test | --------------------,mysql> use mysqlERROR 104…

剑桥大学发布2019年度AI发展报告,预测未来12个月AI产业6件大事

来源:人工智能和大数据近日,剑桥大学发布了2019年度AI发展报告,在这份137页的报告中,涵盖了AI研究、人才、产业等多方面内容,值得一提的是,这份报告专门开辟了一个章节来介绍中国AI技术的发展。一、研究和技…

MATLAB imshow之后在四周加上边框

MATLAB的imshow函数功能默认不会在四周加上边框,有时候如果imshow的图像背景是白色的话,插入文档中则与纸颜色融合了,所以有时候需要给它加个边框,方法就是输入axis on,但这会加上坐标轴,再把坐标轴去掉就行…

SQL Server安全(8/11):数据加密(Data Encryption)

在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切。但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念。这篇文章提供了基础,因此你可以对SQL Server里的安全功能充分利用&#xf…

halconC++类:HDevWindowStack

C源码: // The class HDevWindowStack can be used to emulate the behavior of HDevelop // graphics windows for HALCON graphics windows. It is primarily intended for // usage in C programs exported from HDevelop programs containing HDevelop // wind…

模拟人脑项目彻底宣告失败:耗资10亿欧,10年前轰动全球,如今死得悄无声息...

来源:凹非寺10年砸入10亿欧元,为了用计算机模拟人脑。这个十年前曾轰动全球的项目,如今彻底“死”了,死得悄无声息。要不是有位西方记者提起,人们几乎已经完全遗忘。模拟人脑?呵,实际连一只蠕虫…

MATLAB bwareaopen函数删除二值图像中小面积白色对象

bwareaopen函数的功能是删除二值图像中小面积白色对象 BW2 bwareaopen(BW,P,conn),删除二值图像BW中面积小于P的对象,默认情况下conn使用8邻域。 注意删除的是白色对象,不是黑色对象

变量传值

变量传值 PHP传方式有两种:赋值传值、引用传值 赋值传值: 将一个变量的值传递给另一个变量,array数组 示例: 引用传值: 将一个变量的内存地址传给另一个变量 写时复制: 对变量使用赋值传值时,PH…

物理学的忧伤,从现代物理学的死锁谈起

来源:量子学派“这是一篇信息量极大的文章,我不知道有多少人能真正读完。但希望大家能静下心来,暂且抛开生活的油盐酱醋茶,好好去感受一下——这些似乎离我们的生活太远的智慧和知识。”盛宴已过,天才再无用武之地&…

C++一维数组指针详解

int main() { int a[5]{1,2,3,4,5};int *p1;p1a; //相当于p1&a[0]&#xff0c;此时p1是数组a的第一个元素的地址cout<<*p1<<endl; //输出a[0]cout<<*(p11)<<endl; //输出a[1]int (*p2)[5];p2&a; //&a表示整个数组的地址&#xff0c;p…

范数

范数 机器学习中常用的几种范数 在介绍主题之前&#xff0c;先来谈一个非常重要的数学思维方法&#xff1a;几何方法。在大学之前&#xff0c;我们学习过一次函数、二次函数、三角函数、指数函数、对数函数等&#xff0c;方程则是求函数的零点&#xff1b;到了大学&#xff0…

c++二维数组指针详解

记住很重要的一点&#xff1a;数组名&数组名[0]&#xff0c;比如&#xff0c;对于二维数组a[3][4] &#xff0c;a等同于&a[0]&#xff0c;a[0]等同于&a[0][0] int main() { int a[3][4]{{1,2,3,4},{5,6,7,8},{9,10,11,12}};int *p1;p1a[0]; //表示数组a第一个元…

sql 行转列

create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int) insert into tb values(张三 , 语文 , 74) insert into tb values(张三 , 数学 , 83) insert into tb values(张三 , 物理 , 93) insert into tb values(李四 , 语文 , 74) insert into tb values(李四 , 数学…

EPSON 程序

EPSON 代码程序 1.EPSON SPEL 语言代码示例&#xff1a; // String RCdata$, InData$, toks$(0), data1$, data2$, data3$ //定义字符型变量名需要添加“$”符号 Integer N, x Double VX(500), VY(500), VZ(500) #define delay_Time 0.1 Function mainSetNet #201, "19…

有人机/无人机混合编队协同作战研究综述与展望

来源&#xff1a; 人机与认知实验室摘要&#xff1a;有人机与无人机混合编队协同作战是未来空战的重要形式。有人机是中央指挥&#xff0c;而无人机直接接受有人机的指挥和控制&#xff0c;并进行战场态势感知、目标打击等。有人机和无人机可以看成空间上分离而逻辑上一体的巨型…

C++指针数组详解

数组名都表示第一个元素的地址&#xff0c;比如int a[3]&#xff0c;则a表示&a[0] 指针数组也是数组&#xff0c;它与普通数组区别是两者元素不一样 int数组每个元素都是int型&#xff0c;数组名a对应首元素a[0]的地址&#xff0c;因此数组名a是int*型 而指针数组&#…

中国独角兽报告:2019

来源&#xff1a;泽平宏观文&#xff1a;恒大研究院 任泽平 连一席 谢嘉琪导读独角兽企业代表着新经济的活力&#xff0c;行业的大趋势&#xff0c;国家的竞争力。2018年全球资本市场风起云涌&#xff0c;独角兽势力大洗牌。有些独角兽融资困难&#xff0c;光环不再&#xff1b…

HDU 3896 Greatest TC 双连通分量

题意 给一个连通的无向图&#xff0c;有两种询问&#xff1a; \(a, b, c, d\)&#xff0c;问如果删掉\(c,d\)之间的边&#xff0c;\(a,b\)之间是否还连通\(a, b, c\)&#xff0c;问如果删掉顶点\(c\)&#xff0c;\(a,b\)之间是否还连通分析 首先DFS一遍求出进入节点的时间戳\(p…

C++ 字符串指针和字符串指针数组详解

C处理字符串有两种方式&#xff0c;即&#xff1a;指针方式和数组方式 数组方式&#xff1a;char a[] "HelloWorld";指针方式&#xff1a;const char* s "HelloWorld"; const可以忽略 接下来详细讲解一下字符串指针 首先&#xff0c;为什么字符串可以…

工业机器人的控制方式

工业机器人的控制方式 工业机器人的控制方式目前市场上使用最多的机器人当属工业机器人&#xff0c;也是最成熟完善的一种机器人&#xff0c;而工业机器人能得到广泛应用&#xff0c;得益于它拥有有多种控制方式&#xff0c;按作业任务的不同&#xff0c;可主要分为点位控制方…