目錄
一 、相機標定介紹
相機標定是從三維點轉換到二維點的過程,其目的是計算出該照相機的內、外參數,以及畸變參數。標定照相機的標準方法是,拍攝多幅平面棋盤模式的圖像,然後進行處理計算。
基本參數設定
s:世界座標系到圖像座標系的尺度因子
(u0,v0):像主點座標
α, β:焦距與像素橫縱比的融合
γ:徑向畸變參數
2D 圖像點:
3D 空間點:
1.1計算單應性矩陣H
設三維世界座標的點爲,二維相機平面像素座標爲,所以標定用的棋盤格平面到圖像平面的單應性關係爲:
其中s爲尺度因子,K爲攝像機內參數,R爲旋轉矩陣,T爲平移向量。令
注意,s對於齊次座標來說,不會改變齊次座標值。張氏標定法中,將世界座標系在棋盤格平面上,令棋盤格平面爲Z=0的平面。則可得
我們把K[r1, r2, t]叫做單應性矩陣H,即
H是一個齊次矩陣,所以有8個未知數,至少需要8個方程,每對對應點能提供兩個方程,所以至少需要四個對應點,就可以算出世界平面到圖像平面的單應性矩陣H。
1.2計算內參數矩陣
由上面式子可得
r1和r2正交,可得
代入可得
1.3計算外參數矩陣
外部參數可通過Homography求解,由 H = [h1 h2 h3] = λA[r1 r2 t],可推出
一般而言,求解出的R = [r1 r2 r3] 不會滿足正交與歸一的標準,在實際操作中,R 可以通過SVD分解實現規範化。給定 n 張棋盤格圖像,每張圖像有 m 個角點,最小化下述公式等同於極大似然估計:
二、實驗過程
2.1實驗步驟
- 打印一張棋盤格A4紙張(黑白間距已知),並貼在一個平板上
- 針對棋盤格拍攝若干張圖片(一般10-20張)
- 在圖片中檢測特徵點(Harris特徵)
- 利用解析解估算方法計算出5個內部參數,以及6個外部參數
- 根據極大似然估計策略,設計優化目標並實現參數的refinement
實驗沒有打印出照片,採用製作棋盤進行拍攝的方法,下面拍攝的照片有18張,棋盤每個小方格的邊長爲3cm,拍攝手機:華爲8x。
2.2實現
實際應用中,常使用MATLAB標定工具箱進行相機標定 Camera Calibration Toolbox for Matlab,只需導入拍攝的棋盤格照片,輸入一些參數,然後對每張照片選擇棋盤區域,就可以自動完成整個標定過程,並得到可視化的標定結果。
- 打開matlab,在應用裏找到“Camera Calibrator”並打開
- 在新窗口中選擇添加圖片“Add Images”
- 添加圖片之後,設置棋盤格的實際大小(這裏爲30mm)
- 點擊“Calibrate”開始計算
2.3實驗結果
角點檢測:
內參矩陣:
平均誤差0.07:
外參可視化,以棋盤格爲中心(左圖)和以相機爲中心(右圖):
opencv計算的內參矩陣:
三、實驗總結
(1)相比較Matlab標定工具箱進行標定的結果和代碼實現的標定,發現兩者的內參基本相同。
(2)在添加圖片的時候,可能有圖片拍攝得不是很好,18張圖片最後標定的只有17張。在拍攝照片的時候可以儘量的拍好清楚一些,角度不要過大。
參考:
標定介紹:https://blog.csdn.net/weixin_43361953/article/details/89291696
https://blog.csdn.net/hitzijiyingcai/article/details/82715921