HALCON + BOP:从深度图到6D Pose
「Halcon 项目」。/~b4fb3ZrHFz~:/链接https://pan.quark.cn/s/1ee336f5e76dHALCON BOP从深度图到6D Pose这份资料记录了从选择数据集、理解ROI和点云到用HALCON完成Surface Matching、稠密Pose精修、6D Pose显示、计时优化和100帧精度评估的全过程。建议第一次阅读时按章节顺序看以后查代码时可以直接跳到“关键代码位置”和“当前结论”。1. 当前环境与数据软件HALCON版本22.11 SteadyHALCON安装目录E:\Halcon2022\MVTec\HALCON-22.11-SteadyBOP数据目录E:\BOP-Dataset\lm当前学习资料本文件所在目录为什么改用BOP数据集最初考虑使用RealSense D435i和Replica room0D435i现场深度噪声较明显刚开始不利于判断算法错误还是传感器错误。Replica适合室内场景重建和相机轨迹实验但不方便直接学习“已知物体CAD模型的6D Pose”。BOP LM同时提供RGB、深度、相机内参、PLY模型、物体Mask和6D Pose真值更适合验证完整流程。当前对象和场景数据集BOP LM 物体obj_000008电钻 PLY模型E:\BOP-Dataset\lm\models\obj_000008.ply 测试场景E:\BOP-Dataset\lm\test\000008 单帧示例000404场景000008中已有200张RGB图200张深度图200张普通Mask200张可见Mask200帧相机参数和6D Pose真值电钻在全部200帧中出现文件编号不是连续的000000000199实际范围约为000004001185。数据集来源与最小组合BOP官网https://bop.felk.cvut.czHugging Face数据集主页https://huggingface.co/bop-benchmark/datasets为了完成当前电钻实验最少需要lm/models/obj_000008.ply lm/models/models_info.json lm/test/000008/rgb lm/test/000008/depth lm/test/000008/mask_visib lm/test/000008/scene_camera.json lm/test/000008/scene_gt.json lm/test/000008/scene_gt_info.json当前E:\BOP-Dataset\lm已经包含所需内容不需要再次下载。数据集已经给出电钻PLY模型因此这一阶段不需要自己使用CAD软件重新制作模型。BOP目录结构E:\BOP-Dataset\lm ├─ models │ ├─ obj_000008.ply 电钻三维模型 │ └─ models_info.json 模型尺寸信息 └─ test\000008 ├─ rgb RGB图 ├─ depth 深度图 ├─ mask 完整物体Mask ├─ mask_visib 当前画面可见部分Mask ├─ scene_camera.json 相机内参、深度比例 ├─ scene_gt.json 6D Pose真值 └─ scene_gt_info.json 可见比例、真值框等信息2. 最终流水线RGB与深度图 → 检测框或分割Mask得到ROI → 深度图反投影成X/Y/Z图 → xyz_to_object_model_3d生成场景点云 → 读取PLY模型 → create_surface_model生成参考Surface Model → find_surface_model进行全局粗匹配 → dense_pose_refinement进行稠密Pose精修 → 得到T_camera_object → 显示红绿蓝坐标轴 → 与BOP真值比较完整流程总图3. 十个处理阶段3.1 原始RGBRGB图方便人和二维检测器识别物体但RGB像素本身没有三维距离。3.2 深度图深度图的每个有效像素保存一个距离值Z。BOP原始深度以整数形式保存本例按depth_scale转换后再除以1000得到米。3.3 ROIROI是Region of Interest即感兴趣区域。它的作用是只保留目标附近的深度点减少桌面、玩具和背景对配准的干扰。当前单帧程序默认使用矩形框模拟二维检测器输出调试时也可以使用BOP可见Mask。3.4 深度图转换为XYZ图用相机内参将像素坐标和深度反投影到相机三维坐标系X (u - Cx) × Z / Fx Y (v - Cy) × Z / Fy Z 深度其中Fx/Fy是焦距Cx/Cy是主点u/v是图像列和行。3.5 ObjectModel3D场景点云同一个像素位置的X、Y、Z组成一个三维点所有有效点组合后就是场景点云。HALCON关键代码xyz_to_object_model_3d (ImageX, ImageY, ImageZ, SceneModel3D)3.6 PLY/CAD模型PLY是物体的标准三维几何模型。它不一定必须由自己使用CAD软件制作也可以来自数据集、三维扫描、厂家或公开模型。在配准中PLY模型是需要被移动和旋转的“参考模型”现场深度形成的点云是“场景模型”。3.7 Surface Modelcreate_surface_model会对PLY表面采样建立点对几何特征、表面法向和搜索结构。create_surface_model ( CADModel3D, 0.01, [model_invert_normals], [true], SurfaceModelID )训练Surface Model较慢但同一个物体只需离线创建一次。现在程序会将其缓存后续用read_surface_model直接读取。3.8 全局粗匹配HALCON Surface-Based Matching先对场景降采样并选择关键点再比较场景点对和CAD点对的距离及相对方向生成候选Pose。随后默认进行稀疏Point-to-Plane姿态优化。因此这里的“粗配”更准确地说是点对特征全局搜索 稀疏点到平面Pose优化3.9 稠密Pose精修设置dense_pose_refinementtrue后HALCON使用更多场景点让场景点到最近CAD切平面的距离尽量小。这可以理解为HALCON封装的稠密Point-to-Plane ICP风格优化。find_surface_model ( SurfaceModelID, SceneModel3D, RelSamplingDistance, KeyPointFraction, 0.05, false, [num_matches,scene_invert_normals,dense_pose_refinement], [1,true,true], PoseEstimated, Score, SurfaceMatchingResultID )3.10 6D Pose6D Pose包含三个平移量X、Y、Z三个旋转量Rx、Ry、Rz最终矩阵HomMat3DEstimated T_camera_object它表示“物体模型坐标系中的点如何变换到相机坐标系”。pose_to_hom_mat3d (PoseBest, HomMat3DEstimated)红轴是X绿轴是Y蓝轴是Z轴原点表示物体位置轴方向表示物体旋转。HALCON当前直接输出图中红色轮廓BOP真值Pose绿色轮廓HALCON预测Pose红/绿/蓝箭头预测物体坐标系X/Y/ZT(mm)物体原点相对于相机的位置R(deg)HALCON Pose中的三个旋转角4. 单帧结果示例帧000404使用矩形ROI时场景点数43,745 粗配平移误差8.10 mm 粗配旋转误差4.72° 精修平移误差约1.72 mm 精修旋转误差约0.71°这个结果说明全局粗配成功找到了正确物体附近。稠密精修显著降低了位置和角度误差。深度单位、相机内参、CAD比例和法向方向基本正确。单帧结果很好但不能代表全部观察角度。5. 为什么最初运行很慢初始程序内部计时阶段时间深度、ROI、XYZ点云约0.015秒每帧重新创建Surface Model约8.99秒额外粗配测试约8.78秒第二次完整匹配和精修约8.00秒总时间约29.70秒主要问题有两个Surface Model原本每帧重新训练。为比较粗配和精配程序把全局搜索完整执行了两次。优化后Surface Model离线生成并缓存。生产模式只执行一次带稠密精修的匹配。可使用ShowVisualization : 0关闭轮廓、坐标轴和PNG输出。显示和保存结果图本身约需34秒因此“算法时间”和“带显示的演示时间”要分开看。6. 100帧批量评估为了避免被单帧结果误导从200帧中均匀选择了100帧并使用BOP可见真值Mask先测试Surface Matching本身。快速参数RelSamplingDistance 0.015 KeyPointFraction 0.5结果返回Pose44/100正确且低于5 mm、5°14/100低于2 mm、1°1/100平均匹配时间约0.285秒保守参数RelSamplingDistance 0.010 KeyPointFraction 1.0结果返回Pose63/100正确且低于5 mm、5°21/100低于2 mm、1°1/100平均匹配时间约1.342秒返回结果中的平移误差中位数约5.83 mm返回结果中的旋转误差中位数约1.63°旋转误差P95接近178°存在严重错误翻转100帧测试带来的关键认识000404上的约1.72 mm / 0.71°是一个效果很好的样例但当前配置不能稳定覆盖不同观察角度。当前真正的瓶颈是“粗配候选错误”而不是最后的稠密精修错误的全局候选Pose → 稠密精修进入错误局部极值 → 产生几十毫米或接近180°的错误精修只能改善已经接近正确解的初始Pose不能稳定挽救完全错误的粗配。7. 当前主程序开关主程序code/bop_lm_obj8_6d_pose.hdevROI模式UseGroundTruthMask : 00矩形ROI模拟检测器目标框1BOP可见真值Mask仅用于调试和算法上限测试精度模式AccuracyMode : 11保守参数0.010 / 1.0召回和精度优先0快速参数0.015 / 0.5仅适合实验可视化ShowVisualization : 11显示红绿轮廓、6D坐标轴和Pose数值0关闭图形输出用于生产计时或批处理是否额外运行粗配基准RunCoarseBenchmark : 00生产模式只匹配一次1额外运行一次不带Dense Refinement的匹配用来比较粗配和精修误差8. 文件说明HALCON和Python代码code/bop_lm_obj8_6d_pose.hdev单帧完整流程、计时和6D Pose显示code/benchmark_bop_lm_obj8_halcon.hdev单帧参数扫描code/bop_lm_obj8_batch100_eval.hdev100帧HALCON批量评估code/prepare_bop_lm_obj8_batch100.py准备100帧ID、真值矩阵和可见比例code/analyze_bop_lm_obj8_batch100.py汇总100帧结果code/bop_lm_obj8_visualize.py生成十张流程图code/make_bop_pipeline_montage.py拼接流程总图结果results/bop_lm_obj8_batch100_results.csv两组参数的逐帧结果results/bop_lm_obj8_batch100_summary.json100帧汇总指标results/bop_lm_obj8_batch100_worst20.csv最差20帧results/bop_lm_obj8_parameter_benchmark.tup单帧参数扫描原始结果results/bop_lm_obj8_timing_result.tup分阶段计时Surface Model缓存约65 MB为避免在资料包中复制两份仍保存在上一级目录../obj_000008_surface_model.sfm9. 如何在HDevelop中运行打开code/bop_lm_obj8_6d_pose.hdev。确认E:\BOP-Dataset\lm存在。确认上一级outputs目录中存在obj_000008_surface_model.sfm。初次学习保持ShowVisualization : 1 AccuracyMode : 1 RunCoarseBenchmark : 0运行后观察图形窗口中的红绿轮廓、XYZ坐标轴和Pose数值。查看输出的HomMat3DEstimated它就是T_camera_object。批量测试时打开code/bop_lm_obj8_batch100_eval.hdev该程序默认关闭逐帧图形显示只输出数值结果。10. 下一步优化方向后续继续使用HALCON建议按这个顺序进行将num_matches由1改为510保留多个粗配候选。根据深度残差、轮廓重合和可见面积重新选择候选Pose。对低Score或残差异常的Pose执行拒绝不发送给机器人。加入相机视角和允许旋转范围约束排除不可能的180°翻转。尝试支持3D边缘的Surface Model。将最差20帧逐一生成轮廓和坐标轴图寻找共同失败模式。连续视频使用上一帧Pose调用refine_surface_model_pose进行跟踪丢失时才重新全局搜索。接入D435i后重新标定内参过滤飞点和深度边缘噪声并单独统计真实相机精度。机械臂场景还需要加入手眼标定误差最终系统误差不等于单独的Pose误差。11. 当前阶段结论已经完成BOP LM最小数据准备深度图到XYZ和ObjectModel3DPLY到Surface ModelHALCON全局Surface Matching稀疏和稠密Point-to-Plane Pose优化T_camera_object输出BOP真值误差计算红绿轮廓与6D坐标轴显示Surface Model缓存和分阶段计时100帧速度、召回和精度验证尚未完成生产要求跨视角粗配稳定性不足错误Pose拒绝机制不足多候选重排序尚未实现D435i真实数据尚未重新评估手眼标定和机器人坐标变换尚未接入当前最重要的工程任务不是继续盲目调整Dense Refinement而是提高全局候选的召回、筛选正确候选并可靠拒绝错误Pose。

