一. 概述
上一篇文章介紹了” 解析!雙目視覺標定原理” ,說明了雙目立體視覺標定的原理與必要的約束。為了幫助各位加快校正的速度,此篇章搭配 自由軟體Octave 與 Matlab 公開提供的工具,僅需要執行三大步驟就能夠輕鬆完成鏡頭校正。
此次介紹章節為 "3 步驟!標定完成雙目視覺" 亦屬於雙目立體視覺篇章(藍色章節),趕快依照步驟一同完成雙目立體標定吧 !
此外,世平集團 ATU 團隊精心設計的一套 Sky Eye 開發版,幫助我們一同開闊未來 !!
大大通精彩方案 開闢未來_雙目立體視覺帶你進入 FCW & LDW 新視野
雙目立體視覺技術指南 (前車偵測) - 文章架構示意圖
二. 雙目立體視覺標定三步驟
第二步為計算真實世界座標與鏡頭座標關係,這裡介紹如何使用 Octave的標定工具進行計算。
第三步為重新建構雙目立體空間,透過 重映射(Remap) 算法完成校正。
第一步 : 收集真實世界資訊
首先,第一步就是收集真實世界的資訊,如下圖所示,為雙目立體視覺標定拍攝方式之示意圖。這裡說明棋盤格與拍攝方式,並建議同時顯示兩顆鏡頭的畫面,以利於拍攝。除此之外,必須注意的事就是請多嘗試拍攝不同角度的棋盤格資訊,盡可能將棋盤格涵蓋至整個畫面上,或甚至多拍攝遠近距離的變化。至少取得 3 張以上的資訊,才可進行第二步的校正分析。
雙目立體視覺標定拍攝方式之示意圖
第二步 : 計算真實世界座標與相機座標關係
接續,第二步就是計算真實世界座標與相機座標關係。這裡需要先行下載 Octave Linux 的開發平台,相似於 Matlab 是一個快速開發的工具。並可從 Matlab的官方網站下載 Camera Calibration Tool,皆下載完成後即可藉由 Octave 平台開啟 Camera Calibration Tool 進行校正計算。
嘗試拍攝不同角度之示意圖
因此 Camera Calibration Tool 設計也是如此,故先介紹單科鏡頭的校正分析,雙目視覺有兩顆鏡頭皆以同樣方式校正。如下圖所示,為 Octave & Camera Calibration Tool 單顆鏡頭校正操作說明。從 Octave平台選擇執行路徑至Camera Calibration Tool資料夾後,於命令行輸入 calib_gui 即執行程式。並且如同示意圖中操作方式一樣,點選 Standard 模式後,依序執行步驟1至步驟5。
Octave & Camera Calibration Tool 單顆鏡頭校正之操作說明
各步驟說明如下,而程式執行過程中,若出現以下未提起的參數設定皆使用 default 即可!
-> 單顆鏡頭的標定校正方式
步驟1 : 讀取影像( Image names) , 須先設定檔案名稱以及副檔名即可讀取影像資料,如下方示意圖所示。
除此之外,所拍攝的圖片請移動至該程式的目錄底下。
Octave & Camera Calibration Tool 讀取檔案之操作說明
步驟2 : 提取棋盤格之特徵點(Extract gird corners),這裡需以點選的方式框出範圍,點即棋盤格中的內角點範圍由左上、右上、右下、左下點擊。
其中請注意程式段落,若是出現Size dX of each square along the X direction ([]=100mm) 這樣資訊,請於此處輸入棋盤格內方塊的長與寬的實際長度。
Octave & Camera Calibration Tool提取特徵點之操作說明
步驟3 : 進行校正分析(Calibration), 開始計算真實世界座標與相機座標關係,分析完成後即顯示出相關係數 (如焦距、光學原點、失真係數等等)。
Octave & Camera Calibration Tool校正分析後之參數展示圖
步驟4 : 顯示校正分析(Calibration), 這裡將模擬顯示所拍攝的各個棋盤格角度。
Octave & Camera Calibration Tool校正分析之展示圖
步驟5 : 儲存 (Save), 參數資訊紀錄於 Calib_result 檔案之中,並分別將名稱改成 calib_result_right 以及calib_result_left ,即可開始著手進行兩個鏡頭的校正。
-> 雙顆鏡頭的標定校正方式
如單顆鏡頭類似。此時須要開啟 Camera Calibration Tool 中的另一支程式stereo_gui 。照上述方法開啟執行後,即出現以下畫面,並依序執行動作。
Octave & Camera Calibration Tool 雙目鏡頭校正之操作說明
步驟2 : 校正兩顆鏡頭之校正參數(Run stereo calibration),依兩顆鏡頭參數進行校正,重新校正兩顆鏡頭實際的空間關係,故須考量旋轉矩陣與平移矩陣的影響,如下方示意圖所示。
Octave & Camera Calibration Tool雙目校正分析後之參數展示圖
步驟3 : 顯示兩顆鏡頭之校正分析結果,如圖所示,此工具會將棋盤格與鏡頭的空間關係呈現出來。
Octave & Camera Calibration Tool 雙目校正分析之結果展示圖
根據以上步驟,完成雙目立體標定與校正分析後,即可獲得兩顆鏡頭的參數、旋轉矩陣與平移矩陣。而後續將利用這些參數以及 OpenCV 的函數產生相對應的空間映射表(Map) ,如下方程式段所示,展示如何使用函式計算出映射表(Map)。
第三步 : 重新建構雙目立體空間
*** 雙目立體標定方式就與魚眼校正的方式相同,僅差異是否有對兩顆鏡頭進行空間標定。
雙目立體視覺之基本流程圖
經過以上步驟就完成了雙目立體標定與校正,亦表示兩顆鏡頭的影像能達到極線約束的條件。如下圖呈現了雙目立體標定前與標定後的差異,經由標定後的影像完成校正魚眼之外,還能符合極線約束的條件。
*** 以綠色虛線作為校正完成的參考線,所有特徵點 (任一點) 理應呈現同一個水平面或是列上。
雙目立體標定前之示意圖
雙目立體標定後之示意圖
後續, 僅須透過 區塊比較(Block Match) 的匹配算法去計算視差,就能獲得更好的效果 ! 建構出良好的三維空間,如下展示雙目立體視覺結果示意圖 !
雙目立體視覺結果之示意圖
大概上,雙目立體視覺的流程就是取得影像後,藉由雙目立體標定法所得到的參數進行影像校正,即可利用 區塊比較(Block Match) 獲得建構良好的三維空間,即視差圖。下一篇文章,即將進入到車道偏移偵測的篇章(橘色章節) ”精闢 !車道偏移原理解密 (上) “,帶領各位提取車道資訊與辨識車道線 !
三. 參考文件
[1] 每日頭條網站 - 雙目立體視覺技術的實現
[2] 每日頭條網站 - 雙目立體視覺測量系統應用
[3] 每日頭條網站 - ADAS單目/雙目/三目到底有什麼區別?
[4] 維基百科 - Block-matching algorithm
[5] 論文 - Performance Analysis between Basic Block Matching and Dynamic Programming of Stereo Matching Algorithm
[6] 教材 - Stereo Vision by Professor Fei-Fei Li
[7] 維基百科 - Epipolar geometry
[8] 維基百科 - 單應性
[9] 論文 - A Flexible New Technique for Camera Calibration
[10] 數學工廠 - Camera Calibration 相機校正
[11] CSDN - 雙目測距(雙目標定、雙目校正和立體匹配)
[12] 官方網站 – GNU Octave
[13] 官方網站 – Camera Calibration Toolbox for Matlab
如有任何相關 雙目立體視覺(Stereo Vision) 技術問題,歡迎至博文底下留言提問 !!
接下來還會分享更多 雙目立體視覺(Stereo Vision) 的技術文章 !!敬請期待 【Sky Eye 開闊未來】 !!
評論
哭阿
2021年5月28日
ATU 伊布小編 (一部)
2021年5月25日
哭阿
2021年5月21日