Halcon3D篇-3D预处理,滤波,点云筛选

前言

由于3D相机采集到的数据通常通过Tiff格式的深度图进行显示或者保存。
深度图与模型的互转可以访问另一篇博客:https://blog.csdn.net/m0_51559565/article/details/135362674

关于3D相机的数据采集,可以访问我们另一篇关于LMI3D相机SDK的二次开发:
https://blog.csdn.net/m0_51559565/article/details/134404394

一:处理流程

常见的3D数据通常以Z轴作为灰度值的深度图的形式出现。所以我们可以根据2D图的特性,对2D图先进行灰度二值化筛选,图像增强,滤波等方式提取特征点。转换为3D模型后可以通过对点云的欧式距离进行点云集的拆分。

二:灰度筛选与滤波

*读取图像
read_image (Image, 'E:/UpperComputer/3D检测/点云筛选和滤波/XYZ彩色融合图.tiff')
*拆分3通道,对Z通道进行单独处理
decompose3 (Image, x, y, z)
*通过选取灰度值,直接找到所需的区域
threshold (z, Regions, 114.83, 145.83)
*将区域进行裁剪
reduce_domain (z, Regions, ImageReduced)
crop_domain (ImageReduced, ImagePart)
*通过ROI的形式剔除边缘不适合的点云
gen_rectangle1 (ROI_0, 145.41, 81.8859, 509.72, 397.831)
reduce_domain (ImagePart, ROI_0, ImageReduced1)
crop_domain (ImageReduced1, ImagePart1)
*滤波。可以去除由于相机过曝造成的点云
*mean_image (ImagePart1, ImageMean, 9, 9)
*median_image (ImagePart1, ImageMedian, 'circle', 1, 'mirrored')
gauss_filter (ImagePart1, ImageGauss, 5)

原始图像
在这里插入图片描述
灰度二值化处理,与ROI拆分。在实际处理中,为了可以快速的完成对特征区域的匹配,通过会直接通过ROI的形式,当然不局限于还有,例如模板匹配,圆形测量等常用的2D图像提取方法。
在这里插入图片描述

三:点云筛选

在进行完预处理后,通常点云的去噪效果非常好,或者几何完成的情况。但是对于部分特殊情况。例如,由于相机过曝或者强反光的金属表面造成的点云波动,通常这类型的波动情况往往点云数少,高度差距小,所以比较难发现。
通常可以直接使用点云欧式距离。例如下面,对点云欧式距离大于5的点云进行区分(点云间的距离等于5个点的距离)。然后根据我们需要的点云数进行筛选即可

connection_object_model_3d (ObjectModel3D, 'distance_3d', 5, ObjectModel3DConnected)

select_object_model_3d (ObjectModel3DConnected, 'num_points', 'and', 100, 1000000000, ObjectModel3DSelected)

结尾

通常情况下说,灰度二值化将要测量的平面选取出来,然后进行均值滤波,让平面变得光滑,去除噪点,在通过选取ROI去除边缘点云采样不理想的区域。基本可以完成对点云的预处理了。最后根据点云间的距离,还可以进一步的去除噪点。到最后基本就可以完成对点云的处理,方式适用于大部分3D检测和缺陷检测的项目。但是对倾斜面无需抓取项目仍有待考究

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis主从复制哨兵及集群

目录 一.主从复制 主从复制的工作原理如下: 主从复制的作用: 搭建Redis 主从复制 每台服务器配置: ​编辑进行编译安装: 定义systemd服务管理脚本: 开启服务,报错看下内容: 修改 Redis…

Hyperledger Fabric 二进制安装部署 Peer 节点

规划网络拓扑 3 个 orderer 节点;组织 org1 , org1 下有两个 peer 节点, peer0 和 peer1; 组织 org2 , org2 下有两个 peer 节点, peer0 和 peer1; 节点宿主机 IPhosts端口cli192.168.1.66N/AN/Aorderer0192.168.1.66orderer0.example.com70…

深入浅出:原生态App封装的艺术

一、原生态App封装的优势 性能的极致:原生App直接调用设备的硬件资源,减少了中间层的干扰,从而实现更快的运行速度和更流畅的动画效果。 2. 用户体验的完美:原生App可以访问并遵循特定平台的设计指南,提供与操作系统无…

C#: Label、TextBox 鼠标停留时显示提示信息

说明:记录在 Label、TextBox 控件上 鼠标停留时显示提示信息的方法。 1.效果图 2.具体实现步骤 1. 在Form 窗口中先创建 Label 并取名:KEY_label ,或 TextBox 取名:KEY_textBox 2. lable控件的 tips 实现方法1 :代码…

519基于单片机的自动切割流程控制系统

基于单片机的自动切割流程控制系统[proteus仿真] 自动切割流程控制系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于单片机的自动切割流程控制系统 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2&…

Centos7 手动更改系统时间

