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

news2024/12/28 21:48:56

前言

由于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检测和缺陷检测的项目。但是对倾斜面无需抓取项目仍有待考究

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

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

相关文章

【leetcode】力扣算法之两数相加【中等难度】

题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都…

书生·浦语大模型实战营第二次课堂笔记

文章目录 什么是大模型?pip,conda换源模型下载 什么是大模型? 人工智能领域中参数数量巨大、拥有庞大计算能力和参数规模的模型 特点及应用: 利用大量数据进行训练拥有数十亿甚至数千亿个参数模型在各种任务重展现出惊人的性能 …

鸿鹄电子招投标系统:企业战略布局下的采购寻源解决方案

在数字化采购领域,企业需要一个高效、透明和规范的管理系统。通过采用Spring Cloud、Spring Boot2、Mybatis等先进技术,我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力,通过待办消息、招标公告、中标公告和信息发布等功能模块…

从私有Git仓库的搭建到命令的使用及部署再到分支管理

一、版本控制系统/版本控制器 1. 版本控制系统: git 分布式 —没有中心代码库,所有机器之间的地位同等(每台机器上都有相同的代码) svn 集中管理的 —有中心代码库,其他都是客户端 2.git与svn介绍 1.git属于分布…

力扣:18.四数之和

一、做题链接:18. 四数之和 - 力扣(LeetCode) 二、题目分析 1.做这一道题之前本博主建议先看上一篇《三数之和》 2.题目分析 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重…

vue+springboot+mybatis实现项目管理系统

项目前端:https://gitee.com/anxin-personal-project/project-management-front 项目后端:https://gitee.com/anxin-personal-project/project-management-behind 项目均可运行!!!有问题留言,如果看到了会…

自创C++题目——自掏腰包

预估难度 中等 题目描述 我今天特别开心,去了一家商场。有个商场,商场里有个商品,我要买个产品,每个商品元,去一家商场需要元(不包括第一次),那么我该怎么花钱,才能花…

网页内容任君采撷-右键无法复制

CSDN一年一度的博客之星评选活动已经结束,刚好点击来看看学习一下大佬们的博客。 发现绝大部分的博主对于知识的公开度都是非常高的,当然除了收费的专栏外。 其中少部分博主对自己的博文设定了一定的操作,无法直接使用博文中的内容。 现在大…

js highcharts图表控件

Highcharts是国外的一款功能强大、开源、美观、图表丰富、兼容绝大多数浏览器的纯js图表库 一、新建项目&#xff1a;HchartDemo 二、引入js <script src"~/lib/jquery/dist/jquery.min.js"></script> <script src"~/lib/hchart/highcharts.js…

Java后端开发——Mybatis实验

文章目录 Java后端开发——Mybatis实验一、MyBatis入门程序1.创建工程2.引入相关依赖3.数据库准备4.编写数据库连接信息配置文件5.创建POJO实体6.编写核心配置文件和映射文件 二、MyBatis案例&#xff1a;员工管理系统1.在mybatis数据库中创建employee表2.创建持久化类Employee…

The Sandbox 2024 Game Jam 启动|向博姆库斯博士证明你的游戏开发实力!

The Sandbox Game Jam 是面向所有游戏制作爱好者的创作比赛&#xff01;我们诚邀您加入 The Sandbox 的生态系统&#xff0c;这里充满活力&#xff0c;游戏与文化相融&#xff0c;创作者彼此切磋&#xff0c;共同实现梦想。唯一能限制您的只有想象力。The Sandbox 游戏由大家共…

Python中调用matplotlib库三维可视化图像像素曲面分布

为了更直观的从3D视角观察一副图像的像素分布&#xff0c;且拖动观察没一个像素细节&#xff0c;可以使用下面代码实现。 目录 一、代码二、效果展示 一、代码 使用代码修改修改的地方如下&#xff1a; 具体实现代码如下: import numpy as np import matplotlib.pyplot as …

Qt QProcess进程间调用及交互通信,完整示例

1. 概述 使用Qt进行应用程序开发&#xff0c;主要是通过QProcess类用于启动外部程序并与其进行通信. 1.1. 运行进程 要启动进程&#xff0c;需要运行的程序的名称和命令行参数作为参数传递给start()。参数以QStringList形式提供。 start()方法原型&#xff1a; void start(…

【C++】HP-Socket(二):框架介绍、功能说明

1、接口 1.1 接口模型 1.2 三类接口 HP-Socket 定义了三类接口 组件接口&#xff08;如&#xff1a;ITcpServer / IUdpClient&#xff09;&#xff1a;声明组件操作方法&#xff0c;应用程序创建组件对象后通过该接口来使用组件组件实现类&#xff08;如&#xff1a;CTcpSer…

小巧且兼具高性能的小模型 TinyLlama 等

TinyLlama-1.1B 小模型在边缘设备上有着广泛的应用&#xff0c;如智能手机、物联网设备和嵌入式系统&#xff0c;这些边缘设备通常具有有限的计算能力和存储空间&#xff0c;它们无法有效地运行大型语言模型。因此&#xff0c;深入探究小型模型显得尤为重要。 来自新加坡科技…

springboot虹软人脸识别集成

准备工作 虹软开放平台中创建一个新的应用 虹软开发平台【点我跳转】 开始上代码 基本配置 将下载的jar包放到src同级目录下 <!-- 虹软--><dependency><groupId>com.arcsoft.face</groupId><artifactId>arcsoft-sdk-face</artifactI…

【RH850U2A芯片】RAM and Flash介绍

目录 前言 正文 1.RH850-U2A16芯片RAM 1.1 用户使用RAM类型及大小 1.2 各类RAM起始地址 1.3 LRAM和CRAM的区别 1.4 RAM初始化问题 1.5 RAM使用经验 2.RH850-U2A16芯片Flash 2.1 Flash类型及大小 2.2 各类Flash的起始地址 2.3 Code Flash和Data Flash的区别 2.4 Fl…

谷粒商城项目|微服务架构的一些与思考解决跨域问题

1.微服务架构的组成每部分的作用 2.还有其他的微服务架构模式吗 3.微服务服务交互的方式 1&#xff09;grpc 2&#xff09;rest api 4.微服务网关与API网关&#xff1f; 5.注册中心比较&#xff08;Nacos与Eureka&#xff09; Nacos Nacos 是阿里巴巴开源的项目&#xff0c;N…

Vue2.v-指令

v-if 在双引号中写判断条件。 <div v-if"score>90">A</div> <div v-else-if"score>80">B</div> <div v-else>C</div>v-on: :冒号后面跟着事件。 为了简化&#xff0c;可以直接用代替v-on:。 事件名“内联语…

Nessus漏洞扫描工具安装、使用技巧及注意事项

Nessus是一款功能强大的安全评估工具&#xff0c;它可以帮助安全团队快速发现网络中潜在的安全风险和漏洞&#xff0c;并对其进行评估和修复。对于渗透测试人员来说&#xff0c;Nessus更是必不可少的工具之一。 1. Nessus安装 获取安装包&#xff0c;官网地址&#xff1a;http…