news 2026/8/3 12:06:26

从Halcon官方例子出发:双目相机标定与三维点云生成

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从Halcon官方例子出发:双目相机标定与三维点云生成

halcon双目相机标定+三维点云生成程序 官方例子改的

在机器视觉和三维重建领域,双目相机标定以及基于标定结果生成三维点云是至关重要的任务。今天就和大家分享下我基于Halcon官方例子修改,实现双目相机标定与三维点云生成程序的过程。

Halcon双目相机标定

官方例子基础

Halcon官方例子为我们提供了一个非常好的起点。在标定双目相机时,核心思路是通过棋盘格等标定板,获取不同角度下相机拍摄的图像特征点。

代码实现与分析

* 读取双目相机左右图像 read_image(LImage, 'left_camera_images/*.tif') read_image(RImage, 'right_camera_images/*.tif') * 提取棋盘格角点 find_caltab(LImage, CalTabDescrName, CalTabPose, 'all', 'caltab_found', LMarks, LNum) find_caltab(RImage, CalTabDescrName, CalTabPose, 'all', 'caltab_found', RMarks, RNum) * 相机标定 calibrate_cameras([LMarks, RMarks], [LNum, RNum], CalibrationDataID)

在这段代码中,首先通过readimage函数读取左右相机的图像数据。这里假设图像是以.tif格式存储在对应的文件夹中。接着,findcaltab函数用于在图像中寻找棋盘格角点,CalTabDescrName是棋盘格描述文件,通过这个函数可以得到角点的位置信息LMarksRMarks。最后,calibrate_cameras函数利用找到的角点信息进行相机标定,CalibrationDataID是标定数据的标识,后续会用于生成三维点云。

三维点云生成

基于标定结果的点云生成原理

在完成双目相机标定后,我们就有了足够的参数来计算空间中三维点的坐标。通过三角测量原理,利用左右相机图像中对应点的视差,结合标定得到的相机参数,就能计算出三维点的坐标。

代码实现与分析

* 获取标定参数 get_calib_data(CameraParamName, CalibrationDataID, 'camera', CameraParam) * 从图像中提取特征点对 match_template(LImage, Template, 'ncc', 0.7, RowL, ColumnL) match_template(RImage, Template, 'ncc', 0.7, RowR, ColumnR) * 计算三维点云 project_3d_point([RowL, RowR], [ColumnL, ColumnR], CameraParam, 'bilinear', X, Y, Z) create_3d_object(X, Y, Z, 'point', 3DObject)

这里,getcalibdata函数从标定数据CalibrationDataID中获取相机参数CameraParammatchtemplate函数用于在左右图像中匹配相同的模板,找到对应的特征点对,这里以归一化互相关(ncc)作为匹配算法,阈值设为0.7。最后,project3dpoint函数利用相机参数和左右图像中的对应点坐标,计算出三维空间中的点坐标XYZ,并通过create3d_object函数创建三维点云对象3DObject

通过这样基于Halcon官方例子的修改,我们成功实现了双目相机标定与三维点云生成的程序,为后续的机器视觉和三维重建应用打下基础。希望这段分享能给大家在相关领域的研究和开发带来一些启发。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/3 10:38:44

用西门子TIA Portal玩转电梯仿真:五层楼全自动控制实战

电梯程序,西门子博图仿真程序 单部五层电梯 四层 博图16 全自动仿真程序(包含程序和画面),西门子1200,PCstation仿真! 博图16 不需要plc实物,不需要EET,全部是仿真完成! 最近在折腾西门子博图V…

作者头像 李华
网站建设 2026/8/2 16:20:47

20、PowerShell脚本开发最佳实践与技巧

PowerShell脚本开发最佳实践与技巧 1. 脚本注释规范 在PowerShell脚本中,注释是非常重要的,它能帮助其他开发者理解代码的功能和意图。以下是详细的注释规范: - 注释块语法 :使用 <# 和 #> 来定义注释块,同时要包含以下几个部分: - .SYNOPSIS :脚本的…

作者头像 李华
网站建设 2026/8/2 10:23:20

功能测试用例深度解析:从设计到优化的全流程实践

在软件测试领域&#xff0c;功能测试用例是质量保障的基石。据统计&#xff0c;有效的测试用例设计能够发现约80%的软件缺陷&#xff0c;而测试用例质量直接决定了测试活动的效率与覆盖度。在敏捷开发与DevOps普及的今天&#xff0c;测试从业者不仅需要掌握用例设计技术&#x…

作者头像 李华
网站建设 2026/8/2 3:47:33

Linly-Talker生成视频的自动章节分割功能实现

Linly-Talker生成视频的自动章节分割功能实现 在知识内容爆炸式增长的今天&#xff0c;用户对信息获取效率的要求越来越高。一段长达十分钟的讲解视频&#xff0c;如果缺乏清晰的结构引导&#xff0c;观众很可能在中途失去耐心。而传统的人工剪辑打点方式不仅耗时费力&#xff…

作者头像 李华