1. 程式人生 > >車載環視拼接系統的設計與實現(三):魚眼畸變校正演算法

車載環視拼接系統的設計與實現(三):魚眼畸變校正演算法

       上一部分(車載環視拼接系統的設計與實現(二))討論的攝像機模型是理想的線性模型,但是在現實中並不存在這樣完全沒有畸變的透鏡,這主要是製造上的原因,因為製作一個球形透鏡比製作一個數學上理想的透鏡更容易,另外從機械製作方面考慮也很難把成像儀和透鏡保持平行的狀態,現實應用中一般只考慮兩種透鏡畸變,分別是切向畸變和徑向畸變,切向畸變產生的原因主要是攝像頭生產安裝過程中在工藝上的缺陷,而徑向畸變則來自於透鏡的形狀。

       魚眼攝像機徑向畸變模型如下圖所示,存在著中間大兩邊小的特點,徑向畸變就是沿著透鏡半徑方向分佈的畸變,對於廉價的攝像頭產生徑向畸變的情況更加明顯,徑向畸變主要包括桶形畸變和枕形畸變兩種。成像儀光軸中心的畸變為0,沿著鏡頭半徑方向邊緣移動,畸變越來越嚴重。對於畸變很大的鏡頭,如魚眼鏡頭,可以利用兩個畸變引數K1、K2描述。

       切向畸變是由於透鏡本身與相機感測器平面(成像平面)或影象平面在製作上放置不平行所產生的,這種不平行的情況多半是透鏡被貼上到鏡頭模組上安裝時產生的偏差導致。畸變模型可以用兩個額外的引數K3、K4來描述。


            (1)無畸變模型(2)魚眼畸變模型

魚眼畸變校正演算法:

實際中廣泛應用的畸變校正方法是基於標定的校正方法,這類方法通過標定獲取攝像機的內參數,即車載環視拼接系統的設計與實現(二)提到的攝像機內部引數,再通過攝像機成像過程座標對映關係建立畸變模型。

假設(Xw,Yw,Zw)為世界座標系下一個三維座標點,投影到魚眼影象中的畫素點為(u,v),則可以根據車載環視拼接系統的設計與實現(二)攝像機理想線性座標系變換即物體世界座標點到畫素座標點的過程,結合切向徑向畸變係數K1、K2、K3、K4推匯出畸變影象成像模型的數學表示式。

世界座標系到相機座標系轉換如下:

可以利用以下數學模型來描述畸變模型,假設攝像機座標系下歸一化座標點:


魚眼畸變非線性失真模型: 該失真模型是從OPCV3.0官方庫檔案裡面來的可參考https://docs.opencv.org/3.0-alpha/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#calibratecamera


其中r為像點距離影象中心的徑向半徑,K1、K2、K3、K4為畸變引數,K1、K2為徑向畸變引數,K3、K4為切向畸變引數.

令:


則有魚眼畸變影象素點:

其中為fx,fy,Cx,Cy攝像機內參。因此我們可以利用上述數學模型來得出世界座標系中的點(Xw,Yw,Zw)到魚眼影象的畫素位置(u,v)過程,這是非線性過程。只要我們利用上式中無畸變成像模型中畫素座標(u,v),即畸變矯正影象畫素座標(u1,v1),逆推出相機座標系歸一化點

,即:


再利用上述畸變模型數學表示式從歸一化座標點到魚眼影象畫素座標(u,v),即可求出魚眼影象畫素點和矯正影象畫素點對應關係。後面需要用到這個關係,因為我們一般魚眼影象是已知的,需要求的是矯正後的影象,因此只要確定矯正影象的大小,找到對應於魚眼影象的畫素點就可以了。