halcon三维点云数据处理(十)locate_cylinder_3d
目录
- 一、locate_cylinder_3d例程代码
- 二、gen_binocular_rectification_map函数
- 三、binocular_disparity函数
- 四、自定义函数select_best_candidates
- 五、自定义函数remove_shadowed_regions
一、locate_cylinder_3d例程代码
1、读取或者创建3D形状模型,
2、根据双目相机参数和图像获得校正后图像对的视差图。
3、
gen_cam_par_area_scan_division (0.00855613, -2579.17, 5.99979e-006, 6e-006, 399.681, 232.327, 752, 480, CamParamMatching)
gen_cam_par_area_scan_division (0.0121469, -2514.3, 9.30281e-006, 9.3e-006, 272.773, 273.689, 640, 512, CamParam1)
gen_cam_par_area_scan_division (0.0121592, -2687.76, 9.30085e-006, 9.3e-006, 302.665, 263.738, 640, 512, CamParam2)
create_pose (0.202198, 0.00177953, 0.0376427, 0.325733, 342.295, 359.167, 'Rp+T', 'gba', 'point', RelPose)
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, RelPose, 1, 'viewing_direction', 'bilinear', CamParamRect1, CamParamRect2, CamPoseRect1, CamPoseRect2, RelPoseRect)
*
file_exists ('cylinder.sm3', FileExists)
if (FileExists)* Load the model from fileread_shape_model_3d ('cylinder.sm3', ShapeModel3DID)
else* Recreate the model from the DXF fileread_object_model_3d ('cylinder.dxf', 'mm', [], [], ObjectModel3DID, DxfStatus)prepare_object_model_3d (ObjectModel3DID, 'shape_based_matching_3d', 'true', [], [])create_shape_model_3d (ObjectModel3DID, CamParamMatching, rad(90), 0, 0, 'gba', 0, 0, 0, rad(45), 0, rad(360), 0.3, 0.45, 10, 'num_levels', 5, ShapeModel3DID)write_shape_model_3d (ShapeModel3DID, 'cylinder.sm3')
endif
*
for Index := 1 to 15 by 1* * emphasize() enhances the texture on the cylinders surfaceread_image (Image1, Path + 'stereo_left_' + Index$'02')emphasize (Image1, ImageEmphasize1, 5, 5, 2)map_image (ImageEmphasize1, Map1, ImageMapped1)read_image (Image2, Path + 'stereo_right_' + Index$'02')emphasize (Image2, ImageEmphasize2, 5, 5, 2)map_image (ImageEmphasize2, Map2, ImageMapped2)* * the mask width and height must be (approximately) set according to the size* of the pattern projected onto the setupbinocular_disparity (ImageMapped2, ImageMapped1, Disparity, Score, 'ncc', 7, 7, 0, -20, 140, 1, 0.7, 'left_right_check', 'none')select_best_candidates (Disparity, TopMost)remove_shadowed_regions (Disparity, 0.01)* * display height map and highest object extractedclear_window (WindowHandleL)dev_set_window (WindowHandle)dev_clear_window ()dev_display (ImageMapped2)dev_display (Disparity)wait_seconds (0.5)dev_display (TopMost)dev_display (Disparity)wait_seconds (0.5)* * determine exact 3D pose of highest objectdev_set_window (WindowHandleL)read_image (Image, Path + 'closeup_' + Index$'02')dev_display (Image)find_shape_model_3d (Image, ShapeModel3DID, 0.8, 0.7, [0, 2], [], [], Pose, CovPose, Score_CTRL)if (|Score_CTRL| != 0)dev_set_color ('green')display_match_pose (ShapeModel3DID, Pose, WindowHandleL)elsedisp_message (WindowHandleL, ' No match found ', 'window', 12, 12, 'black', 'true')endif* if (Index != 15)disp_continue_message (WindowHandleL, 'black', 'true')endifstop ()
endfor
disp_message (WindowHandleL, 'Program finished \nPress \'Run\' to clear the shape model', 'window', 1, 1, 'black', 'true')
stop ()
dev_close_window ()
二、gen_binocular_rectification_map函数
生成变换映射,描述双目相机对图像到公共校正图像平面的映射。
gen_binocular_rectification_map( : Map1, Map2 : CamParam1, CamParam2, RelPose, SubSampling, Method, MapType : CamParamRect1, CamParamRect2, CamPoseRect1, CamPoseRect2, RelPoseRect)
三、binocular_disparity函数
使用相关技术计算校正图像对的视差
binocular_disparity(ImageRect1, ImageRect2 : Disparity, Score : Method, MaskWidth, MaskHeight, TextureThresh, MinDisparity, MaxDisparity, NumLevels, ScoreThresh, Filter, SubDisparity : )
四、自定义函数select_best_candidates
下面这段代码的功能是选取最上层的一个圆柱,感觉非常经典,逐句理解一下:
full_domain 将图像的域(ROI)扩大到最大。
scale_image_max 灰度值范围(minimum,maximum ),扩展到范围是(0 ,255)。
regiongrowing_n 对多通道图像使用区域生长来分割图像
intensity 计算灰度值的均值和偏差。
select_gray 根据灰度值特征选择区域。
select_shape借助形状特征选择区域。
min_max_gray确定区域内的最小和最大灰度值。
tuple_sort_index 对Tuple中的所有元素按升序排序
select_obj 选取图像
*
full_domain (Disparity, DisparityFull)
scale_image_max (DisparityFull, ImageScaleMax2)
gray_dilation_shape (ImageScaleMax2, ImageMax, 3, 3, 'octagon')
*
*
regiongrowing_n (ImageMax, cylinders, '2-norm', 0, 5, 200)
intensity (cylinders, ImageScaleMax2, Mean1, Deviation1)
tuple_max (Mean1, MaxVal)
select_gray (cylinders, ImageScaleMax2, SelectedRegions, 'mean', 'and', MaxVal / 2, MaxVal + 1)
select_shape (SelectedRegions, SelectedRegions, ['area', 'rectangularity'], 'and', [7000, 0.65], [25000, 1.0])
intensity (SelectedRegions, ImageScaleMax2, Mean, Deviation)
*
min_max_gray (SelectedRegions, ImageScaleMax2, 0, Min, Max, Range)
tuple_sort_index (Max, Indices)
select_obj (SelectedRegions, TopMost, Indices[|Max| - 1] + 1)
*
return ()
五、自定义函数remove_shadowed_regions
对于每个3D相机,遮挡和阴影都会产生非常高视差的小区域,这将被理解为靠近相机的物体,为了提高结果的质量,我们删除了这些区域,把高视差区域灰度设为0。
scale_image_max (Disparity, ImageScaleMax)
gray_histo (ImageScaleMax, ImageScaleMax, AbsoluteHisto, RelativeHisto)
Percent := RelativeHisto[255]
i := 254
while (Percent < Threshold)Percent := RelativeHisto[i] + Percenti := i - 1
endwhile
threshold (ImageScaleMax, Region, i, 255)
overpaint_region (Disparity, Region, 0.0, 'fill')
return ()
相关文章:
halcon三维点云数据处理(十)locate_cylinder_3d
目录 一、locate_cylinder_3d例程代码二、gen_binocular_rectification_map函数三、binocular_disparity函数四、自定义函数select_best_candidates五、自定义函数remove_shadowed_regions 一、locate_cylinder_3d例程代码 1、读取或者创建3D形状模型, 2、根据双目…...
vue(2,3), react (16及以上)开发者工具资源
在前端开发的广阔领域中,Vue.js 和 React.js 作为两大主流框架,各自拥有庞大的用户群体和丰富的生态系统。为了帮助开发者更高效地进行调试和开发,Vue Devtools 和 React 开发者工具应运而生,成为这两个框架不可或缺的辅助工具。本…...

