李江華,李恩德
(江西理工大學(xué) 信息工程學(xué)院,江西 贛州 341000)
近年來,各個領(lǐng)域?qū)τ谟嬎銠C視覺技術(shù)的應(yīng)用日愈廣泛.尤其在機器人視覺及視頻監(jiān)測領(lǐng)域,更寬的視野是基本需求,機器人視覺需要對盡可能大的視野內(nèi)的目標做出實時而準確的判斷來獲取導(dǎo)航信息.除了在機器人視覺領(lǐng)域,在大單位視頻監(jiān)控及虛擬實景等領(lǐng)域中,魚眼鏡頭因其特有的大視角所形成的寬視場的優(yōu)勢,基于魚眼的成像系統(tǒng)受到越來越多的關(guān)注[1].然而由于魚眼相機引入了徑向畸變,魚眼圖像除中心小部分區(qū)域外都存在失真,這不同于正常人類視覺習(xí)慣.為從魚眼鏡頭攝像機獲得一幅普通的矩形圖像,恢復(fù)實際場景問題則需要對魚眼圖像進行校正,準確的魚眼扭曲校正至關(guān)重要.魚眼圖像的校正方法一般分為基于標定的校正法和基于投影變換模型.其中基于投影變換模型的校正法是尋找一種能夠?qū)⑶蛎鎴D像映射到平面圖像的方法.基于標定的校正方法需要建立對于鏡頭的復(fù)雜數(shù)學(xué)模型,同時需要對設(shè)備進行標定,甚至需要相機的內(nèi)部參數(shù),校正成本高且對于人眼視覺觀察并無顯著提升.
為簡化傳統(tǒng)校正算法復(fù)雜度,提高校正后的視覺效果及提升校正算法的可行性和有效性,使魚眼圖像更符合人類視覺習(xí)慣同時盡可能全面的獲取魚眼圖像內(nèi)完備客觀的物景信息,國內(nèi)外相關(guān)領(lǐng)域研究人員提出了一系列有價值的算法.
Stenfan Hensel[2]等人通過結(jié)合對校正參數(shù)的估計,對魚眼圖像的徑向畸變進行校正,實驗結(jié)果驗證了此算法在針對特定畸變問題方面的可行性.Zhang[3]等人在建立橢圓函數(shù)模型的基礎(chǔ)上初步校正魚眼圖像,其次將橢圓函數(shù)模型中的參數(shù)進行調(diào)整從而對圖像進行修正以獲得更好的校正效果.Zhang[4]等人通過分步校正方法.第一步將經(jīng)緯度校正以自適應(yīng)的形式進行展開,進而利用霍夫變換檢測直線,其次,以統(tǒng)一性優(yōu)化直線方向檢查直線從而以獲得校正圖像,實驗結(jié)果表明,此算法在主要視野內(nèi)物體完整且線條自然方面取得較好校正效果.上述方法在魚眼圖像的邊緣效果、算法適應(yīng)性以及效率方面都存在著局限性,對于魚眼圖像的完整性保持方面也不夠理想.如橢圓函數(shù)模型在校正過程中造成魚眼圖像中心畫面的缺失.魚眼圖像映射到橢球面,再將半球面的像素點根據(jù)特定的映射關(guān)系映射到平面上.而在此過程中,邊緣部分的損失較大,對于邊緣物景的缺失必定影響信息的獲取.
Tien-Ying Kuo[5]等人利用加權(quán)聯(lián)合殘差細化獲得更好的畸變參數(shù)并產(chǎn)生更準確的魚眼失真圖像,經(jīng)過驗證表明該方法可以充分校正徑向變形和拉伸邊界的魚眼圖像,但是此算法在設(shè)計中存在算法復(fù)雜度過高,時間復(fù)雜度較大,實現(xiàn)較為繁瑣.Ma[6]在通過改進傳統(tǒng)經(jīng)度坐標校正,提出了一種通過位置不同求取不同圓心坐標與半徑的算法,有效校正了桶形畸變.Si[7]針對畸變問題,在經(jīng)線模型的基礎(chǔ)上提出改進算法.該算法在經(jīng)線模型基礎(chǔ)上以校正算法和修正算法兩部分進行,改進算法校正后通過半圓模型修正校正圖以達到理想效果.此算法摒除繁瑣過程,以整體模型實驗以取得理想結(jié)果.Zhao[8]等針對不同區(qū)域畸變率不同,劃分魚眼圖像有效區(qū)域,該算法改善圖像橫縱畸變問題,同時存在邊緣模糊,邊緣區(qū)域信息缺失的問題.Wei[9]針對魚眼圖像桶形畸變大的問題,通過地球儀經(jīng)緯線的思想加以改進以得到雙經(jīng)度球面,經(jīng)過相應(yīng)的映射公式將圖像轉(zhuǎn)換,再建立與圖像對應(yīng)的異向經(jīng)度坐標體系,在此基礎(chǔ)上展開映射圖以得到完整校正圖,然而此算法通過引入極點來映射時會對極點附近的邊緣部分拉伸嚴重.
故本文在上述前提下,在球面透視投影和經(jīng)緯映射的基礎(chǔ)上,對模擬鏡頭球面進行了改進,同時為應(yīng)對魚眼圖像邊緣部分校正后仍存在一定量失真的問題,提出了相對應(yīng)的邊緣部分校正算法與之結(jié)合,針對邊緣部分進行修正,解決了魚眼圖像畸變問題.
在魚眼相機成像的過程中普通相機與魚眼相機存在較大差別,其中在于相機視角達到往常相機不能達到的視野時,圖像趨于無窮大,于是魚眼相機為滿足相應(yīng)要求從而產(chǎn)生一定量的畸變,且主要為徑向畸變[10].魚眼圖像點與空間點成像關(guān)系可以總結(jié)如圖1所示.
圖1 魚眼鏡頭成像模型Fig.1 Fisheye lens imaging model
其中x點與xoy平面的點m的映射過程即為魚眼圖像的成像過程.成像后的平面上m與成像中心o的距離稱之為像高.像高的多少取決于投影成像模型函數(shù)[11].魚眼成像過程中投影函數(shù)以及其表達式如下所示:
等距模型:r=fθ
(1)
等立體角投影模型:r=fsin(θ/2)
(2)
正交投影模型:r=fsinθ
(3)
體視投影模型:r=ftan(θ/2)
(4)
其中:θ是鏡頭光軸與入射光線的夾角,r是成像點到圖像主點的距離亦即像高,f為焦距.本文中,利用等距模型作為魚眼圖像成像投影模型.
由于上述魚眼圖像的成像原理,魚眼圖像在成像的過程中在垂直和水平方向都發(fā)生了一定量的畸變,邊緣部分的畸變尤其明顯.
傳統(tǒng)的球面透視投影模型由英向華,胡占義[12]提出,其基本原理為建立空間直線與畸變魚眼圖像上相對應(yīng)曲線的映射關(guān)系,且該映射為球面大圓.如圖1所示,q是球面點,其坐標為q(θ,φ),與畸變圖像點的關(guān)系如下:
(5)
以畸變中心建立極坐標以表示畸變點的r與θ1.選取合適的點進行擬合,進而得到畸變圖像點到單位球面的映射關(guān)系,即求出公式(5)中的參數(shù)最優(yōu)值.在獲得魚眼圖像映射的單位球面后,下一步為建立球面的外切正方體,將球面點映射到正方體的各個表面.
在魚眼圖像的校正過程中,所有工作的前提是將畸變魚眼圖像的有效區(qū)域提取出來,并同時計算出魚眼圖像有效區(qū)域的半徑和畸變中心用于下一步的圖像校正.魚眼圖像的有效區(qū)域的傳統(tǒng)提取算法有面積統(tǒng)計法,最小二乘擬合法,區(qū)域增長法和掃描線逼近法[13-15]文在已有提取算法的前提下,利用掃描線逼近法的思想加入中垂線的作用,以縮短提取時間,增加提取效率為目的,對提取過程進行改進.提取算法示意圖如圖2所示.
圖2 提取算法示意圖Fig.2 Extraction algorithm diagram
在提取過程中,第一步先將設(shè)置一個合適的閾值[16]將魚眼圖片二值化處理,在此基礎(chǔ)上設(shè)置第二個掃描閾值,以逐行逐列掃描法從圖片左方開始進行掃描,確定魚眼圖片左切點后過此切點做魚眼圖像的左邊界的垂線,在此垂線上做像素點的遍歷,通過掃描閾值確定右切點.在確定左右切點之后,做此條線段的中垂線,以相同方式確定上下切點.以n·m的魚眼圖片為例,此種魚眼圖像提取方法計算量為:
n·(m-2R)/2+(n-2R)-(m-2R)/2
(6)
3.2.1 中心區(qū)域映射關(guān)系
本文通過改進提取算法提取到魚眼圖像有效區(qū)域以及其半徑和畸變中心后,提出改進的雙垂面魚眼圖像校正方法,具體流程如下:
第1步找到魚眼圖像的畸變點(x,y),將其轉(zhuǎn)化為極坐標形式(r,α).假設(shè)魚眼鏡頭的半視角為θm,入射角為θ.
θ=r·θm/R
(7)
假設(shè)球面半徑為Rλ,球面上各點的坐標(θ,α),如圖所示,其直角坐標為(x,y,z),將球面上各個點的坐標轉(zhuǎn)換成經(jīng)緯度坐標(θ′,φ′).
第2步將球面圖像映射到平面圖像上,在以往算法理論中往往需要在球面周圍建立外切正方體,以映射到各個正方體的表面上,不同角度范圍的點映射到不同的正方體表面上,最后再進行拼接.本文中,為避免繁瑣的計算過程以及圖像拼接的過程,首先采用主視圖基于三角計算的雙垂面映射法.如圖3所示.
圖3 雙垂面示意圖Fig.3 Double vertical plane圖4 映射圖Fig.4 Map
首先本文以互相垂直的兩個映射面中一個面進行算法解釋,如圖4所示.
有任一點位于球面,在已確定的球體中心o周圍存在圓面與平面ABCD,平面ABCD為映射平面,連接圓面上點與球中心可得ok′相交于點k,k是球面點k′在平面上的投影點.根據(jù)如上映射關(guān)系,可找到球面圖像到平面圖像之間的映射關(guān)系.假設(shè)k在平面上的點坐標為(x,y),圖中線段EF的中點為M,N是線段HI的中點,EF//HI,KQ//MN.平面圖像長度為h1,寬為w1,球面圖像長度為h2,寬為w2,ΔMOK和ΔMOE為直角三角形,圓心角∠KOE=∠MOE-∠MOK.由圖中可知,MN=y-h1/2,NO=lNO根據(jù)勾股定理可得MO的長度:
(8)
由三角幾何關(guān)系可得:
(9)
故KE對應(yīng)的弧長為:
(10)
同理,在縱軸方向上QN=w1/2-x,NO=lNO,同樣根據(jù)三角幾何關(guān)系可得:
(11)
故KQ對應(yīng)的弧長為:
(12)
以上通過建立校正關(guān)系逐個將經(jīng)緯坐標點映射至平面圖像,同樣地,另外一個與此映射面互相垂直的映射面以相同的方法映射相對應(yīng)的球面圖像部分.
3.2.2 調(diào)整參數(shù)
在傳統(tǒng)校正算法中,球面半徑一般等于魚眼圖像半徑或者是以單位一作為半徑進行計算,但是本文考慮到現(xiàn)實中存在的誤差,為了更好的進行球面映射,使得到的球面映射圖更客觀,校正效果更好,本文采用可調(diào)整參數(shù)來設(shè)置球面半徑.
本文得到球面的方法為選取原始圖像上的一條弧線,在其上選取若干點進行直線擬合,在本文中,利用最小二乘法進行直線擬合.為獲取更合適的球面半徑,文中引入相關(guān)系數(shù)rΔ作為評價指標.
(13)
3.2.3 邊緣校正
本文在校正完魚眼圖像的主視圖區(qū)域后,針對邊緣部分的校正采用邊緣部分動態(tài)視野經(jīng)緯校正法對邊緣畸變部分進行校正,以滿足更好的整體校正效果.
魚眼畸變圖像邊緣部分如圖5所示.
圖5 邊緣示意圖Fig.5 Edge diagram
相對于傳統(tǒng)校正法中將映射面進行固定而言,本文將映射面進行動態(tài)可調(diào)整化處理改進.引入angle變量對主視圖以及邊緣部分進行控制,建立映射面與angle的關(guān)系,同時對邊緣部分進行區(qū)域整合.已知映射面的寬度為w1,建立起與angle的關(guān)系:
w1=lNO·(2·tan(angle·π/360))
(14)
在此基礎(chǔ)之上,尋找各個參數(shù)之間最合適的關(guān)系,建立對于邊緣部分與主視圖部分最優(yōu)的校正效果.
對于橫軸上面的畸變,可將其看作在緯線上的畸變,將不同的緯線看作在同一條軸上的同心圓Oi,設(shè)畸變點所在緯線的圓心z坐標為zi,則此圓的圓心坐標為Oi(x0,y0,zi),此圓半徑為:
(15)
在此緯線圓上,假設(shè)畸變點坐標為(a,b),校正點為(u,v),圓心點在zi面上為(x0,y0),根據(jù)幾何關(guān)系可得:
(16)
整理可得:
(17)
以上畸變點的校正均在z=zi平面上,故z坐標均為zi.
對于在縱軸上面的畸變,可將其看作經(jīng)線上的畸變,將不同經(jīng)線所圍成的同心圓上的畸變點進行校正,同樣地,與緯線圓上的校正相比,在幾何關(guān)系上相同,然而圓的大小不變,圓心與半徑始終保持相同,畸變點與校正點的關(guān)系可表示為:
(18)
本文通過以上邊緣畸變部分的經(jīng)緯校正法對主視圖以外的邊緣部分進行了校正,與上文中主視圖的校正相輔相成,達到對畸變圖像的整體校正.
本文在校正過程中,考慮到后向映射的特點相對于其相反過程的映射在像素賦值時更加有效且存在問題更少,故在文中采用從結(jié)果到問題的后向映射[17].通過建立校正關(guān)系得到校正前后坐標點轉(zhuǎn)換后因為映射的原因,校正后坐標出現(xiàn)非整值點的問題,故需要經(jīng)過插值算法填充相應(yīng)點[18].在圖像校正過程中常見的插值方法主要有最鄰近插值、雙線性插值、三次卷積插值,其中雙線性插值[19]相對其他兩種在時間復(fù)雜度和計算復(fù)雜度方面都有一定優(yōu)勢,故本文采用雙線性插值來對坐標變換后的圖像進行插值運算.
圖6 雙線性插值Fig.6 Bilinear interpolation
雙線性插值方法以不同方向分別插值為其基礎(chǔ),過程示意圖如圖6所示.
N點為待插值點,Maa、Mab、Mbb、Mba為與N相鄰的4個點,在橫坐標軸方向上第一次插值運算,過程為:
(19)
在此結(jié)果上在豎直方向進行以上述相同的過程:
他直起身子,身旁是橫七豎八睡著的兵士。宿晚勾起嘴角,笑容苦澀。是啊,夢中的一切是多么溫暖,溫暖得不真實。
(20)
根據(jù)上述兩個方向的相同過程,可得:
(21)
經(jīng)過插值運算填充匹配,最終完成校正圖像的描繪.
文中實驗在Matlab2019a與QT平臺進行實驗操作,選取尺寸在標準測試魚眼圖像作為實驗圖像.在本部分對文獻[6]、文獻[8]以及文獻[12]中的算法與文中算法進行了性能比較.
文中實驗首先對實驗圖片的有效區(qū)域進行個提取,利用本文第三節(jié)中改進的魚眼有效區(qū)域提取算法將原始魚眼圖像的有效區(qū)域進行提取.本文在保證提取效率的同時,因考慮到提取精度對于整體實驗而言至關(guān)重要,為驗證本文提取算法的提取精度,首先利用文中改進的提取算法與傳統(tǒng)的掃面線逼近法對同一副魚眼輪廓圖像有效區(qū)域進行提取以進行對比實驗,同時對有效區(qū)域半徑與圓心進行測量.如圖7所示,對于同一個圓的提取,本文提取算法用時0.37s,傳統(tǒng)提取算法用時1.27s,同時在提取精度方面占據(jù)優(yōu)勢.
圖7 魚眼圖像輪廓提取圖Fig.7 Bilinear interpolation
然后對圖像的主視圖進行校正,同時在大視角的魚眼圖像中,邊緣校正更顯重要,第一步操作后,利用角點檢測得到魚眼圖像上一定個數(shù)的樣點,以相關(guān)系數(shù)為參考標準求得最合適的Rλ和angle值.為驗證算法有效性,使用兩幅不同的魚眼圖片在不同angle下對算法進行驗證,如圖8所示.
在求得最合適的半球面半徑以及angle后,對魚眼圖像進行校正,圖9(b)為提取后的魚眼圖像有效區(qū)域,分別利用
圖8 不同angle校正示意圖Fig.8 Diagram of different angle correction
圖9 校正結(jié)果示意圖Fig.9 Calibration result diagram
由圖9可以看出,與已有算法相比,本文算法在校正效果上更優(yōu),對于水平方向的畸變校正效果明顯,同時對于邊緣物體的捕捉更加全面,減少了圖片中有效信息的損失,更好的改善了視覺效果.
以圖9作為評價標準,分別從畸變角度與結(jié)構(gòu)相似度以及算法運行時間放面進行算法比較,通過數(shù)據(jù)分析本文算法的有效性和可行性,如表1所示.
其中結(jié)構(gòu)相似度是以數(shù)值表示的方式反映兩幅圖像在結(jié)構(gòu)方面的異同,圖像中物體的結(jié)構(gòu)細節(jié)以及輪廓的相似程度可由其量化表示,這個量化的數(shù)值趨于1表征兩幅圖像在相似性方面愈接近,在本文中,通過比較未畸變源圖像與校正圖像的結(jié)構(gòu)相似性對比來進行校正算法的評定,結(jié)構(gòu)相似性計算公式為:
表1 算法性能比較Table 1 Algorithm performance comparison
SSIM(f,g)=l(f,g)·c(f,g)·s(f,g)
(22)
式中f、g分別表示未畸變源圖像,和校正后的圖像,l表示亮度變化,c表示差異變化,s表示結(jié)構(gòu)變化.
從表1可以看出,本文算法相對于文獻[6]與文獻[8]以及文獻[12]中的算法,平均畸變角度更小,在對圖片中景物的校正更加理想,更加符合現(xiàn)實,對于魚眼圖片信息的恢復(fù)要優(yōu)勝于其他對照組算法.
為驗證邊緣校正效果,是否囊括必要的邊緣信息,從而實現(xiàn)更準確客觀的校正圖像,以及經(jīng)過改進的球面半徑參數(shù)對于校正圖片質(zhì)量的改良,本文引入圖像邊緣熵指標[20]與近似信噪比概念來對改進算法的性能進行評價.其中圖像邊緣熵標書了圖像邊緣的信息平均持有量,是一種表征邊緣部分信息量的統(tǒng)計形式,圖像邊緣熵越大,說明邊緣校正效果越好,圖像熵的公式為:
s=-∑f(i,j)lgf(i,j)
(23)
f(i,j)為在(i,j)點這個灰度的概率值.近似信噪比則根據(jù)信噪比在圖像中的意義,以一種近似的方式,對校正后的圖像質(zhì)量進行衡量,其公式可表達為:
s/n=10 lg(ps/pn)
(24)
將pn近似為圖像的標準差與均值的差值,ps為圖像的均值.實驗結(jié)果如表2所示:
表2 算法性能試驗結(jié)果Table 2 Algorithm performance test results
在與自身未畸變源圖像的比較中,本文利用結(jié)構(gòu)相似度公式進行比較,從表1中可看出,經(jīng)過本文校正算法校正得出的圖片在結(jié)構(gòu)方面更加貼合源圖像,從而說明校正效果更好.同時為保證校正算法的可行性,本文在驗證時通過算法的運行時間來進行比較,本文算法經(jīng)過改進的提取魚眼圖像有效區(qū)域的算法,在校正時間上大大提高,相對于文獻[6]中2.72s的校正時間和文獻[8]中1.71s的校正時間以及文獻[12]中2.86s的校正時間,本文算法在增加算法復(fù)雜度的同時,卻沒有顯著增加時間復(fù)雜度,本文校正算法效率更高.如表2所示,文中改進算法在增加提取與校正效率,實現(xiàn)實時快速校正的前提下,并沒有損失過多的圖片質(zhì)量,同時對魚眼圖像邊緣部分的校正更加準確有效,涵蓋了更多地細節(jié),同時更符合人眼觀察習(xí)慣,對于人們于魚眼圖像中攝取有效客觀信息的目的有更大幫助.通過各個方面性能的比較,可以看出本文改進算法在魚眼圖像校正方面更具有可行性和有效性.
針對現(xiàn)階段魚眼圖像校正算法的需求以及現(xiàn)階段算法中存在的問題,提出一種快速的魚眼圖像有效區(qū)域提取技術(shù)以及改進的映射校正方法.快速提取算法通過遍歷垂直平分線的思想,進一步縮短了提取有效區(qū)域的時間復(fù)雜度;改進的校正方法針對邊緣部分校正的不足,通過對邊緣部分范圍進行參數(shù)控制,進一步對邊緣部分進行了較好的校正,更大程度上保留了原圖片內(nèi)容信息;算法通過融合三角計算以及參數(shù)變換,在保證魚眼圖像主視圖校正效果更好的前提下,使映射面與魚眼圖像匹配,同時使用雙線性插值對校正后的圖像進行填充,實現(xiàn)魚眼圖像的快速提取以及校正.實驗結(jié)果表明,文中算法在邊緣部分的校正上有顯著提高,并且校正效果更好,更符合人類視覺習(xí)慣,畸變角度明顯減小,與未畸變源圖像相比,結(jié)構(gòu)相似性高,邊緣信息保留程度高,校正圖片質(zhì)量高,同時算法運行時間縮短近50%,具有較好的可行性和有效性.