一、相机内参标定
目的:标定内参的目的是消除镜头的畸变。
面阵相机的内参由一个8位的数组组成包括:
startCamPar:=[Focus,Kappa,Sx,Sy,Cx,Cy,ImageWidth,ImageHeight]
Focus代表焦距,按照我们镜头参数进行填写,远心镜头填写0
Kappa为畸变大小,因为在标定之前,所以默认填写0
Sx, Sy像元的宽高填写相机的像元尺寸。可以查相机手册,或者咨询相机厂家。
Cx, Cy填写图像的中心坐标
ImageWidth, ImageHeight填写图像的宽高
通过查阅手册我们可以知道除Kappa以外的其他参数,将已知信息填入进去,就是未标定的初始相机内参。
有了初始内参就可以用下面算子设置进去:
set_calib_data_cam_param (CalibDataID, 0, [], startCamPar)
标定完成之后我的会得到标定后的相机内参,和标定前的区别是计算出了Kappa的值,不再是0,其他参数大致不变,所以内参标定就是计算出畸变系数的过程。
二、相机外参标定
目的:决定摄像机坐标系与世界坐标系之间相对位置关系,有了位置关系Pose,就可以将像素坐标系和世界坐标系的点进行互相转化,达到了标定的应用目的,所以外参标定就是求解要定位的产品相对于相机的位姿(位置)。
3D姿态中的7个参数代表的意义:[0,0,0,0,0,0,0]
前六个代表平移和旋转量,最后一个代表OrderOfTransform,OrderOfRotform,ViewOfTransform的组合类型。
位姿pose的参考文章:HALCON中create_pose和位姿中7个参数_m0_37833782的博客-CSDN博客
三、参考代码
一、获取内参,参考例程camera_calibration_internal
ImgPath := '3d_machine_vision/calib/'
dev_close_window ()
dev_open_window (0, 0, 652, 494, 'black', WindowHandle)
dev_update_off ()
dev_set_draw ('margin')
dev_set_line_width (3)
set_display_font (WindowHandle, 14, 'mono', '