news 2025/12/24 4:58:51

从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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/21 2:13:43

Linly-Talker如何应对快速连续提问的响应延迟?

Linly-Talker如何应对快速连续提问的响应延迟? 在数字人从“能说话”走向“会对话”的演进过程中,一个看似简单却极具挑战的问题浮出水面:当用户像和真人聊天一样连续发问时,系统能不能跟得上节奏? 想象这样一个场景…

作者头像 李华
网站建设 2025/12/21 2:08:11

30、深入解析Windows Server 2008文件服务配置

深入解析Windows Server 2008文件服务配置 1. 修改NTFS权限 在Windows Server 2008中,我们可以使用CACLS命令来修改NTFS权限。以下是具体操作步骤: 1. 登录到MSN - SC - 0XX。 2. 在命令提示符下,输入 net use 并按Enter键。这将显示MSN - SC - 0XX上所有映射的驱动器…

作者头像 李华
网站建设 2025/12/21 2:03:57

一种面向服务LLM应用系统的显式世界模型架构原理

1. 背景在企业级 LLM 应用中,“对话”天然擅长表达意图与生成文本,但不擅长长期一致性维护:对象指代会漂移、状态会被遗忘、约束会被稀释、事实与假设会混杂。对强约束、强状态、需审计的业务流程(如客服工单、运营处置、交付协作…

作者头像 李华