halcon標定步驟
1.設定相機內部引數的初始值
startcampar := [0.016,0,0.0000074,0.0000074,326,247,652,494]
set_calib_data_cam_param (calibdataid, 0, 'area_scan_division', startcampar)
1.1 相機型號
(1)面陣
(2)線陣
1.2 引數設定(這裡只講面陣相機)
(1)division畸變模型
(2)polynomial 畸變模型
cameraparam:[focus, k1, k2, k3, p1, p2, sx, sy, cx, cy, imagewidth, imageheight]
注:當鏡頭為遠心鏡頭時,focus=0;
1.3 畸變型別的選擇
division畸變模型只適用於進度要求不是很高,標定數量較少的情況;polynomial 畸變模型對映象
畸變和切向畸變都校正,精度較高,花費時間長。
1.4 標定時個引數值的確定技巧
focus f:鏡頭的標稱焦距, e.g., 0.016 m.; 對於遠心鏡頭為0.
κ: 一般去0.0
or:k1, k2, k3,p1, p2:可全部初始化為0
sx: 由ccdcmos確定建議取值如下:
full image (640*480) subsampling (320*240)
1/3"-chip 0.0000055 m 0.0000110 m
1/2"-chip 0.0000086 m 0.0000172 m
2/3"-chip 0.0000110 m 0.0000220 m
sy: 由ccdcmos確定建議取值如下:
for example:
full image (640*480) subsampling (320*240)
1/3"-chip 0.0000055 m 0.0000110 m
1/2"-chip 0.0000086 m 0.0000172 m
2/3"-chip 0.0000110 m 0.0000220 m
cx and cy: 光心座標初始值,建議取值如下:
for example:
full image (640*480) subsampling (320*240)
cx 320.0 160.0
cy 240.0 120.0
imagewidth,imageheight:有實際大小來初始化該值
for example:
full image (640*480) subsampling (320*240)
imagewidth 640 320
imageheight 480 240
2.標定板初始化
caltabname := 'caltab_30mm.descr'//標定板描述檔案
set_calib_data_calib_object (calibdataid, 0, caltabname)
3.建立資料模型
create_calib_data ('calibration_object', 1, 1, calibdataid)
4.獲取標定
相機拍攝不同位姿下8-15張,拍攝時標定板盡量覆蓋整個視場(標定板要根據工作距離、視場大小定製);拍攝上的圓直徑不得小於10個畫素
5.載入所有影象,尋找標定板區域,確定圓心,將結果載入到組元中
for i := 1 to numimages by 1
... acquire image ...
find_caltab (image, caltab, caltabname, sizegauss, markthresh, mindiammarks)
find_marks_and_pose (image, caltab, caltabname, startcampar, startthresh,
deltathresh, minthresh, alpha, mincontlength, maxdiammarks, rcoord, ccoord, startpose)
set_calib_data_observ_points (calibdataid, 0, 0, i, rcoord, ccoord, 'all', startpose)
endfor
下面將halcon中提取目標點的大致原理說一下:
首先find_caltab 運算元對影象高斯濾波(核大小為sizegauss),接著閾值分割(與之大小為markthresh)將標定板的區域找出來, find_marks_and_pose 運算元對區域中的圓進行分割,找到圓的個數,周長,座標位置等應該和標定板描述檔案中的一致,否則會自動調整startthresh,使得startthresh按照deltathresh步長減小到minthresh,知道找到準確的圓心。
6.有了所有影象中的圓心就可以標定了
calibrate_cameras (calibdataid, errors)
返回平均投影誤差errors
以下是乙個偽**段.......(明天再續)
* calibration parameters
caltabdescr := 'caltab_100mm.descr'
caltabthickness := 0.0064
numcameras := 4
numcalibobjects := 1
numposes := 20
cameratype := 'area_scan_polynomial'
startcampar := [0.0085, 0.0, 0.0, 0.0, 0.0, 0.0, 6e-6, 6e-6, width*.5, height*.5, width, height]
* create camera calibration model and set parameters
create_calib_data ('calibration_object', numcameras, numcalibobjects, calibdataid)
* set used camara type
set_calib_data_cam_param (calibdataid, 'all', cameratype, startcampar)
* set used calibration object
set_calib_data_calib_object (calibdataid, 0, caltabdescr)
Halcon 測量 輪廓到線的距離
唯一需要注意的點就是 distance lc 這個運算元測量的是正交位置的點矩。count obj unioncontours,countobj tuple length rowbegin,counttuple if countobj counttuple for index 1 to counto...
vue中記錄頁面的滾動距離
業務需求 pageone頁面是乙個商品列表頁面,在這個頁面點選商品,就會跳轉到pagetwo商品詳細頁面。此時再從pagetwo頁面返回到pageone頁面時,pageone頁面需要做到 1.記錄pageone之前的滾動的距離。2.不重新請求資料。而從其它頁面進入到pageone頁面時,pageon...
h5頁面的寫法 移動端h5頁面寫法
1.頁面寬度320,所有元素尺寸設一半 缺點 不自能適應全屏 2.頁面寬度640,元素尺寸正常 暫未發現問題 3.頁面寬度640,js控制自適應全屏 adaptuilayout.adapt initviewportwidth 缺點 qq空間分享後點開頁面套在qq預設瀏覽器裡有相容性問題 4.rem寫...