Halcon相机标定

相关算子:相关算子:
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:图像的宽高

线阵相机不做具体介绍


你可能感兴趣的:(halcon)