我是使用halcon标定助手来标定线阵相机的,对于里面的一些参数来做一个记录说明:
首先下面的两个数组就是标定之后得到的相机内参和外参
内参:CameraParameters := [0.0357809 , -61.3384 , 6e-006 , 6e-006 , 915.932 , 182.341 , 2048 , 3840 , 1.41028e-006 , 5.45462e-005 , 3.86866e-006]
外参:CameraPose := [-0.0160874,0.0553653,0.255282,28.5899,6.24194,8.48283,0]
内参的11个参数分别是什么意思呢一共十一个参数分别为 [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]
Focus : 镜头焦距长度
Kappa: 镜头畸变系数,正负分别表示枕形畸变和桶状畸变
Sx: 表示相机单个像元宽度
Sy: 表示相机单个像元高度
Cx: 表示镜头光轴在像平面坐标上的投影横坐标,一般初始化的时候设置为width/2
Cy: 表示镜头光轴在像平面坐标上的投影纵坐标,一般初始化的时候设置为0,因为是一帧是一条线,所以纵坐标为0
ImageWidth: 表示一整副图片像素宽度
ImageHeight: 表示一整幅图片像素高度
Vx : x方向上运动速度,其实就是每拍摄一条线,x方向的走的距离,因为安装有误差,相机和运动方向不可能完全垂直,理论上为0最理想
Vy: y方向上运动速度,其实就是在扫描的时候,多远距离拍摄一条线
Vz: z方向上运动速度,其实就是每拍摄一条线,z方向上走的距离,也是因为安装有误差,理论上为0最理想
外参的六个参数表示由世界坐标系转换成相机坐标系的变换参数,六个参数分别为x,y,z三个轴的旋转角度和x,y,x三个轴的平移量
======================================================================================================
1.在halcon中使用标定助手对线扫相机进行标定,首先设置标定板描述文件路径,和镜头等相关参数
3.得到的内参,如何进行畸变矫正呢如下代码,注释为蓝色,代码为红色。
你希望映射过后的图片的宽度(一条线)内视野为多少,这里为30mm,然后除以1000换算成m
TmpCtrl_RectificationWidth := 30
TmpCtrl_RectificationWidth := TmpCtrl_RectificationWidth / 1000.0
生成用于矫正的映射图,着重说一下这几个输入参数
CameraParameters:标定得到的相机内参
CameraPose:标定得到的相机位姿外参
2048:待转换图的宽度
3840:待转换图的高度
2048:转换之后的图像希望的宽度
3840:转换之后的图像希望的高度
TmpCtrl_RectificationWidth / 2048:表示希望转换后的图,每个像素代表的长度,单位是m。这里因为宽度视野(一条线覆盖的视野宽度)希望是30mm,而希望转换后的图像宽度为2048,所以这里用TmpCtrl_RectificationWidth / 2048,也就是说你可以自定义转换之后的图像每隔像素代表多少精度,这里的精度就是30mm/2048pix = 0.014mm/pix .注意下面的这个函数就是将图片转换成了z=0,垂直视角的函数,参看halcon函数说明。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!