线阵相机标定

我是使用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中使用标定助手对线扫相机进行标定,首先设置标定板描述文件路径,和镜头等相关参数

2.加载用于标定的图片,一般20张左右,注意加载的图片必须都找到标定板,显示检测品质出问题如果精度要求不是很高也可以接受。然后选定一张照片设置为参考位姿,设置参考位姿的作用是什么呢?当你标定完成之后,使用相机内参外参进行矫正之后的图片,会将这个图片上的标定板中心点作为远点坐标,并且这张变换后的图片作为相机垂直照射的平面参考。如果加载的图片找不到标定板,可以在最下方的标定板提取参数中改变参数,一般就能找提取到标定板了。最后点击标定按钮,就可以得到标定的参数了。



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函数说明。

gen_image_to_world_plane_map (TmpObj_RectificationMap, CameraParameters, CameraPose, 2048, 3840, 2048, 3840, TmpCtrl_RectificationWidth / 2048, 'bilinear')
最终使用map_image来转换图片,转换之后的图片在理论上横向纵向的坐标缩放比例是相等的,换句话来说一个正方形两个方向上的像素个数是一样的,并且是垂直拍摄的。
map_image (Image, TmpObj_RectificationMap, TmpObj_RectifiedImage)


  • 8
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值