類主要用于雙目相機的標定和矯正。它包含了讀取和保存相機模型、計算標定參數以及矯正圖像的功能。通過這些功能,可以實現雙目相機的標定和矯正,從而提高雙目相機的精度和穩定性。
公有函數:?構造函數、帶參構造函數、析構函數、讀取雙目相機模型、保存雙目相機模型、計算雙目相機標定參數、矯正圖像。
公有變量:左右相機的內參、雙目相機的標定參數包括旋轉矩陣、平移向量、本質矩陣、基礎矩陣、矯正矩陣和投影矩陣等。
私有變量:?是否加載了雙目相機模型、左右相機的圖像點、物體點、有效區域、圖像大小、重投影誤差、是否已經生成矯正map、左右相機的Mat數組。
------------------函數------------------
默認構造函數:初始化矯正標志為假,初始化模型加載標志為假。
帶參數的構造函數:初始化矯正標志為假,讀取雙目相機模型。
析構函數:空。
讀取雙目相機模型:檢查文件名是否為.yml結尾,打開文件,讀取文件中的參數(圖像尺寸、旋轉矩陣、平移向量、本質矩陣、基礎矩陣、第一個相機的矯正旋轉矩陣、第二個相機的矯正旋轉矩陣、第一個相機的投影矩陣、第二個相機的投影矩陣、讀取重投影矩陣、讀取做相機的有效區域、讀取右相機的有效區域。)初始化相機內參:將雙目模型加載標志設為真、初始化左相機的內參類實例、檢查左相機是否已標定、初始化右相機的內參、檢查右相機是否已標定、返回雙目模型和左右相機內參是否成功加載。
保存立體模型參數文件:檢查文件名是否為.yml結尾,打開文件,保存參數到文件。返回true。
計算立體標定參數:檢查左右相機檢測結果數量是否一致,獲取檢測結果數量,獲取圖像尺寸,開始立體校準。?定義左相機棋盤格完整角點集,右相機棋盤格角點集。定義左右相機角點計數,遍歷所有圖像獲取左/右相機角點{ 如果檢測結果為真則添加圖像角點到 左/右側相機圖像角點集合,否則添加空向量到角點集合?}。??定義左右相機棋盤格非空角點集合,找出在同一幀左右角點對。獲取有效的角點對數量。?定義世界坐標系下的角點,進行雙目相機標定,計算重投影誤差。輸出重投影誤差。進行雙目相機矯正,輸出左右相機的有效區域。
cv::stereoCalibrate
cv::stereoRectify
圖像立體矯正:?檢查是否已經初始化了矯正映射(輸出做相機的內參矩陣和畸變系數,輸出做相機的矯正變換矩陣和投影矩陣,輸出圖像尺寸,輸出有相機的內參矩陣和畸變系數,輸出有相機的矯正變換矩陣和投影矩陣,輸出圖像尺寸, 初始化左相機的矯正映射,初始化有相機的矯正映射,設置標志表示矯正映射已經初始化)。?應用矯正映射到做相機圖像,應用矯正映射到右相機圖像。?如果需要顯示校正后的圖像(創建一個畫布,用于顯示左右圖像,定義畫布的左半部分,定義畫布的右半部分,創建顯示窗口,將矯正后的左圖像復制到畫布的左半部分,將矯正后的右圖像復制到畫布的右半部分。在畫布上繪制綠色的水平線,用于檢查矯正效果。顯示校正后的圖像,等待用戶按鍵。?),返回true。
cv::remap
本質矩陣 vs 基礎矩陣
使用雙目相機進行三維重建的pipeline