2025年华为OD上机考试真题(Java)——整数对最小和
题目: 给定两个整数数组array1、array2,数组元素按升序排列。假设从array1、array2中分别取出一个元素可构成一对元素,现在需要取出k对元素,并对取出的所有元素求和,计算和的最小值。 注意:两对元素如果对应…...

进程间通信——网络通信——UDP
进程间通信(分类):网络通信、无名管道、有名管道、信号、消息队列、共享内存、信号量集 OSI七层模型:(理论模型) 应用层 : 要传输的数据信息,如文件传输,电子邮件等 表示层 : 数…...

【我的 PWN 学习手札】IO_FILE 之 FSOP
FSOP:File Stream Oriented Programming 通过劫持 _IO_list_all 指向伪造的 _IO_FILE_plus,进而调用fake IO_FILE 结构体对象中被伪造的vtable指向的恶意函数。 目录 前言 一、glibc-exit函数浅析 二、FSOP 三、Largebin attack FSOP (…...

新兴的开源 AI Agent 智能体全景技术栈
新兴的开源 AI Agent 智能体全景技术栈 LLMs:开源大模型嵌入模型:开源嵌入模型模型的访问和部署:Ollama数据存储和检索:PostgreSQL, pgvector 和 pgai后端:FastAPI前端:NextJS缺失的一环:评估和…...

统计学习方法(第二版) 概率分布学习
本文主要介绍机器学习的概率分布,帮助后续的理解。 定义直接从书上搬的想自己写,但没有定义准确,还浪费事件,作为个人笔记,遇到速查。 目录 一、二点分布(0-1分布、伯努利分布) 二、二项分布…...

淺談Cocos2djs逆向
前言 簡單聊一下cocos2djs手遊的逆向,有任何相關想法歡迎和我討論^^ 一些概念 列出一些個人認為比較有用的概念: Cocos遊戲的兩大開發工具分別是CocosCreator和CocosStudio,區別是前者是cocos2djs專用的開發工具,後者則是coco…...

【ROS2】RViz2加载URDF模型文件
1、RViz2加载URDF模型文件 1)运行RViz2 rviz22)添加组件:RobotModel 3)选择通过文件添加 4)选择URDF文件,此时会报错,需要修改Fixed Frame为map即可 5)因为没有坐标转换,依然会报错,下面尝试解决 2、运行坐标转换节点 1)运行ROS节点:robot_state_publishe...

