halcon中面到面的距離 Halcon標定步驟

2021-10-12 13:08:21 字數 3230 閱讀 2685

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寫...