相关新闻

9款AI论文写作工具提升MBA学术效率

9款AI论文写作工具提升MBA学术效率

1. 为什么需要AI论文工具? 作为一名MBA在读学员,我深刻理解论文写作的痛苦。去年写毕业论文时,光是文献检索就耗费了整整两周时间,更别提数据分析和格式调整这些繁琐工作了。直到发现了这些AI论文工具,效率直接提升了3…

2026/7/30 11:37:38 阅读更多 →
从带宽到GBW:模拟电路频率响应与稳定性设计核心解析

从带宽到GBW:模拟电路频率响应与稳定性设计核心解析

1. 项目概述:从“带宽”到“GBW”的电路设计核心脉络在模拟电路设计,尤其是运算放大器、滤波器、乃至整个信号链的调试中,我们总会遇到几个高频出现的术语:带宽、主极点、高频极点、GBW。新手看到这些词,往往觉得它们各…

2026/7/30 11:37:38 阅读更多 →
AutoWareAuto框架解析:自动驾驶技术的模块化实现

AutoWareAuto框架解析:自动驾驶技术的模块化实现

1. 自动驾驶技术全景与AutoWareAuto框架概览自动驾驶技术正在重塑未来交通的底层逻辑。作为开源自动驾驶框架的标杆,AutoWareAuto通过模块化设计将复杂的自动驾驶系统拆解为可管理的功能单元。这套框架最显著的特点是采用"感知-定位-决策-规划-控制"的经典…

