1.gen_cam_par_area_scan_division — Generate a camera parameter tuple for an area scan camera with distortions modeled by the division model 为面阵相机生成一个相机参数元组,该元组具有由分割模型建模的畸变
gen_cam_par_area_scan_division (0.016, 0, 0.0000074, 0.0000074, 326, 247, 652, 494, StartCamPar)
CameraParam := ['area_scan_division',Focus,Kappa,Sx,Sy,Cx,Cy,ImageWidth,ImageHeight]
2.set_calib_data_cam_param 在校准数据模型中设置相机的类型和初始参数
相机类型及其各自参数的概述:
a.面阵相机与常规镜头
Projective area scan cameras(投射面阵扫描相机)
'area_scan_division'
['area_scan_division', Focus, Kappa(畸变), Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
'area_scan_polynomial'
['area_scan_polynomial', Focus, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
Telecentric area scan cameras(远心面阵扫描相机)
'area_scan_telecentric_division'
['area_scan_telecentric_division', Magnification(放大倍率), Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
'area_scan_telecentric_polynomial'
['area_scan_telecentric_polynomial(多项式)', Magnification, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
b.线阵相机
Projective line scan cameras(投射线阵扫描相机)
'line_scan_division'
['line_scan_division', Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]
'line_scan_polynomial'
['line_scan_polynomial', Focus, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]
Telecentric line scan cameras(远心线阵扫描相机)
'line_scan_telecentric_division'
['line_scan_telecentric_division', Magnification, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]
'line_scan_telecentric_polynomial'
['line_scan_telecentric_polynomial', Magnification, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]
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', 'true', 'false') * * Calibrate the camera. * gen_cam_par_area_scan_division (0.016, 0, 0.0000074, 0.0000074, 326, 247, 652, 494, StartCamPar) create_calib_data ('calibration_object', 1, 1, CalibDataID) set_calib_data_cam_param (CalibDataID, 0, [], StartCamPar) set_calib_data_calib_object (CalibDataID, 0, 'caltab_30mm.descr') NumImages := 10 * Note, we do not use the image from which the pose of the measurement plane can be derived for I := 1 to NumImages by 1 read_image (Image, ImgPath + 'calib_' + I$'02d') dev_display (Image) find_calib_object (Image, CalibDataID, 0, 0, I, [], []) get_calib_data_observ_contours (Caltab, CalibDataID, 'caltab', 0, 0, I) dev_set_color ('green') dev_display (Caltab) endfor calibrate_cameras (CalibDataID, Error) get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam) * Write the internal camera parameters to a file write_cam_par (CamParam, 'camera_parameters.dat') Message := 'Interior camera parameters have' Message[1] := 'been written to file' disp_message (WindowHandle, Message, 'window', 12, 12, 'red', 'false') clear_calib_data (CalibDataID)