首页 > 其他分享 >Halcon 多相机统一坐标系(标定)

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

时间:2024-10-25 12:49:15浏览次数:3  
标签:校准 get CalibDataID 标定 相机 calib Halcon data 坐标系

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

以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 1
    select_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

标签:校准,get,CalibDataID,标定,相机,calib,Halcon,data,坐标系
From: https://blog.csdn.net/2202_75557553/article/details/143225207

相关文章

  • Halcon双目立体视觉
               双目立体视觉机器视觉的一种重要形式,基于视差原理并由多幅图像获取物体三维几何信息,一般由双摄像机从不同角度同时获得被测物的两幅数字图像,或由单摄像机在不同时刻从不同角度获得被测物的两幅数字图像,并基于视差原理恢复物体的三维几何信息,......
  • Halcon图像拼接
    read_image(Image13,'E:/vs//13.png')get_image_size(Image13,Width,Height)gen_rectangle1(Rectangle,0,0,Height,Width/2)reduce_domain(Image13,Rectangle,ImageReduced)crop_domain(ImageReduced,Image1)gen_rectangle1(Rectangle,0,W......
  • Halcon缺陷检测之光度立体法
      通过在案例中应用摸索算子的特性,对光度立体法有了进一步认识。基于此重新理解文档,希望能够帮助有疑惑的同志,同时也期望看到博客的同志如果有更深的理解以及应用技巧,共享与大家共同交流进步。photometric_stereoImages(input_object):输入图像输入图像(一个至少包含3......
  • 平面图形中建系 | 平面直角坐标系
    前情概要如果没有笛卡尔平面直角坐标系,那么涉及平面向量的问题只能用基向量的方法[形的角度]求解,不能用代数方法[数的角度]计算;同理如果没有空间直角坐标系的介入,立体几何中的问题也就只能从形的角度思考,而不能用代数方法[数的角度]来计算;所以建系的目的主要是想把有关形的问题,通......
  • Halcon 创建变异模型
    *create_variation_model(::Width,Height,Type,Mode:ModelID)说明:创建一个ID为ModelID,宽为Width,高为Height,类型为Type的VariationModel,参数Mode决定了创建标准图像和相应的variation图像的方法。'standard'表示标准的训练方法,标准图像的位置是各训练图像位置的平均......
  • 地心惯性坐标系
    地心惯性坐标系是以地球中心为原点的坐标系统,并且在该系统中,坐标轴相对于远处的恒星保持不变。这个坐标系的特点是忽略了地球自转和其它力的影响,提供了一种理想化的参考框架,适用于描述航天器、卫星和其他天体的运动。它常用于天文学、航天工程和轨道力学中,以便更准确地计算......
  • Halcon九点标定与旋转标定
    9点标定是通过9个点计算出相机坐标系到机械手坐标系的一个仿射变换,(实际上空间中的二维平面的仿射变换最低只需要3个点就可以,但是为了保证矩阵的准确性,数据点一般采用9-12点)。在实际应用过程中,需要获取像素下特征点的坐标和对应机械手的坐标。联立方程组求解即可得到对应仿射变......
  • 个人记录:TIF文件内部坐标系wgs84转gcj02
    第一步安装Anaconda这里就不赘述了第二步创建环境创建python环境,指定版本号condacreate--nametestpython=3.12.3test指的是环境名,python指的是当前python的系统版本激活python环境activatetest安装gdalcondainstall-cconda-forgegdal第三步复制代码import......
  • 光平面标定代码
            本篇文章主要给出光平面标定代码,鉴于自身水平所限,如有错误,欢迎批评指正。(欢迎进Q群交流:874653199)        数据分为棋盘格数据和激光条数据,激光条数据为在第22个位姿至第26个位姿下打在棋盘格标定板上采集的图像。clc;clear;%%相机标定image_fil......
  • [转]深度学习下的相机标定
    相机标定在计算机视觉和机器人等领域中占据举足轻重的地位,它为后续场景理解及决策推断提供了标准化的成像空间和精准的几何先验。然而,传统的相机标定技术常常依赖于繁琐的人工干预和特定的场景假设,因此难以灵活拓展至不同的相机模型和标定场景。近年来,基于深度学习的解决方案展现......