2026/7/30 11:37:37 阅读更多 →

最新新闻

2026年求推荐靠谱的房产中介ERP系统

2026年求推荐靠谱的房产中介ERP系统

一、2026 房产中介选型背景:为什么多数中介需要配置房产中介 ERP 系统步入 2026 年,国内房产经纪行业早已告别纯手工登记房源、手写记录客户的运营模式,门店规模化、跨区域协作、新媒体线上获客成为行业常态,房产中介 ERP 系统成为…

2026/7/30 11:45:41 阅读更多 →
小龙虾搭建OpenClaw环境,2026稳定版部署全流程

小龙虾搭建OpenClaw环境,2026稳定版部署全流程

一、为什么选择2026稳定版? 大家好,我是小龙虾。最近和几个搞嵌入式的小伙伴聊天,发现大家在一个叫OpenClaw的开源项目上卡了好几天。这个项目挺有意思的,说白了就是一个轻量级的跨平台工具链,专门用来做边缘计算场景…

2026/7/30 11:45:41 阅读更多 →
C++代码规范与最佳实践:从可读性到工程化的完整指南

C++代码规范与最佳实践:从可读性到工程化的完整指南

1. 项目概述:为什么代码规范不是“形式主义”在C社区里混迹了十几年,我见过太多“跑起来就行”的代码。新手们往往沉迷于算法逻辑的巧妙和功能的实现,觉得花时间整理缩进、统一命名是浪费时间。直到他们第一次接手一个三万行、没有注释、变量…

