[3D&Halcon] 3D重要算子及简单处理点云模型求高度示例讲解

这篇具有很好参考价值的文章主要介绍了[3D&Halcon] 3D重要算子及简单处理点云模型求高度示例讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 📢博客主页:https://loewen.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉
  • 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨


一. 重要算子解析

  • read_object_model_3d ( : : FileName, Scale, GenParamName, GenParamValue : ObjectModel3D, Status) — 读取3D点云模型
    参数
    FileName(in)要读取的文件的文件名。
    Scale(in)文件中数据的比例,包括 ‘m’, ‘cm’, ‘mm’, ‘um’, ‘nm’等。
    GenParamName(in)参数名称。
    GenParamValue (in)参数名称对应的值。
    ObjectModel3D(out)3D对象模型的句柄。
    Status(out)状态信息。

  • select_points_object_model_3d ( : : ObjectModel3D, Attrib, MinValue, MaxValue : ObjectModel3DThresholded) — 筛选孤立散点的特征值(点的x y z坐标,法向量x y z)针对点的特诊的筛选
    参数
    ObjectModel3D(in)输入点云模型句柄。
    Attrib(in)被筛选点的属性特征(包括点的X/Y/Z坐标,法向量的X/Y/Z坐标等特征)。
    MinValue(in)被筛选点的属性特征最小值。
    MaxValue (in)被筛选点的属性特征最大值。
    ObjectModel3DThresholded(out)处理之后的3D对象模型的句柄。

注:类似二维平面处理中用于筛选面积、长度、宽度等灰度特征的算子select_obj(Operator)

  • select_object_model_3d ( : : ObjectModel3D, Feature, Operation, MinValue, MaxValue : ObjectModel3DSelected) — 筛选点云连通集合的特征
    参数
    ObjectModel3D(in)输入点云模型句柄。
    Feature(in)特征名称。
    Operation(in)特征之间的关系。
    MinValue(in)特征之间的最小值。
    MaxValue (in)特征之间的最大值。
    ObjectModel3DSelected(out)处理之后的3D对象模型的句柄。

  • triangulate_object_model_3d ( : : ObjectModel3D, Method, GenParamName, GenParamValue : TriangulatedObjectModel3D, Information) — 三角网格曲面重建(点集→曲面)
    参数
    ObjectModel3D(in) 3D对象模型的句柄。
    Method(in)曲面重建所使用的方法。
    GenParamName(in)参数名称。
    GenParamValue (in)参数名称对应的值。
    TriangulatedObjectModel3D(out)网格曲面重建之后的句柄。
    Information(out)状态信息。

  • visualize_object_model_3d ( : : WindowHandle, ObjectModel3D, CamParam, PoseIn, GenParamName, GenParamValue, Title, Label, Information : PoseOut) — 显示3D点云数据
    参数
    WindowHandle(in)窗口句柄指针。
    ObjectModel3D(in)3D模型的句柄。
    CamParam(in)相机内参(与相机自身特性相关的参数,比如相机的焦距、像素大小等)。
    PoseIn (in)相机外参(在世界坐标系中的参数,比如相机的位置、旋转方向等,一般是3个平移+3个旋转),即选择以什么样的姿态去显示该模型。一般默认空[],会以一种默认姿态去显示3D模型
    *GenParamName(in)参数名称,例如:'color'(设置模型显示颜色)'disp_pose'(是否显示世界坐标系)'disp_normals'(是否显示法向量)'normal_color'(法向量显示颜色)'lut'(颜色表)'color_attrib'(颜色属性:对哪个方向颜色递进)等。
    *GenParamValue(in)参数名称对应的值,常用:['lut','color_attrib','disp_pose'], ['color1','coord_z','true']
    Title(in)现实的文字,将显示在输出图形窗口左上角的文本。
    Label(in)将显示在每个显示对象模型位置的文本。
    Information (in)将显示在输出图形窗口左下角的文本。
    PoseOut(out)用户可能以交互式更改的所有对象模型的姿势。

  • write_object_model_3d ( : : ObjectModel3D, FileType, FileName, GenParamName, GenParamValue : ) — 保存3D点云数据
    参数
    ObjectModel3D(in)3D模型的句柄。
    FileType(in)写入的文件的类型。
    FileName(in)写入的文件的名称。
    GenParamName(in)参数名称。
    GenParamValue (in)参数名称对应的值。

注:
1、visualize_object_model_3d算子是阻塞式的,需要点击窗口右下角的Continue按钮才可执行下一步操作,可通过更改内部封装的算子去掉Continue按钮。
2、参数CamParam、PoseIn、GenParamName、GenParamValue,可通过disp_object_model_3d算子完成设置。


二. 相关示例展示

1、点云求电池高度

