利用Halcon進行雙目標定


項目中需要為雙目攝像機建立算法,生成目標物體的三維點雲模型,用到了Halcon算法包。不過在使用過程中,不能直接套用Halcon自帶的例程,需要注意某些參數的設置。

在相機的使用測量之前,需要對相機進行標定,具體標定原理網上有許多人講了,這里不再重復贅述,可參考:https://blog.csdn.net/honyniu/article/details/51004397,雙目相機標定原理可參考https://zhuanlan.zhihu.com/p/63618986

相機標定的目的就是通過拍攝標准標定板,來分別確定兩個相機的內參矩陣K,和雙目相機之間的位置關系矩陣R,T。

Halcon自帶的雙目相機標定程序在binocular_calibration.hdev

1.首先需要拍攝標定板,調整好雙目相機的焦距,光圈等參數不變,同時拍攝過程中不能改變雙目相機兩個攝像頭之間的相對位置關系和角度。

2.將雙目相機固定到一個穩定的架子上,建議是將相機以一定高度固定並向下拍攝,以此來拍攝Halcon標定板(圓形對稱式標定板,如下圖這種,對背景要求不高,程序可識別標定板外圍的黑色輪廓和角上的定位符),這樣容易改變標定板姿態。

3.改變標定板姿態,同時記錄左右相機拍攝的照片,至少15組。

4.利用binocular_calibration.hdev讀取拍攝的圖像,左右相機圖像要對應起來

首先選取CaltabFile,根據你的表定板尺寸大小選擇相應的文件,普遍有10mm,30mm,100mm,200mm,650mm等,可在安裝目錄的MVTec\HALCON-17.12-Progress\calib文件夾里找到合適的文件。比如:

 

其次在函數gen_cam_par_area_scan_division( Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight ,CameraParam)中需要輸入相機的參數,如焦距Focus,徑向畸變系數Kappa,像元尺寸Sx和Sy,像主點坐標Cx,Cy以及圖想尺寸Width和Height。如:

隨后需要注意的是find_caltab函數中MarkThresh的設定,這個是識別閾值的設定,如果你照片效果不好,或者背景光干擾比較大,有時會識別不出來,這時需要調整這個閾值來盡量准確識別標定板上的圓形標記,此外還可以調整MinDiamMarks的值,用於去除干擾(最好拍攝的時候背景純粹一些)。剩下的其他參數用例程中預設的就可以了。如果參數調整好之后就能准確地識別出標定板了,具體效果如下

 

當計算完成之后,變量窗口會得到標定之后的相機內參矩陣和雙目姿態關系矩陣

左右相機內參變量為CamParamL和CamParamR,雙目姿態關系矩陣變量為cLPcR。

利用這三個參數就能通過視察計算出空間中每一個點的三維坐標了。

計算坐標可參考函數intersect_lines_of_sight或者Halcon例程disparity_image_to_xyz


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM