news 2026/4/16 18:10:44

从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/4/16 9:08:22

Linly-Talker生成视频的绿幕抠像精度评估与改进

Linly-Talker生成视频的绿幕抠像精度评估与改进 在数字人技术迅速渗透虚拟主播、在线教育和智能客服的今天,一个核心挑战始终存在:如何以极低门槛生成视觉质量足够专业的内容?用户可能只上传一张证件照或生活照,系统却要输出一段口…

作者头像 李华
网站建设 2026/4/16 9:06:17

三相离网逆变器在不对称负载下的正负序控制Matlab仿真

三相离网逆变器在不对称负载下的正负序控制matlab仿真: 1不对称控制包括: 正序分量处理负序分量处理正序控制环负序控制环; 2正序控制换路与负序控制换路都采用dq轴上的电容电压外环电感电流内环控制; 3直流电压Vdc700V,总功率15kW&#xff…

作者头像 李华
网站建设 2026/4/16 10:38:12

49、服务器虚拟化软件使用指南

服务器虚拟化软件使用指南 1. 密码设置与系统启动 在设置密码时,如果输入的不是强密码,会看到带有红色圆圈白叉的 “Unable to update the password” 消息,这意味着新密码不满足域的长度、复杂度或历史要求。此时应点击 “OK”,并输入一个长度超过 7 个字符,包含字母、…

作者头像 李华
网站建设 2026/4/16 9:03:37

50、服务器虚拟化软件使用指南与相关概念解析

服务器虚拟化软件使用指南与相关概念解析 1. VMware Server 使用操作 1.1 关闭 VMware Infrastructure Web Access 窗口 使用完毕 VMware Infrastructure Web Access 窗口后可将其关闭。若未在 VMware Remote Console 窗口中关闭虚拟机,且未在 VMware Infrastructure Web A…

作者头像 李华
网站建设 2026/4/16 9:04:51

绿电直连架构适配技术的发展趋势

在“双碳”目标与能源转型的双重驱动下,绿电直连已从补充性用能模式升级为高耗能行业低碳转型的核心路径。绿电直连架构适配技术作为破解“源荷错配”、保障系统高效运转的关键支撑,正随着风光发电规模化、负荷需求多元化、调控系统智能化的发展&#xf…

作者头像 李华
网站建设 2026/4/16 10:46:52

【python | pytorch | Pythonic】什么是 “Pythonic“ 代码风格?

文章目录【python | pytorch | Pythonic】疑问二:什么是 "Pythonic" 代码风格?1.字典 vs 对象 (Config)2.显式 vs 隐式 (Explicit is better than implicit)3. 3. 列表推导式与解包 (虽然本次改动涉及不多,但也是核心)zongjie【pyt…

作者头像 李华