2026/7/30 11:45:41 阅读更多 →
XUnity自动翻译器终极指南:3步让Unity游戏说中文,新手也能轻松上手

XUnity自动翻译器终极指南:3步让Unity游戏说中文,新手也能轻松上手

XUnity自动翻译器终极指南:3步让Unity游戏说中文,新手也能轻松上手 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为看不懂外语游戏而错失精彩剧情?是否因…

2026/7/30 11:45:41 阅读更多 →
OpenClaw AI开发框架:从部署到优化的全流程指南

OpenClaw AI开发框架:从部署到优化的全流程指南

1. OpenClaw系统与AI落地闭环的核心价值OpenClaw作为新一代AI智能体开发框架,其核心价值在于解决了传统AI模型从开发到实际业务落地的"最后一公里"问题。这个系统通过模块化设计将大语言模型、工具调用、记忆存储等能力封装为可插拔组件,让开发…

2026/7/30 11:45:40 阅读更多 →
魔兽争霸III终极兼容性工具:5个技巧让经典游戏在现代电脑上完美运行

魔兽争霸III终极兼容性工具:5个技巧让经典游戏在现代电脑上完美运行

魔兽争霸III终极兼容性工具:5个技巧让经典游戏在现代电脑上完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为《魔兽争…

2026/7/30 11:44:40 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