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

article/2025/6/27 1:43:48

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])

http://www.hkcw.cn/article/xMtinqpYOZ.shtml

相关文章

达芬奇(DaVinci Resolve)下载安装教程

目录 一、软件介绍 二、软件下载 2.1 浏览器访问官网 2.2 进行软件包下载 三、软件安装 3.1 解压软件包 3.2 安装软件 四、基本配置 4.1 语言设置 4.2 其他设置 一、软件介绍 达芬奇(DaVinci Resolve)视频调色软件。DaVinci Resolve汇集剪辑、…

教室门口160cm是小学生低头线 高中版引发热议

教室门口160cm是小学生低头线!5月27日,山东济宁某高中教室内发生了一件有趣的事情。课间休息时,一位老师注意到学生们普遍较高,旁边正好站着一个身高182厘米的男生,于是老师以他为参照,在教室门口贴上一条胶带作为身高线。结果发现,不少男生经过时都需要低头,这一现象迅…

印尼力邀中企深化产业下游化 共创可持续发展

在印尼谈到与中国的经贸合作,“下游化”是最常提到的词。印尼国土辽阔,镍矿资源的储量和产量皆名列全球第一。坐拥全球绿色能源转型的关键金属,印尼吸引了大量全球投资者。单纯出口原始矿藏对当地就业帮助甚少,且由于附加值低,对印尼财政增收贡献有限。为此,印尼近10年来…

《天下第一楼》迎第600场演出 经典传承再续辉煌

6月2日晚,由何冀平编剧,夏淳、顾威、闫锐导演的北京人艺经典话剧《天下第一楼》在首都剧场迎来第600场演出。北京人艺院长冯远征当天再次强调了“深入生活、体验生活”对创作者的重要性。这部作品讲述了上个世纪初北京城饮食界老字号饭庄“福聚德”在时代变迁中的兴衰史。自1…

2022年上半年软件设计师下午试题

答案: 试题一: 试题二: 试题三: 试题四: 试题五: 试题六:

前端高频面试题2:JavaScript/TypeScript

1.什么是类数组对象 一个拥有 length 属性和若干索引属性的对象就可以被称为类数组对象,类数组对象和数组类似,但是不能调用数组的方法。常见的类数组对象有 arguments 和 DOM 方法的返回结果,还有一个函数也可以被看作是类数组对象&#xff…

花卉目标检测数据集介绍(共 12 类,10490 张图像)

在计算机视觉与智能农业快速发展的背景下,基于深度学习的花卉识别与检测技术正被广泛应用于植物分类、智能园艺、自动监测与生态研究等多个领域。为了推动花卉类目标检测任务的发展,本文介绍一个包含 12 种常见花卉类别的目标检测数据集,总计…

linux学习第18天(fork函数)

pid_t fork(void):创建一个子进程 成功:父进程返回子进程pid 子进程返回0(创建成功) 失败:-1 getpid/getppid 举个例子,顺便演示getpid和getppid 子进程只能执行fork之后的代码,并且同时争夺c…

Pycharm的终端无法使用Anaconda命令行问题详细解决教程

很多初学者在Windows系统上安装了Anaconda后,在PyCharm终端中运行Conda命令时,会遇到以下错误: conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 请检查名称的拼写,如果包括路径,请确保…

关税政策推进受阻 特朗普政府求助上诉法院

当地时间6月2日,美国特朗普政府请求联邦上诉法院阻止此前哥伦比亚特区联邦地区法院裁定其关税政策“违法”的命令。当地时间5月29日,位于首都华盛顿的哥伦比亚特区联邦地区法院就特朗普政府依据《国际紧急经济权力法》对多国加征的关税措施发布初步禁令。该裁决针对美国两家小…

如何看待乌称摧毁大量俄战略轰炸机 俄方反驳称战果夸大

