当前位置: 首页 > article >正文

移除3D对象的某些部分点云

1,目的

  • 移除3D对象指定区域的点云。
  • 效果
    在这里插入图片描述

2,原理。

  • 通过投影剔除指定区域外的点云数据。

3,主要的算子。

3.1,gen_image_gray_ramp

是 Halcon 中用于生成‌线性灰度渐变图像‌的算子

  • 功能概述‌

    • 数学原理‌
      生成的图像灰度值按公式计算:
      I m a g e G r a y R a m p ( r , c ) = A l p h a ∗ ( r − R o w ) + B e t a ∗ ( c − C o l u m n ) + M e a n ImageGrayRamp(r,c) = Alpha*(r-Row) + Beta*(c-Column) + Mean ImageGrayRamp(r,c)=Alpha(rRow)+Beta(cColumn)+Mean
      其中 (r,c) 为像素坐标,结果灰度值会被裁剪到 [0,255](byte 类型)。
    • ‌典型用途‌
      模拟光照渐变效果
      作为图像处理的测试输入
  • 参数详解‌

参数说明
Alpha行方向(Y轴)的灰度变化斜率,正负控制渐变方向
Beta列方向(X轴)的灰度变化斜率
Mean灰度基准值,决定整体亮度水平
Row/Column渐变中心坐标(默认 Height/2, Width/2)
Width/Height生成图像的尺寸(单位:像素)
  • 技术特性‌

    ‌数据类型‌:输出图像为 byte 类型(8位无符号整型)
    ‌多线程支持‌:算子可并行执行(reentrant 属性)

  • 应用示例‌
    生成一个 512×512 的斜向灰度渐变图像(左上暗、右下亮):

gen_image_gray_ramp(ImageRamp, 0.2, 0.2, 50, 256, 256, 512, 512)
  • 注意事项‌
    若 Alpha 和 Beta 均为 0,图像将呈现均匀灰度(值为 Mean)
    超出 [0,255] 的灰度值会被自动截断

3.2,reduce_object_model_3d_by_view

‌基于虚拟视角的 3D 模型智能降采样‌ 的核心算子,其功能是通过投影剔除指定区域外的点云数据,优化模型处理效率

  • 核心功能‌
    视窗感知降采样‌
    将 3D 模型投影到虚拟相机视图平面,仅保留落在 Region 参数指定区域内的点
    自动剔除背面或遮挡部分,保留可见区域细节
    工业应用价值‌
    数据量减少 ‌70%-90%‌,同时保持关键特征
    适用于视觉检测、机器人抓取等需实时处理的场景

  • 参数详解‌

‌参数‌作用‌ ‌示例值‌
ObjectModel3D输入待处理的 3D 对象模型从文件读取的模型数据
CamParam虚拟相机内参(焦距、畸变等)标定后的相机参数矩阵
Pose虚拟相机位姿(外参),定义投影视角6D 位姿向量 [X,Y,Z,Rx,Ry,Rz]
RegionROI 区域(可空)指定保留点的投影范围
ObjectModel3DReduced输出的简化模型降采样后的模型句柄

▶️ ‌注‌:若 Region 为空,则默认保留所有投影到图像平面内的点

  • 注意事项‌
    ‌内存管理‌:输出模型使用后需手动释放 clear_object_model_3d
    ‌网格处理‌:若输入为网格模型,仅当所有顶点均在 Region 内时面片才会保留
    ‌并行支持‌:算子支持多线程加速(reentrant 模式)

  • 应用场景‌
    ‌目标定位‌:配合 remove_background_for_3d_object_localization 剔除背景干扰
    ‌实时检测‌:简化模型以提升匹配算法速度


4,代码。

* 参考案例库:reduce_object_model_3d_by_view.hdev* ********************************************************
* This example program shows how to remove parts of a
* 3D object model using reduce_object_model_3d_by_view.
* In particular, the user can rotate and translate the
* object and then draw a region that cuts out all points
* of the model that are projected into this region.
* All faces that base on one of these points are removed.
* ********************************************************
* 
* Read 3D object model
read_object_model_3d ('glass_mug', 'cm', [], [], ObjectModel3D, Status)
* 
* Prepare the Visualization
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 768, 512, 'black', WindowHandle)
dev_set_draw ('margin')
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
* 
CamParam := [0.01,0,7e-6,7e-6,384,255,768,512]
Pose := [-0.1e-3,-0.47e-3,55.8e-3,104.5,358.0,353.0,0]*
* 生成一个线性灰度渐变的图像
* Alpha:行方向灰度变化率;Beta:列方向灰度变化率;Mean:灰度基准值;Row/Column:渐变中心坐标
* 生成图像的像素灰度值:ImageGrayRamp(r,c)=Alpha*(r-Row)+Beta*(c-Column)+Mean
* r,c为像素坐标,灰度值会被裁剪至[0,255](byte类型)
gen_image_gray_ramp (Ramp, -0.5, 0, 300, 0, 512, 768, 512)
* 
* Show current 3D object model
Title := '移动并旋转对象到适当的姿态,'
Title[1] := '然后选择要修剪的区域。'
Instructions[0] := 'Rotate: Left button'
Instructions[1] := 'Zoom:   Shift + left button'
Instructions[2] := 'Move:   Ctrl  + left button'
* 'disp_pose_0':显示第一个模型的坐标系
* 'attribute_1':第二个模型渲染形式。值为points:渲染为点云;wireframe:渲染为线框网格;surface:渲染为实体表面
* 'disp_background':是否显示背景
GenParamName := ['color_0','disp_pose_0','alpha_0','attribute_1']
GenParamValue := ['yellow','true',0.3,'points']
GenParamName := [GenParamName,'color_1','disp_background']
GenParamValue := [GenParamValue,'blue','true']
* 背景图像
dev_display (Ramp)visualize_object_model_3d (WindowHandle, [ObjectModel3D,ObjectModel3D], CamParam, Pose, GenParamName, GenParamValue, Title, [], Instructions, Pose)
* 
* Now, select the points to be trimmed off by entering a
* suitable region
Message := '现在用鼠标绘制区域以剪切模型的一部分'
Message[1] := '(Right click to finish)'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
* Wait for a region
dev_set_line_width (3)
dev_set_color ('red')
draw_region (Region, WindowHandle)
gen_rectangle1 (Rectangle, 0, 0, CamParam[7], CamParam[6])
* 保留的区域
difference (Rectangle, Region, RegionComplement)
* 通过投影剔除指定区域外的点云数据,仅保留落在 RegionComplement 参数指定区域内的点
reduce_object_model_3d_by_view (RegionComplement, ObjectModel3D, CamParam, Pose, ObjectModel3DReduced)
* 
* Visualize the result
Title := 'Resulting reduced 3d object model'
dev_display (Ramp)
visualize_object_model_3d (WindowHandle, [ObjectModel3DReduced,ObjectModel3DReduced], CamParam, Pose, GenParamName, GenParamValue, Title, [], Instructions, Pose)
clear_object_model_3d ([ObjectModel3D,ObjectModel3DReduced])

相关文章:

移除3D对象的某些部分点云

1,目的 移除3D对象指定区域的点云。效果 2,原理。 通过投影剔除指定区域外的点云数据。 3,主要的算子。 3.1,gen_image_gray_ramp 是 Halcon 中用于生成‌线性灰度渐变图像‌的算子 功能概述‌ 数学原理‌ 生成的图像灰度值…...

阿里云为何,一个邮箱绑定了两个账号

阿里云“幽灵账号”之谜:同一个邮箱注销后仍有两个账号?深度揭秘成因与终极解决方案! 你是否曾在阿里云上使用同一个邮箱注册过多个账号,明明已经**“彻底”注销了其中一个**,却惊愕地发现系统里依然**“幽灵般”挂着…...

高效视频倍速播放插件推荐

软件介绍 本文介绍一款名为Global Speed的视频速度控制插件,该插件在插件市场评分极高,被公认为目前最好用的视频倍速插件之一。 插件安装与基本功能 安装Global Speed插件后,用户只需点击插件图标即可选择播放倍数,最高支持16…...

无他相机:专业摄影,触手可及

在数字摄影时代,手机摄影已成为许多人记录生活、表达创意的重要方式。无他相机正是这样一款专为摄影爱好者设计的相机应用程序,它不仅提供了专业级摄影设备的大部分功能,还通过简洁直观的操作界面,让每一位用户都能轻松上手&#…...

基于贝叶斯优化神经网络的光伏功率预测综述

