国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種改進(jìn)的魚眼鏡頭圖像矯正算法

2018-10-19 09:29隆振海成都理工大學(xué)信息科學(xué)與技術(shù)學(xué)院
數(shù)碼世界 2018年9期
關(guān)鍵詞:魚眼球面定義域

隆振海 成都理工大學(xué)信息科學(xué)與技術(shù)學(xué)院

1.概述

魚眼鏡頭指視角接近或等于180°的鏡頭。這類鏡頭一般焦距極短,在135底片格式下,16毫米或焦距更短的鏡頭通常即可認(rèn)為是魚眼鏡頭,絕大部分的魚眼鏡頭均是定焦鏡頭,只有少部分是變焦鏡頭。依成像可分為圓形魚眼(Circular fisheye,又稱全周魚眼,畫面呈圓形)與對角線魚眼(Diagonal fisheye或Full-frame fisheye,畫面呈方形)其鏡面似魚眼向外凸出,所視的景物,像魚由水中看水面的效果。魚眼鏡頭一般用來拍攝廣闊的風(fēng)景或于室內(nèi)拍攝。不少攝影師喜歡使用魚眼鏡的夸張變形來營造透視感。歷史上,135畫幅最廣的魚眼鏡頭是藝康旗下的6毫米f/2.8,視角接近220°。而富士能研發(fā)了世界首臺用于五百萬像素CCD攝像機(jī)的185°廣角全方位鏡頭魚眼圖像的畸變矯正一直都是今年來的熱點(diǎn)問題,其中的代表性方法是球面透視投影矯正法該方法使用球形的投影面用于矯正魚眼圖像,以此為基礎(chǔ)的衍生或改進(jìn)方法還有許多。

OpenCV中已經(jīng)集成了一種基于球形投影面的魚眼鏡頭矯正算法函數(shù),有需要的用戶只需要直接調(diào)用函數(shù)即可。但實(shí)際上,由于OpenCV的實(shí)現(xiàn)所依賴的公式的局限性,其函數(shù)不能處理視角大于180度的魚眼鏡頭所提供的圖像。

在OpenCV提供函數(shù)的基礎(chǔ)上,本文提出了一種改進(jìn)算法,該算法可以對視角大于180°的魚眼鏡頭圖像進(jìn)行高效處理且得到準(zhǔn)確的矯正結(jié)果。

2.OpenCV算法

在OpenCV4.0預(yù)覽版的算法文檔中,可以看到OpenCV對其使用的魚眼鏡頭圖像矯正算法的細(xì)節(jié)描述。該算法首先將圖像平鋪在球心為原點(diǎn)的半球面上,矯正視點(diǎn)O位于原點(diǎn);此時對于圖像上的每一個點(diǎn)P,都有一個三維坐標(biāo);定義點(diǎn)P的a,b值分別為a=x/z,b=y/z;其中x、y、z為點(diǎn)P的三維坐標(biāo)值;定義r = a * a + b * b;定義θ = atan(r);使用公式θd=θ(1+k1θ2+k2θ4+k3θ6+k4θ8)對θ進(jìn)行矯正,其后可以得出P點(diǎn)矯正后的位置為x’,y’,其值為x′=(θd/r)a y′=(θd/r)b,如圖 2-1 所示。

由該定義可見,OpenCV的做法上是以半球面與z軸的交點(diǎn)為中心O‘,將球面上的點(diǎn)P按照與O’的球面距離展開在平面上,同時對距離進(jìn)行矯正從而獲得矯正圖像的效果。如圖2-2所示,P為球面上一點(diǎn),P‘為P點(diǎn)矯正后的位置,以點(diǎn)O’為圓心的圓即為半球面上圖像矯正后范圍,由于使用了反正切函數(shù),該方法并不能正確處理另外半球的圖像。

圖2 -2 OpenCV算法原理示意圖

3.基于OpenCV算法的改進(jìn)

OpenCV算法使用了反正切函數(shù)以求得弧對應(yīng)角度,從而求取弧長。但在具體實(shí)現(xiàn)上,OpenCV使用了反正切函數(shù)來求取弧PO‘的長度。反正切函數(shù)是一種反三角函數(shù),是利用已知直角三角形的對邊和鄰邊這兩條直角邊的比值求出其夾角大小的函數(shù),是一種基本特殊函數(shù)(Wiki)。在三角學(xué)中,反正切被定義為一個角度,也就是正切值的反函數(shù),由于正切函數(shù)在實(shí)數(shù)上不具有一一對應(yīng)的關(guān)系,所以不存在反函數(shù),但可以限制其定義域。因此,反正切是單射和滿射也是可逆的,但不同于,反正弦和反余弦,由于限制正切函數(shù)的定義域在[-π/2,π/2],其值域是全體實(shí)數(shù),因此可以得到反函數(shù)的定義域也是全體實(shí)數(shù)。

故而當(dāng)弧PO’對應(yīng)的圓心角大于90度,即此時需要對視角超過180度的圖像進(jìn)行矯正時,反正切函數(shù)將不能得出準(zhǔn)確的值。因而,這種方法也不能用于矯正視角超過180度的魚眼鏡頭圖像。為此,本文提出利用極坐標(biāo)計(jì)算弧對應(yīng)的圓心角,避免反正切函數(shù)的使用,從而將矯正范圍從[-π/2,π/2]擴(kuò)大到[-π, π](如圖3-1所示)。

圖3 -1 改進(jìn)算法流程圖

4.結(jié)論

OpenCV中已經(jīng)集成了一種基于球形投影面的魚眼鏡頭矯正算法函數(shù),有需要的用戶只需要直接調(diào)用函數(shù)即可。但在具體實(shí)現(xiàn)上,OpenCV使用了反正切函數(shù)來求取弧PO‘的長度。由于限制正切函數(shù)的定義域在[-π/2,π/2],這種方法并不適用于矯正視角超過180度的魚眼鏡頭圖像。本文提出一種改進(jìn)的魚眼鏡頭圖像矯正算法,利用像素點(diǎn)在球面上的極坐標(biāo)直接計(jì)算出弧長,避免了正切函數(shù)的使用,從而將矯正范圍從[-π/2,π/2]擴(kuò)大到[-π, π]。

猜你喜歡
魚眼球面定義域
面向魚眼圖像的人群密度估計(jì)
如何求抽象函數(shù)的定義域
中國“天眼”——500米口徑球面射電望遠(yuǎn)鏡
基于球面聚焦超聲可燃工質(zhì)空間定位著火研究
抽象函數(shù)定義域的四種類型
球面距離的幾種證明方法
微信掃一掃馬上看視頻魚眼視頻 小程序每天帶你看最有意思的攝影視頻
Poincare映射的定義域
歸納復(fù)合函數(shù)定義域的求法
魚眼明目魚頭補(bǔ)腦是真的嗎?
大埔区| 肇东市| 蚌埠市| 赤峰市| 阜新市| 佛坪县| 舞阳县| 贵定县| 黄浦区| 平顶山市| 正蓝旗| 章丘市| 聂拉木县| 双桥区| 南宫市| 富川| 伽师县| 辛集市| 健康| 乐东| 彰化市| 阿图什市| 长岭县| 阿拉善右旗| 新沂市| 库尔勒市| 麻江县| 沅江市| 开化县| 晋中市| 富源县| 伊金霍洛旗| 松江区| 尼木县| 进贤县| 瓦房店市| 阳新县| 凌云县| 博爱县| 崇仁县| 弋阳县|