魚眼圖像由視場角接近180度甚至大於180度的鏡頭拍攝得到,圖像周圍畸變嚴重,通過經緯法將魚眼圖像展開是一個不錯的方法。魚眼鏡頭可以視為一個半球,經緯法按照球面貼圖的類似思想將圖像以球面形式展開。
以下面這幅魚眼圖像為例:
視場角假設為180度,如果按照球的北極點(南極點)為圖像的中心,展開后會是這個樣子:
圖像中心為北極點
圖像中心為南極點
當然這樣做是不行的,所以需要把球繞x軸旋轉90度后展開,這樣球的北極點就是圖像的邊緣,赤道就是圖像的中心,結果如下,球的另一面填充為0:
如果把視場角設置的大於180度,大概會是這樣
利用反向映射+雙線性插值得到最終經緯度圖像。代碼在此:https://git.oschina.net/rxdj/DewarpFisheye.git,代碼文件是DewarpFisheyeImg.cpp
既然魚眼可以轉換到經緯度,經緯度也可以轉換到魚眼,簡單寫了一個代碼,也放在上面的鏈接中,代碼文件是warpFisheyeImg.cpp。
效果如下:
經緯度圖
轉換到魚眼