Unity导入特效,混合模式无效问题
检查spine导出设置与Unity导入设置是否一致 检查Blend Mode Materials是否勾选 检查是否使用导入时产生的对应混合模式的材质,混合模式不适用默认材质 这里选导入时生成的材质...

el-table自定义按钮控制扩展expand
需求:自定义按钮实现表格扩展内容的展开和收起,实现如下: 将type“expand”的表格列的宽度设置为width"1",让该操作列不展示出来,然后通过ref动态调用组件的内部方法toggleRowExpansion(row, row.expanded)控…...
opencv CV_TM_SQDIFF未定义标识符
opencv CV_TM_SQDIFF未定义标识符 opencv4部分命名发生变换,将CV_WINDOW_AUTOSIZE改为WINDOW_AUTOSIZE;CV_TM_SQDIFF_NORMED改为TM_SQDIFF_NORMED。...
2024acl论文体悟
总结分析归纳 模型架构与训练方法:一些论文关注于改进大语言模型的架构和训练方法,以提高其性能和效率。例如,“Quantized Side Tuning: Fast and Memory-Efficient Tuning of Quantized Large Language Models”提出了一种量化侧调优方法&a…...

【Git原理与使用】版本回退reset 详细介绍、撤销修改、删除文件
目录 一、版本回退 reset 1.1 指令: 1.2 参数说明: 1.3 演示: 二、撤销修改 情况一:对于工作区的代码,还没有 add 情况二:已经 add ,但没有 commit 情况三:已经 add &…...
反规范化带来的数据不一致问题的解决方案
在数据库设计中,规范化(Normalization)和反规范化(Denormalization)是两个相互对立但又不可或缺的概念。规范化旨在消除数据冗余,确保数据的一致性和准确性,但可能会降低查询效率。相反…...
【Android】直接使用binder的transact来代替aidl接口
aidl提供了binder调用的封装,有的时候,比如: 1. 懒得使用aidl生成的接口文件(确实是懒,Android studio中aidl生成接口文件很方便) 2. 服务端的提供者只公开了部分接口出来,只给了调用编号和参…...

Python机器学习笔记(十八、交互特征与多项式特征)
添加原始数据的交互特征(interaction feature)和多项式特征(polynomial feature)可以丰富特征表示,特别是对于线性模型。这种特征工程可以用统计建模和许多实际的机器学习应用中。 上一次学习:线性模型对w…...

《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)
章节文章名备注第1节Spring Boot(1)基于Eclipse搭建Spring Boot开发环境环境搭建第2节Spring Boot(2)解决Maven下载依赖缓慢的问题给火车头提提速第3节Spring Boot(3)教你手工搭建Spring Boot项目纯手工玩法…...
【AI进化论】 如何让AI帮我们写一个项目系列:将Mysql生成md文档
一、python脚本 下面给出一个简易 Python 脚本示例,演示如何自动获取所有表的结构,并生成一份 Markdown 文件。你可根据自己的需求做修改或使用其他编程语言。 import mysql.connector# ------------------------ # 1. 连接数据库 # -----------------…...

(已开源-AAAI25) RCTrans:雷达相机融合3D目标检测模型
在雷达相机融合三维目标检测中,雷达点云稀疏、噪声较大,在相机雷达融合过程中提出了很多挑战。为了解决这个问题,我们引入了一种新的基于query的检测方法 Radar-Camera Transformer (RCTrans)。具体来说: 首先设计了一个雷达稠密…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...