Halcon 多相机统一坐标系(标定)

news/2024/10/26 7:48:29/

       多相机统一坐标系是指将多个不同位置的相机的图像采集到同一个坐标系下进行处理和分析的方法。 在计算机视觉和机器视觉领域中,多相机统一坐标系被广泛应用于三维重建、立体视觉、目标跟踪等任务中。

以gen_binocular_rectification_map(生成描述图像映射的转换图的双目相机对进行校正)为例,

gen_binocular_rectification_map(Map1,Map2:CamParam1, CamParam2,RalPose,SubSanpling,Method,MapType:,CamParamRect1,CamParamRect2,CamPoseRect1,CamPoseRect2,RelPoseRect )

最重要得三个参数输入为:CamParam1, CamParam2,RalPose

那么针对如何获取这三个参数做相机标定为案例

Step1 - 读取图片获取图片大小以及标定类型

ImgPath := 'stereo/board/'
CalDescrFile := 'caltab_30mm.descr'
read_image (ImageL, ImgPath + 'calib_l_01')
read_image (ImageR, ImgPath + 'calib_r_01')
get_image_size (ImageL, WidthL, HeightL)
get_image_size (ImageR, WidthR, HeightR)

Step2 - 内部和外部摄像机参数

gen_cam_par_area_scan_division (0.0125, 0, 1.48e-5, 1.48e-5, WidthL / 2.0, HeightL / 2.0, WidthL, HeightL, StartCamPar)

Step3 - 创建 HALCON 校准数据模型。

create_calib_data ( :CalibSetup,NumCameras,NumCalibObjets,CalibDataID)
CalibSetup 校准类型(输入)
NumCameras (摄像机数量)校准设置中的相机数量(输入)
NumCalibObjets 校准对象(输入)
CalibDataID 创建的校准数据模型的句柄。(输出)
 

create_calib_data ('calibration_object', 2, 1, CalibDataID)

Step4 - 在校准数据中设置相机的类型和初始参数

set_calib_data_cam_param( :CalibDataID,CameraIdx ,CameraType ,CameraParam )

CalibDataID 校准数据模型的句柄。(输入)
CameraIdx 相机索引 (输入)
CameraType 相机的类型(输入)
CameraParam  初始相机内部参数(输入)

set_calib_data_cam_param (CalibDataID, 'all', [], StartCamPar)

Step5 - 在校准模型中定义校准对象。

set_calib_data_calib_object( :CalibDataID,CalibObjIds ,CalibObjDescr )
CalibDataID 校准数据模型的句柄(输入)
CalibObjIds 校准对象索引。(输入)
CalibObjDescr 3D 点坐标或描述文件名(输入)

Step6 - 读取所有使用的校准图像


read_image (ImagesL, ImgPath + 'calib_l_' + [1:15]$'02d')
read_image (ImagesR, ImgPath + 'calib_r_' + [1:15]$'02d')
count_obj (ImagesL, Number)
for I := 1 to Number by 1select_obj (ImagesL, ImageL, I)select_obj (ImagesR, ImageR, I)* 查找校准板find_calib_object (ImageL, CalibDataID, 0, 0, I, [], [])find_calib_object (ImageR, CalibDataID, 1, 0, I, [], [])*可视化提取的校准标记和由估计姿势定义的坐标系。get_calib_data_observ_points (CalibDataID, 0, 0, I, Row, Column, Index, StartPoseL)get_calib_data_observ_points (CalibDataID, 1, 0, I, Row, Column, Index, StartPoseR)dev_set_window (WindowHandle1)dev_display (ImageL)disp_caltab (WindowHandle1, CalDescrFile, StartCamPar, StartPoseL, 1)dev_set_window (WindowHandle2)dev_display (ImageR)disp_caltab (WindowHandle2, CalDescrFile, StartCamPar, StartPoseR, 1)
endfor

Step7 -  执行实际校准

calibrate_cameras (CalibDataID, Error)
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParamL)
get_calib_data (CalibDataID, 'camera', 1, 'params', CamParamR)
get_calib_data (CalibDataID, 'camera', 1, 'pose', cLPcR)

至此,gen_binocular_rectification_map中的CamParam1, CamParam2,RalPose 获取完成。其一次对应CamParamL, CamParamR, cLPcR


http://www.ppmy.cn/news/1542048.html

相关文章

React六官方文档总结三脱围机制

代码下载 React官网已经都是函数式组件文档,没有类组件文档,但是还是支持类组件这种写法。 脱围机制 ref 引用值 当希望组件“记住”某些信息,但又不想让这些信息 触发新的渲染 时,可以使用 ref 。 给组件添加 ref 1、通过从…

从0开始深度学习(14)——模型选择、欠拟合、过拟合

① 模型在训练数据上拟合的比在潜在分布中更接近的现象,就叫过拟合(overfitting) ② 用于对抗过拟合的技术称为正则化(regularization) 1 训练误差和泛化误差 ①训练误差(training error)&…

【linux】ELKB安装token过期

问题 elastic启动时候生成的token 有效期只有30分钟。 30分钟后提示: Couldnt configure Elastic Generate a new enrollment token or configure manually. 解决 进入安装目录 cd /usr/local/elasticsearch/elasticsearch-8.8.1/binll 重新生成 ./elasticsear…

python主流框架Django:ORM框架关联查询与管理器

目录 注意 使用前要调用之前的模型类 F对象 Q对象 聚合函数 排序 关联查询(连表查询) 修改 删除 查询集 QuerySet 注意 使用前要调用之前的模型类 F对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用 "F对象&quo…

高并发场景下解决并发数据不一致

简单的场景: 全量数据更新的情况下, 不在乎同一秒的请求都必须要成功, 只留下最新的更新请求数据 方案常用的是 1、数据库增加时间戳标识实现的乐观锁, 请求参数从源头带上微秒或者毫秒时间戳数据库存储, 然后在更新SQL语句上比较 (数据库的时间 < 参数传递的时间) 例如: A…

机器学习与神经网络的当下与未来

一、机器学习与神经网络的发展前景 &#xff08;一&#xff09;各领域的具体应用和作用 生产制造领域 在工业生产中&#xff0c;机器学习和神经网络被用于质量控制。例如&#xff0c;通过对产品外观图像的分析&#xff0c;神经网络能够以极高的准确率识别出产品表面的瑕疵。像…

C++头文件大全及解释(补丁)

一、<iostream> 这个头文件提供了输入输出流的功能。它包含了用于输入&#xff08;如cin&#xff09;和输出&#xff08;如cout&#xff09;的对象和操作符。使用这个头文件&#xff0c;可以方便地进行控制台输入输出操作。 例如&#xff1a; #include <iostream>…

深度解析机器学习的四大核心功能:分类、回归、聚类与降维

深度解析机器学习的四大核心功能&#xff1a;分类、回归、聚类与降维 前言分类&#xff08;Classification&#xff09;&#xff1a;预测离散标签的艺术关键算法与代码示例逻辑回归支持向量机&#xff08;SVM&#xff09; 回归&#xff08;Regression&#xff09;&#xff1a;预…