Lens Distortion
在前一篇文章 攝像頭校正 camera calibration - part 1 camera model提到 使用 lens 的好處是可以增加進光量, 縮短曝光時間. 但是缺點則是會造成非線性的影像形變.
圖一 徑向型變(左) 與切向型變(右) |
圖二是某個 camera lens 的 radial distortion 圖, 圖中使用箭頭方向表示 形變的方向, 箭頭的長度表示形變的量. 因此可以看出在影像周邊的radial
distortion 比較明顯.
此圖中箭頭方向朝向內, 這種 radial
distortion 稱為桶狀形變( barrel distortion), 另一種箭頭方向朝外, 稱為枕狀形變(
pincushion distortion).
圖三是 camera lens 的 tangent distortion 圖, 同樣的, 從圖中的箭頭方向和長度代表了影像中 tangent distortion 的型變方向和強度.
圖二 |
圖三 |
校正 radial distortion 以及 tangent distortion 的 modeling 如下
EQ1 校正 radial distortion 的 model |
EQ2 校正 tangent distortion 的 model |
這兩種 undistortion 的方式是 OpenCV或是 matlab 所實作的方式.
EQ1 以及 EQ2 中的 k1, k2, p1, p2, k3 稱為camera 的形變參數(distortion parameter).
Calibration
在前一篇文章 攝像頭校正 camera calibration - part 1 camera model, 我們已經瞭解了
camera model 的內部參數(intrinsic parameter) , 現在來看何謂 camera 的外部參數(extrinsic parameter), camera 的外部參數用來描述 世界座標(world coordinate) 和 camera 座標(camera coordinate)之間的座標系統轉換關係.
如圖四所示:
圖四 |
EQ3 |
在本文中, 假設
lens 以及 sensor 的參數皆是未知, 我們要介紹的
camera calibration 方法為 張正友法. 主要原因是張正友 方法是 OpenCV 以及 matlab 所使用的校正方法, 張正友方法所強調的特點是 calibration方法的彈性以及校正物件的容易取得. 如圖五所示, 張正友方法的校正物件 為一個平面物件(planar object), 並且在平面上貼上校正專用的 pattern.
圖五 校正 pattern |
使用待校正的 camera拍攝不同角度的校正物件,得到一影像序列(理論上至少兩張影像), 張正友校正法使用這影像序列 校正出該 camera 的內部參數, 外部參數, 以及形變參數.
圖六為影像序列.
圖六 |
如圖七所示. 張正友方法的校正物體是一平面物件, 而成像所在的 image也是一個平面物件, 將空間中某個平面上的一點 transform到另一個平面上, 在 computer vision 領域中此 transform 稱為 planar Homography.
圖七 planar homography |
EQ4 |
令
則 EQ4 可寫成
EQ5 |
令 planar Homography 為 H
則 EQ5 寫成
EQ6 |
可得到矩陣B為一對稱矩陣如下:
以 EQ10 為例:
EQ12 |
因為 B 是一個對稱矩陣, 因此可以寫出 EQ14 如下:
EQ13 |
另外, EQ13可整理為EQ15的型式:
EQ14 |
由 EQ13, EQ14, 我們可將EQ11, EQ12 這兩個 constrain用以下方式表示:
V是一個 2N x 6 的矩陣. 若 N >=3, 擇理論上可以解出一組唯一的 b陣列. b 陣列為已知後, 攝像頭的內部參數就可以得知, 如下:
求出所有的內部參數後, EQ7 中的 A 矩陣即為已知, 接者來看 EQ7 中的H = { h1, h2, h3} , 稍早提到 H 是一個 3x3 矩陣稱為homograph, 是位於兩個平面上的對應點之間的 transform 關係. H 中需解出 6 個未知數, 因此我們至少要有 6 對已知的對應點.
如下圖八所示的一個校正 pattern 可以提取出 40 個角點(如圖九), 這些角點就是對應點.
圖八 |
圖九 |
解出 H 後, 即可求解出 EQ7 中的 r1, r2, t. 其實亦可解出 r3如下:
因此矩陣 R:
因為影像資料中的雜訊, 計算出的 r1, r2 可能並不互相垂直. 須對 R 做奇異值分解.conclusion
本文介紹了 張正友法的攝像頭校正方式, 接下來的Part3 Camera Calibration - OpenCV 實做 會介紹使用 OpenCV 進行攝像頭校正實做.
謝謝,很詳細,讓我了解到自己想了解的部分
回覆刪除在國內真的很少人再介紹Calibration,感謝您!
真的,很好的文章,感謝。
回覆刪除H 是有八個未知數嗎?
回覆刪除請問在EQ1,EQ2中的r是個定值?還是指影像中某點距離影像中心的距離?
回覆刪除elazığ
回覆刪除erzincan
bayburt
tunceli
sakarya
T7ZMH