0

基於我得到的結果和所提供的文檔,我總結出使用非平面鑽機的校準在OpenCV中不起作用(它們嚴重依賴於初始猜測)。根據它們的功能calibrateCamera非平面鑽機鏡頭校準

該算法執行以下步驟中的文檔:

  • 計算初始固有參數(僅適用 爲平面校準模式的選項)或從讀取它們輸入 參數。除非某些CV_CALIB_FIX_K?失真係數全部設置爲0,否則初始化爲零。被指定。
  • 估計最初的 攝像機姿態,好像內部參數已經知道。 這是使用solvePnP
  • 運行全局文伯格 - 馬夸特 優化算法,以儘量減少投影誤差,也就是說, 平方距離的觀察到的特徵點之間的總和 imagePoints完成,預計(使用當前估計相機 參數和姿勢)對象點objectPoints。詳情請參閱 projectPoints。

另外,在強制需要如果使用非平面的鑽機作爲輸入,從而確認第一點到提供的固有的初始估計。

所以,我的問題是,是否有任何可用的庫(任何語言)可用於實現非平面鑽機的內在性(或可能與外部因素一起)?

回答

0

如果您有權訪問Matlab,或者可以理解Matlab語法並將其翻譯成您最喜歡的語言(從Matlab到Python以及您獲得openCV集成)。你可以看看他們的非平面鑽機。這個代碼是基於Heikkilä的作品:

"Geometric Camera Calibration Using Circular Control Points", IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 22, No. 10, pp. 1066-1077, Oct 2000.

以及包括這種校準的一個例子,這些鏈接中包含相應的代碼:

http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/example3.html

http://www.ee.oulu.fi/~jth/calibr/

希望這個廣泛的答案是有用的。

+0

我已經通過了該教程。儘管它說'非平面'校準裝備,但鑽機是平面的。 「非平面」意味着z不一定是零;但鑽機應該是平面的。我可以給你指出確切的代碼行,他們在哪裏做這個測試。此外,opencv校準只是這個Matlab校準工具箱的C++實現;而且他們也沒有實現這個功能......反正;我已經自己實現了這個功能;這並不困難。 – krips89

+0

很好,你有你自己的實現,這並不困難。 只要z對每個點都是恆定的,我不確定具有不同於零的z分量的平面可以稱爲非平面的。 我確信Heikilla(奧盧大學的非加州理工學院)的實施具有非共面平臺,因爲我之前使用過他(在最後一個鏈接中)。無論如何,我想這是解決。 – trox