基于贝叶斯优化神经网络的光伏功率预测综述 一、贝叶斯优化的基本原理与核心组件 贝叶斯优化(Bayesian Optimization, BO)是一种基于概率模型的全局优化方法,特别适用于高成本评估的黑盒函数优化问题。其核心由代理模型和采集函数构成&…...

【C++11】折叠引用和完美转发

目录 一. 前言二. 引用折叠引用折叠的规则 三. 完美转发完美转发适用场景完美转发底层实现思考1思考2 一. 前言 在函数传参时,如果想保持某个参数的属性不改变,需要完美转发,而完美转发的实现需要折叠引用的帮助 二. 引用折叠 在语法上&am…...

数据结构:递归:自然数之和

目录 递归解法 🔹第一步:定义本质问题 🔹第二步:分解问题结构 🔹第三步:定义初始条件 🔹第四步:递归思想的自然生成 循环解法 🔹第 1 步:定义问题最小…...

网易 - 灵犀办公文档

一. 企业介绍 网易是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,通过开设新闻、娱乐、体育等30多个内容频道,以及博客、视频、论坛等互动交流,网聚人的力量。 为了给中小企业和个人打造一款综合性办公产…...

【C++】模板与特化技术全面教程(claude sonnet 4)

第一章:模板的基础概念 (Template Fundamentals) 1.1 什么是模板? 模板 (Template) 是C中的一种泛型编程 (Generic Programming) 机制,它允许我们编写与类型无关的代码。想象一下,如果我们要为不同的数据类型编写相同逻辑的函数&a…...

ABAP设计模式之---“高内聚,低耦合(High Cohesion Low Coupling)”

“高内聚、低耦合”是面向对象编程中非常重要的设计原则,它有助于提高代码的可维护性、扩展性和复用性。 1. 初衷:为什么会有这个原则? 在软件开发中,随着业务需求的复杂化,代码难免会变得越来越庞大。如果开发者将一…...

RagFlow优化代码解析(一)

引子 前文写到RagFlow的环境搭建&推理测试,感兴趣的童鞋可以移步(RagFlow环境搭建&推理测试-CSDN博客)。前文也写过RagFLow参数配置&测试的文档,详见()。很少写关于具体代码的blog&#xff0c…...

【python与生活】用 Python 从视频中提取音轨:一个实用脚本的开发与应用

在当今数字化的时代,视频内容无处不在。无论是学习教程、会议记录、在线讲座还是娱乐视频,我们每天都会接触到大量的视频资源。有时候,我们可能只对视频中的音频部分感兴趣,比如提取讲座的音频用于后续收听,或者从电影…...

深度强化学习赋能城市消防优化,中科院团队提出DRL新方法破解设施配置难题

在城市建设与发展中,地理空间优化至关重要。从工业园区选址,到公共服务设施布局,它都发挥着关键作用。但传统求解方法存在诸多局限,如今,深度学习技术为其带来了新的转机。 近日,在中国地理学会地理模型与…...

云原生周刊:探索 Gateway API v1.3.0

开源项目推荐 WatchAlert WatchAlert 是一个轻量级、云原生的多数据源监控告警引擎,支持 AI 驱动的智能告警分析,旨在帮助升级您的监控系统架构。该项目基于 Go 和 React 开发,提供了现代化的前后端架构。后端使用 Go 语言,结合…...

008房屋租赁系统技术揭秘:构建智能租赁服务生态

房屋租赁系统技术揭秘:构建智能租赁服务生态 在房地产租赁市场日益活跃的当下,房屋租赁系统成为连接房东与租客的重要数字化桥梁。该系统集成用户管理、房屋信息等多个核心模块,面向管理员、房东和用户三类角色,通过前台展示与后…...

Python训练打卡Day41

简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 → Batch…...

spring-boot-admin实现对微服务监控

spring-boot-admin可以对微服务的状态进行监控&#xff0c;步骤如下&#xff1a; 1、添加spring-boot-admin和nacos依赖 <!-- nacos注册中心 --> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-n…...

Linux 权限管理入门:从基础到实践

文章目录 引言一、Linux 权限管理概述二、文件权限值的表示方法三、文件访问权限的设置&#xff08;chmod&#xff09;四、file指令&#xff1a;快速识别文件类型五、目录的权限六、普通文件的权限七、权限总结八、粘滞位 引言 在 Linux 系统中&#xff0c;权限管理是确保多用…...

Mycat的监控

