Halcon 相机标定

算子

gen_caltab 生成标定文件

gen_caltab(::XNum,YNum,MarkDist,DiameterRatio,CalTabDescrFile,CalTabPSFile :) 算子来制作一个标定板
          
           XNum                 每行黑色标志圆点的数量。
           YNum                 每列黑色标志圆点的数量。
           MarkDist             两个就近黑色圆点中心之间的距离。单位是meter
           DiameterRatio        黑色圆点直径与两圆点中心距离的比值。
           CalTabDescrFile      标定板描述文件的文件路径(.descr),是保存文件的路径
           CalTabPSFile         标定板图像文件的文件路径(.ps)

image_points_to_world_plane 图像坐标转换为世界坐标

 image_points_to_world_plane( : : CameraParam, WorldPose, Rows, Cols, Scale : X, Y)
 
    CameraParam (input_control): 内部相机参数。
    WorldPose (input_control): 相机坐标系中世界坐标系的3D姿态。
    Rows (input_control): 需要进行转换的点的行坐标。
    Cols (input_control): 需要进行转换的点的列坐标。
    Scale (input_control): 比例尺或尺寸,有多种可选单位。
    X (output_control): 世界坐标系中点的X坐标。
    Y (output_control): 世界坐标系中点的Y坐标。

change_radial_distortion_cam_par 矫正相机参数

change_radial_distortion_cam_par( : : Mode, CamParamIn, DistortionCoeffs : CamParamOut)
    Mode (input_control): 模式选择,用于指定相机操作模式。默认adaptive
    CamParamIn (input_control): 原始的内部相机参数。
    DistortionCoeffs (input_control): 期望的径向畸变参数,可能包含1个或5个元素。默认:0
    CamParamOut (output_control): 修改后的内部相机参数。

gen_radial_distortion_map 形成矫正映射

gen_radial_distortion_map( : Map : CamParamIn, CamParamOut, MapType : )

    Map (output_object): 包含映射数据的图像对象。
    CamParamIn (input_control): 旧的相机参数。
    CamParamOut (input_control): 新的相机参数。
    MapType (input_control): 映射类型,指定映射过程中使用的插值方式。 默认为:bilinear

map_image 矫正映射到图片

map_image(Image, Map : ImageMapped : : )

    Image (input_object): 待映射的图像对象。
    Map (input_object): 包含映射数据的图像对象。
    ImageMapped (output_object): 映射后的图像对象。

单相机标定

生成标定板
在这里插入图片描述
生成的标定板文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述> 选择自动检测接口
在这里插入图片描述
点击实时图像就可以看到标定板参数
在这里插入图片描述> 点击采集(采集 16-20 张图片即可,检测出品质问题也是可以的,只有失败才不能用)
在这里插入图片描述各个角度都需要采集
在这里插入图片描述 设置参考位置可以设置为第一张图片,之后点击标定
在这里插入图片描述 品质问题百分数越低越好
在这里插入图片描述
采集完成后点击标定,标定好之后可以查看结果
相机参数为内参(内参直接决定畸变情况和像素和物理坐标之间的关系),摄像机位姿为外参,点击保存
在这里插入图片描述> 生成模式选择为:标定函数 点击插入代码
在这里插入图片描述> 标定文件选择为内外参数,并且实时采集图片
在这里插入图片描述> 进行测量即可
在这里插入图片描述

单相机标定畸变的矫正

相机畸变↓
在这里插入图片描述> 标定数据完成后,生成模式选择标定数据点击插入代码就可以获取相机的内外参数
在这里插入图片描述点击采集助手,实时采集,生成代码
在这里插入图片描述写入矫正函数
在这里插入图片描述

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Halcon相机标定代码.hdev 1.初始化 for example: Full image (640*480) Subsampling (320*240) ImageWidth 640 320 ImageHeight 480 240 2.标定板初始化 CaltabName := 'caltab_30mm.descr'//标定板描述文件 set_calib_data_calib_object (CalibDataID, 0, CaltabName) 3.创建数据模型 create_calib_data ('calibration_object', 1, 1, CalibDataID) 4.获取标定图片 相机拍摄不同位姿下图片8-15张,拍摄图片时标定板尽量覆盖整个视场(标定板要根据工作距离、视场大小定制);拍摄图片上的圆直径不得小于10个像素 5.加载所有图像,寻找标定板区域,确定圆心,将结果加载到组元中 for I := 1 to NumImages by 1 ... acquire image ... find_caltab (Image, Caltab, CaltabName, SizeGauss, MarkThresh, MinDiamMarks) find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, StartThresh, \ DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoord, CCoord, StartPose) set_calib_data_observ_points (CalibDataID, 0, 0, I, RCoord, CCoord, 'all', StartPose) endfor 下面将Halcon中提取目标点的大致原理说一下: 首先find_caltab 算子对图像高斯滤波(核大小为SizeGauss),接着阈值分割(与之大小为MarkThresh)将标定板的区域找出来, find_marks_and_pose 算子对区域中的圆进行分割,找到圆的个数,周长,坐标位置等应该和标定板描述文件中的一致,否则会自动调整StartThresh,使得StartThresh按照DeltaThresh步长减小到MinThresh,知道找到准确的圆心。 6.有了所有图像中的圆心就可以标定了 calibrate_cameras (CalibDataID, Errors) 返回平均投影误差Errors
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值