文章目录 1.更改系统时间2.写入系统时间3.查看是否写入成功 1.更改系统时间 date -s "2017-12-18 09:40:00"2.写入系统时间 hwclock -w3.查看是否写入成功 timedatectl

MongoDB重写

可重写操作 当与数据库网络出现连接问题或在数据库集群主节点切换时不能找到一个正在工作的主节点时,可重试写允许数据库连接驱动再进行一次数据库写入操作。 前置条件 需要复制集或分片集,不支持单节点数据库可重试写需要存储引擎支持文档级别锁定&a…

deeplabv3模型的关键点

spp空间金字塔:可以避免图片固定输入,resize之后又减少了语义信息。这样任意大小的图片都可以输入,就保存了完整的信息。 空洞卷积:卷积的升级,多个尺寸的卷积核,增大了感受野,语义信息更加丰…

接口自动化测试要做什么?

作者:不辣的皮皮 链接:https://www.zhihu.com/question/384727359/answer/1124441469 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 可以分为四个步骤/阶段。 原理 》 业务逻辑》 工具》 …

【LeetCode】2626. 数组归约运算

数组归约运算 题目题解 题目 给定一个整数数组 nums、一个 reducer 函数 fn 和一个初始值 init,返回通过依次对数组的每个元素执行 fn 函数得到的最终结果。 通过以下操作实现这个结果:val fn(init, nums[0]),val fn(val, nums[1])&#…

机器学习-线性回归实践

目标:使用Sklearn、numpy模块实现展现数据预处理、线性拟合、得到拟合模型,展现预测值与目标值,展现梯度下降; 一、导入模块 import numpy as np np.set_printoptions(precision2) from sklearn.linear_model import LinearRegr…

JavaWeb的Filter详解

一、Filter过滤器简介 1、基本概念 JavaWeb的三大组件之一,三大组件为:Servlet、Filter、Listener。 过滤器相当于浏览器与Web资源之间的一道过滤网,在访问资源之前通过一系列的过滤器对请求 进行修改、判断以及拦截等,也可以对…

CMake入门教程【核心篇】导入外部库Opencv

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 环境准备示例:在Windows上配置OpenCV路径示例:在Linux上配置OpenCV路径环境准备 首先确保你的系统中安装了CMake。可以通过以下命令安装: Windows: 下载并…

Transformer从菜鸟到新手(五)

引言 上篇文章我们在单卡上完成了完整的训练过程。 从本文开始介绍模型训练/推理上的一些优化技巧,本文主要介绍多卡并行训练。 下篇文章将介绍大模型推理常用的缓存技术。 多卡训练 第一个要介绍的是利用多GPU优化,因为在单卡上训练实在是太慢。这…

Camunda ServiceTask

一:Java class Java class实现JavaDelegate接口,只需要配置类的全限定名即可,不需要被Spring容器管理。 public class JavaClassServiceTask implements JavaDelegate {Overridepublic void execute(DelegateExecution execution) throws …

【mars3d】批量关闭矢量数据的startFlicker()闪烁或者全部关闭startFlicker()

问题 1.graphic/entity/billboard怎么能够批量关闭startFlicker()闪烁或者 全部关闭startFlicker()呢? 相关链接 1.http://mars3d.cn/editor-vue.html?idgraphic/entity/billboard 2.http://mars3d.cn/apidoc.html#FlickerEntity 期望效果 1.graphic.stopFlic…

【软考】二叉树的存储

目录 一、基本概念二、二叉树的顺序存储2.1 说明2.2 图示 三、二叉树的链表存储3.1 说明3.2 图示 一、基本概念 1.满二叉树:最深一层都没有子节点,其它层都有左右两个节点 2.完全二叉树:是满二叉树的子集,在完全二叉树中最深一层的…

微信小程序实战-02翻页时钟-2

微信小程序实战系列 《微信小程序实战-01翻页时钟-1》 文章目录 微信小程序实战系列前言计时功能实现clock.wxmlclock.wxssclock.js 运行效果总结 前言 接着《微信小程序实战-01翻页时钟-1》,继续完成“6个页面的静态渲染和计时”功能。 计时功能实现 clock.wxm…

shp格式样本转微软COCO格式样本标注

在做影像识别时,需要大量的样本,对于从事GIS和遥感专业的人员来说,可能使用ArcGIS对着影像,绘制样本效率更高。但是很多框架和开源的代码都是基于PASCAL VOC格式和微软COCO格式的样本。这里我分享一下如何将栅格和shp数据转换微软…

记录汇川:ITP与Autoshop进行仿真连接

1、定义如下程序: 2、ITP新建工程: 3、依次选择,最后修改IP 4、定义两个变量 5、拖一个按钮和一个圈出来,地址绑定:M1 6、地址绑定:Y1 7、PLC启动仿真 8、ITP启动在线模拟器 9、即可实现模拟仿真