40.5、Calibration Function
作者:互联网
- create_calib_data( : : CalibSetup, NumCameras, NumCalibObjects : CalibDataID)
功能:创建Halcon标定数据模型
CalibSetup:标定类型。默认值'calibration_object'
NumCameras:摄像机数量。默认值1
NumCalibObjects:标定板数量。默认值1
CalibDataID:标定数据模型模板(简称标定模型句柄)
注:建议CalibDataID变量在创建之前初始化为-1,创建句柄后,值一般是非负数,在释放句柄后,虽然模板被销毁,但是句柄的值没有改变,建议把这个变量赋值为-1,通过以上操作,就可以通过判断句柄是否为负数来判断标定模型是否有效。
- set_calib_data_cam_param( : : CalibDataID, CameraIdx, CameraType, CameraParam : )
功能:设置摄像机模型和摄像机参数
CalibDataID:标定模型句柄
CameraIdx:摄像机索引,默认值为0
CameraType:摄像机类型,具体查看《40、相机标定》 《40.2、Halcon相机标定模型》,默认值'area_scan_polynomial'
CameraParam:摄像机参数,具体查看《40.2、Halcon相机标定模型》
- set_calib_data_calib_object( : : CalibDataID, CalibObjIdx, CalibObjDescr : )
功能:设置标定板描述文件
CalibDataID:标定模型句柄
CalibObjIdx:标定板索引,默认值0
CalibObjDescr:标定板描述文件
- find_caltab(Image : Caltab : CalTabDescrFile, SizeGauss, MarkThresh, MinDiamMarks : )
功能:提取标定板区域,具体查看《40.4、相机标定方法》
Image:输入图像
Caltab:输出标定板区域
CalTabDescrFile:标定板描述文件
SizeGauss:高斯滤波尺寸,默认值3
MarkThresh:标志点阈值,默认值112
MinDiamMarks:标志点最小直径,默认值5
- find_marks_and_pose(Image, CalTabRegion : : CalTabDescrFile, StartCamParam, StartThresh, DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks : RCoord, CCoord, StartPose)
功能:提取标志点坐标以及评估摄像机位姿
Image:输入图像
CalTabRegion:输入标定板区域
CalTabDescrFile:输入标定板描述文件
StartCamParam:输入摄像机参数
StartThresh:输入标志点初始阈值,默认值128
DeltaThresh:输入标识单区域阈值递减,默认值10
MinThresh:输入提取标志点区域最小阈值
Alpha:输入提取标志点平滑去噪系数,默认值0.9,值越小,去噪效果越好,损失边缘细节越多,值越大,去噪效果越差,保留边缘细节越多。
MinContLength:输入提取标志点最小轮廓长度,默认值15
RCoord:输出标志点圆形Y坐标数组
CCoord:输出标志点圆心X坐标数组
StartPose:输出评估摄像机位姿
- set_calib_data_observ_points( : : CalibDataID, CameraIdx, CalibObjIdx, CalibObjPoseIdx, Row, Column, Index, Pose : )
功能:把find_marks_and_pose得到的标志点坐标和评估位姿数据存储在标定模型中
CalibDataID:输入标定模板句柄
CameraIdx:输入摄像机索引,默认值0
CalibObjIdx: 输入标定板索引
CalibObjPoseIdx:输入标定板位姿索引
Row:输入提取标志点圆心Y坐标数组
Column:输入提取标志点圆心X坐标数组
Index:输入使用所有的标志点,默认值为'all'
Pose:输入摄像机评估位姿
- calibrate_cameras( : : CalibDataID : Error)
功能:标定摄像机
CalibDataID:输入标定模板句柄
Error:输出平均误差
- get_calib_data( : : CalibDataID, ItemType, ItemIdx, DataName : DataValue)
功能:查询存储在标定模型中的数据
CalibDataID:输入标定模型句柄
ItemType:数据类型。
'camera':表示要获取数据类型是与摄像机相关数据
'calib_obj_pose':表示要获取数据类型与标定板位姿相关数据
ItemIdx:输入参数
ItemType='camera'时,ItemIdx表示摄像机索引
ItemType='calib_obj_pose'时,ItemIdx是一个数组[CalibObjIdx, CalibObjPoseIdx],其中CalibObjIdx表示标
定板索引,CalibObjPoseIdx表示参考位姿的图像索引
DataName:输入要查询的属性名。'params'表示摄像机参数(内参)
例:
get_calib_data (CaliDataID, 'camera', 0, 'params', DataValue)
查询摄像机0的摄像机参数(内参数)
get_calib_data (CaliDataID, 'calib_obj_pose', [0,CalibObjPoseIdx], 'pose', Pose)
查询摄像机位姿(外参),该位使用0标定板,以索引CalibObjPoseIdx的标定图像的位姿参考位姿
- set_origin_pose( : : PoseIn, DX, DY, DZ : PoseNewOrigin)
功能:设置新的坐标原点
PoseIn:输入原始位姿
DX:输入沿着世界坐标的X轴的平移量
DY:输入沿着世界坐标Y轴的平移量
DZ: 输入沿着世界坐标Z轴的平移量
PoseNewOrigin:输出新的位姿
- clear_calib_data( : : CalibDataID : )
功能:释放标定模型(所占用的资源)
注:建议CalibDataID变量在创建之前初始化为-1,创建句柄后,值一般是非负数,在释放句柄后,虽然模板被销毁,但是句柄的值没有改变,建议把这个变量赋值为-1,通过以上操作,就可以通过判断句柄是否为负数来判断标定模型是否有效。
- write_cam_par( : : CameraParam, CamParFile : )
功能:以文件格式保存摄像机参数
CameraParam:输入摄像机参数
CamParFile:输入路径扩展名为.dat,.cal
- read_cam_par( : : CamParFile : CameraParam)
功能:从文件读取摄像机参数
CamParFile:输入路径扩展名为.dat,.cal
CameraParam:输出摄像机参数
- write_pose( : : Pose, PoseFile : )
功能:以文件格式保存位姿
Pose:输入位姿
PoseFile:输入路径,扩展名为.dat
- read_pose( : : PoseFile : Pose)
功能:从文件读取位姿
PoseFile:输入路径扩展名为.dat
Pose:输出位姿
- caltab_points( : : CalTabDescrFile : X, Y, Z)
功能:从标定板描述文件中提取标志点中心坐标,该坐标值是标定板坐标系统你的坐标值
CalTabDescrFile:输入标定板描述文件
X:标志点中心X坐标数组
Y:标志点中心Y坐标数组
Z:标志点中心Z坐标数组
按以下坐标系顺序排序,距离是标定板的实际距离,单位m
- camera_calibration( : : NX, NY, NZ, NRow, NCol, StartCamParam, NStartPose, EstimateParams : CameraParam, NFinalPose, Errors)
功能:通过距离最小化方法标定摄像机参数
NX:输入在标定板坐标系的标志点中心X坐标数组(单位m)
NY: 输入在标定板坐标系的标志点中心Y坐标数组(单位m)
NZ: 输入在标定板坐标系的标志点中心Z坐标数组(单位m)
NRow: 输入根据标定图像提取的标志点中心X坐标数组(单位pix)
NCol:输入根据标定图像提取的标志点中心Y坐标数组(单位pix)
StartCamParam:输入摄像机参数(内场)初始值
NStartPose:输入根据标定图像获得的评估位姿(外参)数组
EstimateParams:输入需要标定的参数,值为'all'表示所有参数,如果要标定某些参数,吧姿设为参数的名称即可,在输出时只会更改设置的参数,不会更改未设置的参数。参数列表'all', 'pose', 'camera', 'alpha', 'beta', 'gamma', 'transx', 'transy', 'transz', 'focus', 'kappa', 'poly', 'poly_rad_2', 'poly_rad_4', 'poly_rad_6', 'poly_tan_2', 'cx', 'cy', 'sx', 'sy', 'vx', 'vy', 'vz'
CameraParam:输出摄像机参数(内参)
NFinalPose:输出位姿(外参)数组,使用了M张标定图像,就有M组位姿,每组位姿包含7个结构元素,要提取第N组位姿,获取相应的元素[N*7 : ( N*7+6)]即可
Errors:输出参数,平均误差单位pix
以上的所有函数的目的是设置相关的标定初始化参数(像元大小、焦距大小、标定模式)、提起标定板参数(阈值等),并利用一系列标定图像,标定出一些标定参数,这些参数保存在***.cal和***.dat文件。也就是用函数实现《40.4、相机标定方法》的介绍的功能。
标签:Function,Calibration,句柄,标定,40.5,摄像机,位姿,标志点,输入 来源: https://www.cnblogs.com/ihh2021/p/16332840.html