乌克兰国家安全局6月1日在社交媒体上宣布,对位于西伯利亚地区的俄罗斯轰炸机基地进行了袭击。乌方表示,此次行动目标精准,约34%的俄罗斯战略轰炸机遭到攻击,俄方战略航空兵损失高达70亿美元。行动由乌克兰总统泽连斯基亲自协调,安全局局长马柳克率队实施。泽连斯基高度评价…

刘若钒:很遗憾因伤不能和大家一起并肩战斗了,兄弟们加油 伤病阻挡国家队梦想

北京时间6月2日,中国男足公布了出征印尼客场的25人名单,刘若钒因伤未能入选。刘若钒在社交媒体上表达了遗憾:“重回国家队是对我这半年在海港表现的认可,但很遗憾因伤不能和大家一起并肩战斗了。”他同时表示,为国家队比赛一直是他的梦想,希望队友们加油,为中国队助威。…

俄乌谈判草草结束 细看条件都够狠 双方态度强硬

乌克兰在发动无人机袭击后,与俄罗斯在土耳其进行了第二轮和谈。谈判持续了大约一个小时便匆匆结束。土耳其方面表示,谈判以“非消极”的方式结束。5月16日进行了第一轮谈判,6月2日进行了第二轮谈判。预计第三轮谈判将在两周后进行,期间双方可能还会继续交战。双方态度都十分…

山东10岁失联男孩确认溺水身亡 搜救努力未果

6月2日,滕州市公安局发布警情通报。5月31日22时35分许,孔某某报警称其外孙赵某某(10岁)于当日17时许离家后失联。接警后,公安机关迅速调阅监控、走访群众,并联合当地政府和社会救援力量,采用搜救警犬和无人机等手段持续开展搜寻。6月2日15时许,在邻村一河道内发现赵某某…

PID项目-记事本不显示下划线

在安装安装keil5的插件的时候想要更改路径,用记事本打开的时候下划线都不见了,使用缩放,把100%缩放成90%就又出现了

AIGC工具平台-GPT-SoVITS-v4-TTS音频推理克隆

声音克隆与语音合成的结合,是近年来生成式AI在多模态方向上的重要落地场景之一。随着预训练模型能力的增强,结合语音识别、音素映射与TTS合成的端到端系统成为初学者可以上手实践的全流程方案。 围绕 GPT-SoVITS-v4-TTS 模块,介绍了其在整合…

Cherry Studio 和 Dify 如何接入MCP 服务

这里以魔搭社区的MCP 广场为例,进行介绍 一、Cherry Studio 接入 MCP服务教程 1. 第一步:访问魔搭社区官网 魔搭社区官网 点击上方链接进入魔搭社区官网后,点击MCP广场。 2.第二步:选择要接入的MCP服务(这里以 ‘今天吃什么’ 为例) 点击图中标注的连接,然后点击下…

微服务 Feign相关

1.feign 调用超时控制逻辑 openfign 中配置默认的链接时间是 10S 读取时间是60S 可以在YML文件中修改配置 spring: cloud:nacos:server-addr: 127.0.0.1:8848config:namespace: 51d656b5-cfe8-4cd0-95ad-91811cd88dc6#openfeign 相关配置openfeign:client:config: # …

一键解决Github无法访问或时断时续的问题-Linux环境

创建脚本github_host.sh vi github_host.sh 按i插入文本,将下面一段内容复制进去 #!/bin/bashhosts_path/etc/hosts # 系统 hosts 保存路径 hosts_path_bak/etc/hosts.bak # 系统 hosts 备份路径# 备份 hosts echo "########## 备份 $hosts_path 到 $…

关于海洋数据上云的一些机遇与挑战

知识星球:数据书局。打算通过知识星球将这些年积累的知识、经验分享出来,让各位在数据治理、数据分析的路上少走弯路,另外星球也方便动态更新最近的资料,提供各位一起讨论数据的小圈子 1. 摘要 海洋观测技术的革新以及数据模型…