close

Halcon 在3D 模組使用前需要將相機做參數校正

首先 需要設定 要使用的相機組成(CameraType)  與 相機與鏡頭的參數(CameraPAram)

 

CameraType 這邊參考 Halcon 的文件 選擇 合適的 Type

 

CameraTypeCameraParam#
'area_scan_division' [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight] 8
'area_scan_telecentric_division' [0, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight] 8
'area_scan_tilt_division' [Focus, Kappa, Tilt, Rot, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight] 10
'area_scan_telecentric_tilt_division' [0, Kappa, Tilt, Rot, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight] 10
'area_scan_polynomial'  [Focus, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]                                                                                                                          
12
'area_scan_telecentric_polynomial' [0, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]                
12
'area_scan_tilt_polynomial' [Focus, K1, K2, K3, P1, P2, Tilt, Rot, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]                      
14
'area_scan_telecentric_tilt_polynomial' [0, K1, K2, K3, P1, P2, Tilt, Rot, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]                              
14
'line_scan' [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz] 11

比較特別的是 Camera Param 這部分

Facus :

如果是 telecentric的鏡頭 Facus 是填 0,如果不是,那就要看鏡頭本身的參數  

比如手上用的是 25mm 的 CCTV 鏡頭,就填入0.025

 

Kappa :

這部分的參數先填 0 ,後面校正結束 Halcon 會填入

Sx Sy: 填入 X PixelSize 與 Y PixelSize

Cx Cy: 填入影像  1/2 寬   1/2高 的數值

ImageWidth : 填入影像寬

ImageHeight : 填入影像高

 

整個設定過程:

StartCamPar1 :=[0.025,0,0.0000074,0.0000074,320,240,640,480]

caltabFile := 'D:/Study/Halcon/3D/Caltab/caltab_50mm.descr'

create_calib_data ('calibration_object', 1, 1, CalibDataID)

set_calib_data_cam_param (CalibDataID, 0, 'area_scan_division', StartCamPar1)

 

設定好之後 就可以開始 拍 校正版的影像 

calibration plates with hexagonally arranged marks  

使用 calibration plates with hexagonally arranged marks 最少拍攝 6張

 

 

calibration plates with rectangularly arranged marks  

使用 calibration plates with rectangularly arranged marks 需拍攝 10~20張

 grab_image(Image,AcqHandle)
 dev_display (Image)
 find_calib_object (Image, CalibDataID, 0, 0, I, [], [])
 get_calib_data_observ_contours (Caltab, CalibDataID, 'caltab', 0, 0, I)
 dev_display (Caltab)

 

最後取得校正的參數   將 校正後的參數 寫到硬碟

calibrate_cameras (CalibDataID, Error)
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)
write_cam_par (CamParam, 'camera_parameters.dat')

arrow
arrow
    文章標籤
    Halcon
    全站熱搜

    Rh 發表在 痞客邦 留言(1) 人氣()