close

影像畸變

同學們在發布限動時,有沒有運用過廣角鏡頭幫自己長高,或是看過網紅貼文這樣用呢?多多少少應當都有。

但這些好處到了機器影像視覺上就不是如此了。可能因為變形失真導致距離誤判而產生意外等問題產生。

幸好鏡頭成像時所導致的「畸變」可以透過一系列的計算找出其數值,而此組數值就會是這套光學系統的「畸變參數」。

就可以用來校正和重新映射來修正。

 

 

基礎理論

在OpenCV中,使用數學模型如下[1]

(x,y)為未畸變時像素點的座標,分別對應畸變結果為(xdistorted,ydistorted)

輻射畸變差可表示為下列公式

image

 

 

 

正切畸變差可表示為下列公式

image

 

從上方輻射畸變差與正切畸變差中,有五個變數是我們需要的,可以表示成下列

image

 

程式碼目標

下圖黃框中的部分

分別希望可以指定

  1. 棋盤格數量
  2. 所有要分析的圖檔路徑(用餘讀入照片)
  3. 輸出每張讀入的棋盤格照片
  4. 要校正的目標影像
  5. 輸出的校正影像結果

未命名

 

程式碼實作

以下程式碼參考[2]

 

  • 用設備拍攝數張已知棋盤格

    image


     
  • import OpenCV 與 指定namespace

    image


     
  • 開始撰寫主程式,首先設定所需變數
    按照圖中變數,指定照片路徑、輸出路徑、棋盤格大小、與待校正影像

    image


     
  • 將讀入的影像轉換坐標系

    image


     
  • 開始將每張讀入影像利用已知棋盤格進行抓取計算

    image


     
  • 計算出畸變常數並校正目標影像

    image


     
  • 校正結果(左方為校正前,右方為校正後)

    image


     
  • 完整原始碼

    code-snapshot

 

 

Reference

arrow
arrow
    全站熱搜

    ntougpslab 發表在 痞客邦 留言(1) 人氣()