照相机模型与增强现实(相机标定)
計算機視覺:照相機模型與增強現實
- 針孔照相機模型
- 照相機標定
- 光學標定
- 自標定(SFM)
- 實驗結果
本篇文章主要講述如何通過通過照相機模型在映射中加入部分照相機產生圖像過程的投影特性從而 處理三維圖像與平面圖像之間的映射從而時間網格坐標的標定。篇中講述了如何確定照相機模型、圖像間的投影變換等。
針孔照相機模型
如圖所示,其中c為圖像中心點,C為相機中心點,x為三維坐標點在二維圖像中的映射點,X為景物的三維坐標點,f為兩中心點連線。其中x為CX直線與圖像平面的交點。因此我們可以得到:
其中P為相機矩陣,表達式如下。R為描述相機方向的旋轉矩陣,t是描述相機中心位置的三維平移向量,K為內標定矩陣用于描述照相機的投影性質。
標定矩陣通常可以寫成如下形式,其中f為圖像平面和照相機中心間的距離,s為傾斜參數。
照相機標定
同步標定內部參數和外部參數,一般包括兩種策略:
1.光學標定: 利用已知的幾何信息(如定長棋盤格)實現參數求解。
2.自標定: 在靜態場景中利用 structure from motion估算參數。
下文中實現的為自標定效果
光學標定
首先需要制作標定板,用于標定空間坐標
接著通過空間中已知坐標的(特征)點 (Xi,Yi,Zi),以及它們在圖像中的對應坐標 (ui,vi),直接估算 11 個待求解的內部和外部參數
最終得到上圖所示矩陣,可根據最小二乘法求解,得出矩陣M的值。
其優缺點如下:
| 優點 | 缺點 |
|---|---|
| 所有的相機參數集中在一個矩陣中,便于求解 | 無法得知具體的內參數和外參數 |
| 通過矩陣可以直接描述世界坐標中的三維點,到二維圖像平面中點的映射關系 | 求解出的未知量個數比待標定參數更多,會引發參數不獨立/相關問題 |
| 標定工具需要有極高的精度,包括不同平面的角度、特征點的物理距離等。因此制作標定工具十分困難 |
自標定(SFM)
對于自標定,我們只需選擇一張標定板,通過不同角度與位置的標定板圖片進行標定。如上圖所示,其中0為相機中心,序號1-20表示不同圖像平面。
最終通過求解M矩陣得到對應參數結果,上圖參數說明如下
| 參數 | 說明 |
|---|---|
| s | 世界坐標系到圖像坐標系的尺度因子 |
| A | 相機內參矩陣 |
| (u0,v0) | 像主點坐標 |
| α, β | 焦距與像素橫縱比的融合 |
| γ | 徑向畸變參數 |
僅需要平面標定板,拍攝若干張圖片,且標定板中的模式十分靈活,可以是棋盤格,也可以是其他幾何結構已知的圖形。
自標定的總體流程如下:
1.打印一張棋盤格A4紙張(黑白間距已知),并貼在一個平板上
2.針對棋盤格拍攝若干張圖片(一般10-20張)
3.在圖片中檢測特征點(Harris特征)
4.利用解析解估算方法計算出5個內部參數,以及6個外部參數
5.根據極大似然估計策略,設計優化目標并實現參數的refinement
實驗結果
棋盤格圖片數據如下,圖片大小為1920 x 1442,共12張圖片
最終得到的總誤差為0.7769873251891357
在原數據的基礎上,將所有圖片數據的大小按比例縮小為1000 x 751,再次運行,得到的總誤差為0.404443173882072。圖像縮小后精度得到了提升,個人認為這是由于圖像的大小一定程度上決定了圖像自身的精度,越大的圖片對細節有越好的展示,因此最終結果的誤差會較大與縮小后的圖片
算法在讀取圖片數據時若該圖無法識別出角點則不會被記錄數據,因此對于一些系統無法識別的圖片我們需要進行畸變矯正,如上圖。在進行畸變矯正后圖片較之與之前出現扭曲但是腳點矯正到了同一直線,因此能夠進行正確的角點識別。識別后最終得到總誤差為0.376169230258824,比無法識別該畸變圖像得到的結果更加精確。所以去畸變在對于圖像角點識別的過程中有極大促進作用。
此外,對于常規標定板中角點的識別。該算法能夠很精確的識別到棋盤格中的每一個交界處,并實現與下一行角點的連接,如上圖。因此在該基礎上實現的相關相機參數計算與最終的坐標標定也能夠將誤差降到很小。
總結
以上是生活随笔為你收集整理的照相机模型与增强现实(相机标定)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python实现一元及多元线性回归
- 下一篇: 计算机视觉:Bag of words算法