* 1.读入点云数据(文件中)
read_object_model_3d ('./2020-01-10-235331.om3', 'm', [], [], ObjectModel3D, Status)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*   可视化显示三维点云模型
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [], ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], [], [], [], PoseOut)
* 2.得到电池表面点云的数据集合(mm)
get_object_model_3d_params (ObjectModel3D, 'point_coord_z', GenParamValue)
*   去掉不在电池表面的干扰噪点(针对点的特征进行筛选)
select_points_object_model_3d (ObjectModel3D, 'point_coord_z', 15, 16, ObjectModel3DThresholded)
visualize_object_model_3d (WindowHandle, ObjectModel3DThresholded, [], [], ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], [], [], [], PoseOut1)
*   点云连通集合断开(点点间距不超过1mm的点当做一个连通域点集)
connection_object_model_3d (ObjectModel3DThresholded, 'distance_3d', 1, ObjectModel3DConnected)
get_object_model_3d_params (ObjectModel3DConnected, 'num_points', GenParamValue1)
*   去掉其他散点组成的连通域,获取电池表面点集连通域(针对点云连通集合之间的特征进行筛选)
select_object_model_3d (ObjectModel3DConnected, 'num_points', 'and', 1000, 50000, ObjectModel3DBattery)
visualize_object_model_3d (WindowHandle, ObjectModel3DBattery, [], [], ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], [], [], [], PoseOut1)
* 3.得到背景的点云数据集合(mm)
select_points_object_model_3d (ObjectModel3D, 'point_coord_z', 12, 14, ObjectModel3DBackGround)
visualize_object_model_3d (WindowHandle, ObjectModel3DBackGround, [], PoseOut1,  ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], [], [], [], PoseOut2)
* 4.求电池上表面点云的z坐标值
get_object_model_3d_params (ObjectModel3DBattery, 'point_coord_z', GenParamValue1)
* 5.求背景表面的点云的z坐标值
get_object_model_3d_params (ObjectModel3DBackGround, 'point_coord_z', GenParamValue2)
* 6.求电池上表面点云A和背景表面点云B的z坐标的平均值
A:=mean(GenParamValue1)
B:=mean(GenParamValue2)
* 7.求电池表面的高度
H:=A-B
Param[0]:='Shift+left button Zoom'
Param[1]:='ctrl+ left button Move'
Param[2]:='left button Rotat'
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [], ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], '电池点云的高度为'+H+'mm', 'Battery Object', Param, PoseOut)

结果图如下所示(Halcon默认红色代码X轴、绿色代表Y轴、蓝色代表Z轴):

halcon 3d,3D视觉,3d,点云处理,halcon

通过计算电池表面的点云Z坐标集合平均值和和背景表面的点云Z坐标集合平均值作差,最终计算结果为2.94mm,标准高度在3mm左右,误差在0.1mm左右.

halcon仿真代码以及点云模型分享链接: https://pan.baidu.com/s/1YjXlMva_duZb2tBUj1ga5A    提取码:et5w文章来源地址https://www.toymoban.com/news/detail-776631.html


下雨天,最惬意的事莫过于躺在床上静静听雨,雨中入眠,连梦里也长出青苔。

到了这里,关于[3D&Halcon] 3D重要算子及简单处理点云模型求高度示例讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Halcon中的一些3D算子

    1.read_object_model_3d  从文件读取一个3d模型 如下图,读的一个ply文件出来是个3d点云模型  2.visualize_object_model_3d  交互式展示3d模型 即上个算子读出来后,通过这个算子可以把3d模型显示出来旋转、平移,缩放来观察操作 算子签名 visualize_object_model_3d( : : WindowHandle, ObjectModel3D,

    2024年02月11日
    浏览(36)
  • Halcon 3D-Transformation 相关算子(一)

    (1) hom_mat3d_identity( : : : HomMat3DIdentity) 功能:生成三维齐次变换矩阵。 控制输出参数:HomMat3DIdentity:变换矩阵。 (2) create_pose( : : TransX, TransY, TransZ, RotX, RotY, RotZ, OrderOfTransform, OrderOfRotation, ViewOfTransform : Pose) 功能:创建一个3D位姿。 控制输入参数1:(TransX, TransY, TransZ):分别表示

    2024年01月20日
    浏览(38)
  • [Halcon&3D] 3D鞋点胶的点云边界提取

    📢博客主页:https://loewen.blog.csdn.net 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 丶布布 原创,首发于 CSDN, 转载注明出处 🙉 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨ 一. 边界提取的常规思路 3D鞋实物图如下所示: 鞋点胶的点云边界

    2024年02月09日
    浏览(41)
  • [3D&Halcon] 3D鞋点胶的点云边界提取

    📢博客主页:https://loewen.blog.csdn.net 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 丶布布 原创,首发于 CSDN, 转载注明出处 🙉 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨ 一. 边界提取的常规思路 3D鞋实物图如下所示: 鞋点胶的点云边界

    2024年02月15日
    浏览(122)
  • [3D&Halcon] 三维点云匹配&无序抓取

    📢博客主页:https://loewen.blog.csdn.net 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 丶布布 原创,首发于 CSDN, 转载注明出处 🙉 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨ 一. 3D无序抓取原理 通过 3D 成像系统(激光三角、结构光+单/双目等

    2024年02月08日
    浏览(40)
  • Halcon3d 点云计算平面度

    2024年02月11日
    浏览(39)
  • HALCON visualize_object_model_3d 算子原理的理解以及使用HSmartWindowControlWPF重实现

    1. 参数说明 WindowHandle:显示点云的窗口句柄 ObjectModel3D:待显示的点云对象 CamParam:相机内参 此处的相机指的是一个虚拟相机,为观察点云提供一个视角,如下图,点云在一个场景坐标系中(SCS),我们在WindowHandle中看到的点云效果就是通过此虚拟相机看到的点云 该值可以

    2024年02月14日
    浏览(71)
  • 根据点云高度赋色(附open3d python代码)

       

    2024年02月14日
    浏览(43)
  • 使用halcon实现3维点云物体与模型的匹配并显示差异

    一、读取3D模型文件,并采样生成对应的模板文件 二、一次读取3D的模型文件进行配准显示差异 三、效果展示 蓝色为模型相对于3D模板多出的部分 红色为模型相对于3D模板缺少的部分

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包