close
影像畸變
同學們在發布限動時,有沒有運用過廣角鏡頭幫自己長高,或是看過網紅貼文這樣用呢?多多少少應當都有。
但這些好處到了機器影像視覺上就不是如此了。可能因為變形失真導致距離誤判而產生意外等問題產生。
幸好鏡頭成像時所導致的「畸變」可以透過一系列的計算找出其數值,而此組數值就會是這套光學系統的「畸變參數」。
就可以用來校正和重新映射來修正。
基礎理論
在OpenCV中,使用數學模型如下[1]:
(x,y)為未畸變時像素點的座標,分別對應畸變結果為(xdistorted,ydistorted)
輻射畸變差可表示為下列公式
正切畸變差可表示為下列公式
從上方輻射畸變差與正切畸變差中,有五個變數是我們需要的,可以表示成下列
程式碼目標
下圖黃框中的部分
分別希望可以指定
- 棋盤格數量
- 所有要分析的圖檔路徑(用餘讀入照片)
- 輸出每張讀入的棋盤格照片
- 要校正的目標影像
- 輸出的校正影像結果
程式碼實作
以下程式碼參考[2]
- 用設備拍攝數張已知棋盤格
- import OpenCV 與 指定namespace
- 開始撰寫主程式,首先設定所需變數
按照圖中變數,指定照片路徑、輸出路徑、棋盤格大小、與待校正影像
- 將讀入的影像轉換坐標系
- 開始將每張讀入影像利用已知棋盤格進行抓取計算
- 計算出畸變常數並校正目標影像
- 校正結果(左方為校正前,右方為校正後)
- 完整原始碼
Reference
全站熱搜
留言列表