参考资料&#xff1a; 参考视频 参考博客 Mysql分库分表&#xff08;基于Mycat&#xff09;的基本部署 MySQL垂直分库&#xff08;基于MyCat&#xff09; Mysql水平分表&#xff08;基于Mycat&#xff09;及常用分片规则 视频参考资料及安装包&#xff1a; https://pan.b…...

Glide源码解析

前言 Glide是一款专为Android设计的开源图片加载库。有以下特点&#xff1a;1.支持高效加载网络、本地及资源图片&#xff1b;2.具备良好的缓存策略及生命周期管理策略&#xff1b;3.提供了简易的API和强大的功能。本文将对其源码进行剖析。 基本使用 dependencies {compile …...

7.RV1126-OPENCV cvtColor 和 putText

一.cvtColor 1.作用 cvtColor 是 OPENCV 里面颜色转换的转换函数。能够实现 RGB 图像转换成灰度图、灰度图转换成 RGB 图像、RGB 转换成 HSV 等等 2.API CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn 0 ); 第一个参数&#xff1a;…...

Android 之 kotlin 语言学习笔记二(编码样式)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/style-guide?hlzh-cn#whitespace 1、源文件命名 所有源文件都必须编码为 UTF-8。如果源文件只包含一个顶级类&#xff0c;则文件名应为该类的名称&#xff08;区分大小写&#xff09;加上 .kt 扩展名。…...

Redisson单机模式

redisson调用unlock的过程 Redisson 是一个基于 Redis 的 Java 驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;框架&#xff0c;提供了分布式和可扩展的数据结构和服务。Redisson 的 unlock 方法用于释放锁。下面是 unlock 方法的调用过程&#xff1a; 获取锁的状…...

数据结构第6章 图(竟成)

第 6 章 图 【考纲内容】 1.图的基本概念 2.图的存储及基本操作&#xff1a;(1) 邻接矩阵法&#xff1b;(2) 邻接表法&#xff1b;(3) 邻接多重表、十字链表 3.图的遍历&#xff1a;(1) 深度优先搜索&#xff1b;(2) 广度优先搜索 4.图的基本应用&#xff1a;(1) 最小 (代价) 生…...

机器人现可完全破解验证码:未来安全技术何去何从?

引言 随着计算机视觉技术的飞速发展&#xff0c;机器学习模型现已能够100%可靠地解决Google的视觉reCAPTCHAv2验证码。这标志着一个时代的结束——自2000年代初以来&#xff0c;CAPTCHA&#xff08;"全自动区分计算机与人类的图灵测试"的缩写&#xff09;一直是区分…...

CppCon 2014 学习:(Costless)Software Abstractions for Parallel Architectures

硬件和科学计算的演变关系&#xff1a; 几十年来的硬件进步&#xff1a;计算机硬件不断快速发展&#xff0c;从提升单核速度&#xff0c;到多核并行。科学计算的驱动力&#xff1a;科学计算需求推动硬件创新&#xff0c;比如需要更多计算能力、更高性能。当前的解决方案是并行…...

网络爬虫 - App爬虫及代理的使用(十一)

App爬虫及代理的使用 一、App抓包1. App爬虫原理2. reqable的安装与配置1. reqable安装教程2. reqable的配置3. 模拟器的安装与配置1. 夜神模拟器的安装2. 夜神模拟器的配置4. 内联调试及注意事项1. 软件启动顺序2. 开启抓包功能3. reqable面板功能4. 夜神模拟器设置项5. 注意事…...

Kafka集群部署(docker容器方式)SASL认证(zookeeper)

一、服务器环境 序号 部署版本 版本 1 操作系统 CentOS Linux release 7.9.2009 (Core) 2 docker Docker version 20.10.6 3 docker-compose docker-compose version 1.28.2 二、服务规划 序号 服务 名称 端口 1 zookeeper zookeeper 2181,2888,3888 2 ka…...

【python爬虫】利用代理IP爬取filckr网站数据

亮数据官网链接&#xff1a;亮数据官网...

群晖 NAS 如何帮助培训学校解决文件管理难题

在现代教育环境中&#xff0c;数据管理和协同办公的效率直接影响到教学质量和工作流畅性。某培训学校通过引入群晖 NAS&#xff0c;显著提升了部门的协同办公效率。借助群晖的在线协作、自动备份和快照功能&#xff0c;该校不仅解决了数据散乱和丢失的问题&#xff0c;还大幅节…...