halcon 相机标定

In the reference manual,operator signatures are visualized in the following way: 
operator ( iconic input : iconic output : control input : control output )

在HALCON所有算子中,变量皆是如上格式,即:图像输入:图像输出:控制输入:控制输出。

其中四个参数任意一个可以为空。

控制输入可以是变量、常量、表达式;

控制输出以及图像输入和输出必须是变量。

 

1.caltab_points:从标定板中读取marks中心坐标,该坐标值是标定板坐标系统里的坐标值,该坐标系统以标定板为参照,向右为X正,下为Y正,垂直标定板向下为Z正。该算子控制输出为标定板中心3D坐标。

2.create_calib_data:创建Halcon标定数据模型。输出一个输出数据模型句柄。

3.set_calib_data_cam_param:设定相机标定数据模型中设置相机参数的原始值和类型。设置索引,类型,以及相机的原始内参数等。

4.set_calib_data_calib_object:在标定模型中设定标定对象。设定标定对象句柄索引,标定板坐标点储存地址。

5.find_caltab:分割出图像中的标准标定板区域。输出为标准的标定区域,控制

6.find_marks_and_pose:抽取标定点并计算相机的内参数。输出MARKS坐标数组,以及估算的相机外参数。

即标定板在相机坐标系中的位姿,由3个平移量和3个旋转量构成。

7.set_calib_data_observ_points( : : CalibDataID, CameraIdx, CalibObjIdx,CalibObjPoseIdx, Row, Column, Index, Pose : )

收集算子6的标定数据,将标定数据储存在标定数据模型中。输入控制分别为标定数据模型句柄,相机索引,标定板索引,位姿索引,行列坐标,位姿。

8.calibrate_cameras( : : CalibDataID : Error) 标定一台或多台相机,依据CalibDataID中的数据。控制输出平均误差。

9.get_calib_data( : : CalibDataID, ItemType, ItemIdx, DataName : DataValue) 获得标定数据。

依靠索引号和数据名称来返回输出的数据值。可查询与模型相关的数据,与相机相关的数据(包括相机的内外参数等),与标定对象相关的数据,与标定对象的姿态相关的数据。控制输出是要查询的标定数据。

如:

get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam) //查询相机的位姿

get_calib_data (CalibDataID, 'calib_obj_pose', [0, NumImage], 'pose', Pose) //查询标定板位姿

10.write_cam_par( : : CameraParam, CamParFile : ) 记录相机的内参数,输入控制为内参数,输出控制为

存取相机内参数的文件名。

11.set_origin_pose( : : PoseIn, DX, DY, DZ : PoseNewOrigin)

设置新的坐标原点,控制输入为原始的位姿和沿着世界坐标系的三个坐标轴的平移量,控制输出为新的位姿。

相关算子:相关算子:
1.create_calib_data( : : CalibSetup, NumCameras, NumCalibObjects : CalibDataID)
创建一个标定(数据)模型
CalibSetup:标定类型
NumCameras:相机数目
NumCalibObjects:图片中标定板个数
CalibDataID:标定模型句柄(标示符)
2.set_calib_data_cam_param( : : CalibDataID, CameraIdx, CameraType, CameraParam : )
相机标定(数字)模型类型和初始参数设置
CalibDataID:标定模型句柄(标示符)
CameraIdx:相机索引号(编号)
CameraType:相机的类型
CameraParam:初始相机的内部参数
3. set_calib_data_calib_object( : : CalibDataID, CalibObjIdx, CalibObjDescr : )
定义校准对象相机校准数据模型的索引
CalibDataID:标定模型句柄(标示符)
CameraIdx:相机索引号(编号)
CalibObjDescr:三维点坐标或文件名
4.find_caltab(Image : Caltab : CalTabDescrFile, SizeGauss, MarkThresh, MinDiamMarks : )
分割标定板区域
Image:图像
Caltab:标定板区域
CalTabDescrFile:文件名
SizeGauss高斯滤波核大小
MarkThresh阈值
MinDiamMarks:标定板上圆的最小直径(像素单位)
5.find_marks_and_pose(Image, CalTabRegion : : CalTabDescrFile, StartCamParam, StartThresh, DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks : RCoord, CCoord, StartPose)
从图像中提取2D校准标记和外部摄像机参数计算的初始值
Image:图像
CalTabRegion:图像区域
CalTabDescrFile:文件名
StartCamParam:相机的内部参数初始值
StartThresh:初始阈值,用于轮廓检测
DeltaThresh:StartThresh值连续减少到MinThresh的步长
MinThresh:用于轮廓检测的最低阈值
Alpha:过滤器参数,用于轮廓检测
MinContLength:标定圆的最小的轮廓长度
MaxDiamMarks:标定圆的最大直
RCoord:标定圆的ROW坐标值(输出值)
CCoord:标定圆的Cloumn坐标值(输出值)
StartPose:外部相机参数的估计(输出值)
6.calibrate_cameras( : : CalibDataID : Error)
执行相机标定
CalibDataID:标定模型句柄(标示符)
Error:最优投影误差(输出值)
7.set_origin_pose( : : PoseIn, DX, DY, DZ : PoseNewOrigin)
| 1 0 0 DX |
PoseNewOrigin = PoseIn * | 0 1 0 DY |
| 0 0 1 DZ |
| 0 0 0 1 |
设置新的坐标原点,控制输入为原始的位姿和沿着世界坐标系的三个坐标轴的平移量,控制输出为新的位姿
PoseIn:初始位姿
DX,DY,DZ沿各坐标轴的平移值


StartCamPar := [0.016,   0,    0.0000074,    0.0000074,   326,   247,    652,    494]

解释一下这个数组的意思。

面阵相机有14或18个参数(根据想相机的畸变模式),对于线阵相机有17个参数。这些参数可以分开为内部相机参数、外部相机参数。

面阵相机(division模式)

Focus(焦距):远焦镜头镜头焦距的长度

Kappa:扭曲系数

Sx,Sy:两像素间距

Cx,Cy:中心点坐标

Whith,Height:图像的宽高

面阵相机(polynomia模式):

Focus(焦距):远焦镜头镜头焦距的长度

K1, K2, K3, P1,P2:扭曲系数

Sx,Sy:两像素间距

Cx,Cy:中心点坐标

Whith,Height:图像的宽高

线阵相机不做具体介绍


  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值