Radius Distortion Correction

Lens Distortion(鏡頭扭曲),顧名思義就是會影響畫面中物體的真實形狀,該方的不方,該圓的不圓....等,影響最深的就是會使照片中的建築物邊線不垂直,畫面中的水平線不水平。而Lens distortion基本有兩種型式,桶狀變形(barrel distortion)和枕狀變形(pincushion distortion)。

distortion          

             None                               Barrel                         Pincushion

桶狀變形:通常發生在廣角鏡頭上或者是魚眼鏡頭(fisheye camera),影像邊緣會有膨脹現象發生。例如:在拍團體照時,由於需要拍攝視角較廣的影像,通常會拉到廣角端拍攝,所以這時候就盡量往中間靠吧,不然廣角邊緣變形可能會讓你看起來又肥又胖。枕狀變形:則是常發生在望遠鏡頭上,效果是影像會向中心內凹的現象發生,但我用Nikon 70-300mm時,在300mm端枕狀變形並不明顯,可能要更長焦段的鏡頭比較容易看出。

為了解決光學鏡頭所帶來的缺陷,解決方法不外乎就是提升光學鏡頭材料或變更設計,但這類修正方法即費工又花錢;最簡易的方法就是,用後端軟體修正,而最簡單且最常用的修正distortion是下列公式,三階多項式扭曲修正模型

{ r }_{ d }={ r }_{ u }+{ k }_{ r }{ r }_{ u }^{ 3 }

{r}_{u}:undistortion radius,{r}_{d}:distortion radius。當{k}_{r} > 0for barrel distortion,{k}_{r} < 0for pincushion distortion。

這裡的r不一定要是距離影像中心的半徑值(radius),也可以分別針對x軸或y軸做修正。

{ x }_{ d }={ x }_{ u }\left( 1+{ k }_{ x }{ r }_{ u }^{ 2 } \right)

{ y }_{ d }={ y }_{ u }\left( 1+{ k }_{ y }{ r }_{ u }^{ 2 } \right)

►EXAMPLE

01_in   02_in

圖分別為 barrel distortion影像與 pincushion distortion影像,

藉由三階扭曲修正模型,帶入修正,得到的結果如下圖。

barrel parameters: { k }_{ x }=1.1e-06{ k }_{ y }=1e-07

pincushion parameters: { k }_{ x }=-1.6e-06{ k }_{ y }=-1e-07

01_in

                 Barrel Distortion Correction

02_out

               Pincushion Distortion Correction

Real Case : 

02     DistortionCorrection_1

基本上,三階方程式已經能處理大多數相機所產生的扭曲變形。但如果是不規則變型,像是wave或moustache(八字鬍)的扭曲,如下圖所示。(靠近影像中心是桶狀變形,靠近影像邊緣是枕狀變形),則需要用到五階多項式來修正。

{ r }_{ d }={ r }_{ u }+{ k }_{ 1 }{ r }_{ u }^{ 3 }+{ k }_{ 2 }{ r }_{ u }^{ 5 } (for wave/moustache distortion)

moustache distortion

至於魚眼修正....又是另一個topic了!需要Calibration Pattern輔助做修正。

 

 


information from: 

A Real-time FPGA Implementation of a Barrel Distortion Correction Algorithm with Bilinear Interpolation.(2003)

http://en.wikipedia.org/wiki/Distortion_%28optics%29

image formhttp://camera-wiki.org/wiki/Lens

Leave a Reply

Your email address will not be published. Required fields are marked *