祁自建,聶亞杰,張嘉偉
(中國船舶集團有限公司第七一八研究所,河北 邯鄲 056027)
隨著科技的進步,魚眼鏡頭被廣泛應用于視頻監控、自動駕駛和醫療檢測等領域。然而魚眼鏡頭捕獲的圖像不適用于為大多數透視圖像設計的計算機視覺技術,如目標追蹤、運動估計、場景分割等任務[1]。因此,魚眼圖像的校正問題成為了研究熱點。
在魚眼鏡頭出現后的幾十年間,人們嘗試用各種校正算法校正魚眼圖像。基于投影模型的魚眼圖像校正算法有兩種不同模型:一種是球面投影模型,另一種是拋物面投影模型。運用球面投影模型校正魚眼圖像的關鍵是找到魚眼圖像的光學中心和球面模型半徑,但在實際應用中兩者很難被找到。一般都是假設圖像的中心點為該圖像的光學中心,半徑取魚眼圖像中有效圓形區域的半徑。拋物面模型復雜,在實際應用中模型實現困難。楊玲等[2]提出一種應用經緯映射的魚眼圖像校正方法,不需要標定參數即可將半球魚眼圖像校正為正常圖像;Kannala 等[3]假設圖像光心到投影點的距離和投影光線與主軸之間夾角的多項式存在比例關系,是目前比較受歡迎的模型;廖士中等[4]通過選取圖像中合適的控制點,然后利用多項式和雙線性插值方法進行魚眼圖像校正。
基于標定的校正算法主要是通過外部設備對魚眼相機的內外參數進行標定,借助標定板,通過標定板的真實坐標與魚眼成像平面坐標之間的坐標轉換,實現魚眼圖像校正。該方法校正精度高,但對實驗設備精度要求高[5]。Chan 等[6]提出一種改進的自動棋盤檢測算法,以避免原始約束和用戶干預,然后采用自適應自動角點檢測,將魚眼成像函數用泰勒技術展開,根據最大似然準則進行非線性細化,完成魚眼圖像的標定與校正;Radka 等[7]提出一種用于魚眼標定的非中心模型,該模型是對之前中心模型的擴展,使用該模型不需要提供詳細的魚眼鏡頭參數;Lu 等[8]提出一種魚眼鏡頭無模型校正方法,即基于單幅圖像的啟發式B-spline 模型;吳軍等[9]以待標定魚眼相機近似垂直棋盤格獲取的單張影像為對象,通過橢圓輪廓約束、滅點約束等多種幾何約束分階段求解相機參數;皮英東等[10]利用直接線性變化DLT 和魚眼影像上標定的控制點信息快速求解球面投影參數。
卷積神經網絡的出現給魚眼圖像校正帶來了新的解決方案,Rong 等[11]在模擬魚眼圖像數據集上訓練Alexnet,將魚眼圖像畸變參數分為401 類,通過網絡獲取畸變參數來糾正失真圖像,但有限的離散參數導致訓練后的網絡在復雜的魚眼圖像校正上表現不佳;Yin 等[12]提出一種上下文協作網絡,在網絡中添加高維特征和語義特征,但由于高維特征、語義特征只能提供有限信息,在魚眼圖像校正中效果較差;薛村竹[13]提出一種明確的幾何約束用來改善魚眼圖像的網絡感知,該網絡依靠魚眼中曲線校正后應該為直線的假設,對于圖像中線段較少的網絡校正效果差,而且需要邊緣標簽、失真標簽和正常圖像的多個標簽,針對邊緣標簽的邊緣網絡還要進行預訓練;Sha 等[14]通過簡化拋物線模型,將其與神經網絡結合在一起進行魚眼圖像校正,并在網絡中增加圖像超分辨率結構,以解決校正圖像分辨率較低的問題;李有強[15]提出一種基于卷積神經網絡的魚眼鏡頭標定方法,該方法通過改進U-Net 網絡校正魚眼圖像圓弧坐標作為前置網絡,然后通過殘差網絡進行魚眼鏡頭內部參數預測,獲得參數后再根據立方盒展開原理對圖像進行校正展開;Nobuhiko 等[16]通過神經網絡學習視場超過180°的魚眼圖像的外在參數(傾斜、滾動角)和內在參數(焦距),完成參數學習后進行魚眼圖像校正。
基于生成的方法主要是通過生成對抗網絡(Generative Adversarial Network,GAN)直接生成校正圖像。Liao等[17]提出自動校正徑向失真生成對抗網絡,該網絡是第一個用于徑向失真校正的對抗網絡,采用無監督的學習方式,通過學習失真圖像與正常圖像的分布,讓失真圖像的分布通過網絡后逐漸靠近正常圖像的分布。然而,該網絡在同時重建圖像內容和結構方面負擔過重,導致校正后的圖像內容模糊,圖像結構無法完全校正。之后Liao 等[18]又提出一種針對單張圖像,不區分生成魚眼圖像的模式進行失真校正的方法,主要是將魚眼圖像的生成模型統一到失真校正圖像上,圖像上每一個點代表當前位置的失真程度,該方法更準確地對扭曲的結構進行了校正。然而,使用GAN 進行校正時,級聯網絡容易導致圖像細節丟失,一般跳躍連接會導致失真擴散。Yang 等[1]針對跳躍連接帶來較大誤差的問題,將特征級校正引入網絡,在生成網絡的不同層中使用外觀流對圖像特征進行校正,以此減少跳躍連接帶來的誤差。
綜上可知,基于深度學習的魚眼圖像校正算法都聚焦在GAN 網絡,而GAN 網絡存在跳躍連接帶來的誤差增大問題。本文通過在生成網絡的編碼器中添加畸變參數預測模塊,并將預測的畸變參數嵌入到生成網絡的解碼器中,以此減少跳躍連接帶來的誤差。最后通過實驗對比,分析其在數據集上的表現。
生成對抗網絡是2014 年由Goodfellow 等[19]提出的一種新型神經網絡結構,主要結構如圖1 所示。其包含生成器G 和判別器D,生成器的主要任務是生成能夠欺騙判別器的圖像,讓判別器無法判斷是生成器生成的圖像還是真實存在的圖像。判別器的任務則是盡量識別出圖像是生成的還是真實存在的。

Fig.1 Generative adversarial network architecture圖1 生成對抗網絡結構
在網絡訓練期間,生成器努力生成可欺騙判別器的圖像,而判別器試圖識別出由生成器生成的“假圖像”。兩個網絡互相交替訓練,因此該訓練過程被稱為對抗訓練。通過對抗訓練讓生成圖像的分布逐漸靠近真實圖像的分布,當判別器無法分辨真假圖像時,生成對抗網絡訓練完成,其訓練過程如下:
假設:pdata表示真實數據分布,pz表示生成器分布,x 表示從真實分布采樣的樣本,z 表示從生成器采樣的樣本。具體訓練過程為:①生成器G 是一個生成圖像的網絡,接收一個隨機噪聲z,通過該噪聲生成圖像,記作G(z);②D是一個判別網絡,判別一張圖像是否是真實的,其輸入參數x 代表一張圖像,輸出D(x)代表為真實圖像的概率。若為1,則代表100%為真實圖像;若為0,則代表不是真實圖像;③一般情況下是先多訓練幾次生成器,然后訓練判別器。重復幾次過后,得到最后的生成模型。
生成對抗網絡的損失函數如式(1)所示。式(1)中的min max 可以理解為更新判別器時需要最大化公式,更新生成器時需要最小化公式。這是一個尋找納什均衡的過程,尋找其最小、最大上界。

判別器模型參數更新時,對于來自真實分布pdata的樣本x 而言,希望D(x)的輸出越接近1 越好,即logD(x)越大越好;對于噪聲z 生成的數據G(z)而言,希望D(G(z))盡量接近0,即log (1 -D(G(z)))越大越好。
生成器模型參數更新時,希望G(z)盡可能與真實數據一樣,即pz=pdata,因此希望D(G(z))盡量接近1,即log (1 -D(G(z)))越小越好。
生成對抗網絡經過多年發展,已經演變出多種不同網絡,例如條件生成對抗網絡,將無監督的生成對抗網絡變成半監督或者有監督的模型。深度卷積網絡近年來備受研究人員關注,董訪訪等[20]使用深度卷積神經網絡進行品牌服裝圖像檢索;程廣濤等[21]用深度卷積神經網絡進行煙霧識別。神經網絡中的池化層不可逆,深度卷積生成對抗網絡將對抗網絡與深度卷積神經網絡相結合,在下采樣過程中不使用池化層,而是選擇改變卷積層步長的方法進行下采樣,上采樣過程中的反卷積網絡也是采用改變反卷積層步長的方法進行上采樣。
在使用卷積神經網絡進行魚眼圖像校正時,要求數據集規模較大,因此數據集一般采用合成魚眼圖像的方式進行制作。合成魚眼圖像的映射形式包含兩種:除法模型與多項式模型。
1.2.1 除法模型
在圖像坐標系中,透視圖像上的任意點Pu(x,y)與圖像中心P0(x0,y0)的歐式距離可以表示為ru,Pu在魚眼圖像中有一個對應點Pd(xd,yd),Pd與畸變中心的距離表示為rd。ru與rd之間的映射關系除法模型如式(2)所示:

其中,ki為失真參數,通過改變ki的值來改變魚眼畸變程度。n是參數數量,一般來說,n越大,多項式次數越多,用多項式模型表示的畸變狀態就越復雜。圖2 展示的是正常圖像與除法模型生成魚眼圖像之間的對比,圖中左邊部分為正常圖像,右邊部分為除法模型生成的魚眼圖像。
1.2.2 多項式模型
與除法模型相比,多項式模型在設計入射光角度方面更為特殊。入射光角度與光透鏡角度之間的關系如式(3)所示,θu表示入射光角度,θd是光通過透鏡的角度。


Fig.2 Comparison of normal image and image generated by the division model圖2 正常圖像與除法模型生成圖像對比
魚眼圖像一般有4 種投影模型,分別是正交投影模型、等距投影模型、球面透視投影模型、等立體角投影模型[22]。在使用多項式模型生成魚眼圖像時,選擇等距投影模型,rd和θd滿足等距投影關系,其中rd=f·,f是魚眼相機的焦距。對于針孔相機,投影模型應該是rd=f·tanθd,簡化得到式(4):

ru與rd之間的關系如式(5)所示:

將ki和f合并得到式(6),在生成魚眼圖像時主要考慮k的取值:

為了簡化模型,本文采用單參數多項式方法生成魚眼圖像數據集。因為模型中有參數預測網絡,并將預測的參數嵌入到后面的模型中。原圖像從包含400 多種場景的Places 數據集中進行選擇,圖像大小為256×256,本文的魚眼圖像訓練集包含38 400 張圖像,測試集包含2 560 張圖像。單參數K 的取值范圍為10-4~10-6[9]。
在圖3 中,左邊為背景圖像,中間為原圖像,右邊為單參數生成的魚眼圖像,可以看到制作出來的魚眼圖像與真實圖像以及原圖像之間在內容上有一定差別,內容上縮小了,原因是在生成魚眼圖像時,原圖像中的部分像素會丟失。為使魚眼圖像與真實圖像之間的內容保持一致,在制作真實圖像時對原圖像進行部分切割[1]。

Fig.3 Comparison between single-parameter generated image,real image and original image圖3 單參數生成圖像與真實圖像以及原圖像之間對比
2.1.1 模型整體結構
模型整體結構如圖4 所示,包含3 部分,分別是生成網絡、判別網絡和參數預測網絡。生成網絡主要通過多層殘差網絡對特征進行提取,下采樣過程通過修改卷積網絡中的步長替代池化操作,通過編碼器不斷進行下采樣后獲得圖像特征,解碼器的殘差網絡則將編碼器的輸出以及參數預測網絡輸入的γ 參數進行結合,再進行多次上采樣操作得到生成圖像。上采樣操作是反卷積過程,編碼器與解碼器在每個殘差網絡中都有跳躍連接。

Fig.4 Overall structure of the network model in this paper圖4 本文網絡模型整體結構
參數預測網絡的輸入是編碼器最后一層的高維特征,通過自適應平均池化函數將每個特征圖的大小變成1×1,然后將上一步得到的多維張量變成一維張量,將一維張量通過全連接網絡進行參數預測,對預測的參數進行編碼后獲得畸變參數γ,并將畸變參數傳到生成網絡的解碼器殘差塊中。判別網絡接收生成網絡生成的圖像和真實圖像,真實圖像的標簽為1,生成圖像的標簽為0,對輸入圖像進行二分類,判別圖像真假。
2.1.2 殘差網絡模塊
殘差網絡模塊包含兩個卷積和一個激活函數,輸入與輸出維度保持一致。第一個卷積層的卷積核大小為3×3,第二個卷積層的卷積核大小為1×1,如圖5 所示。編碼器中的殘差模塊只有卷積和激活函數,不包括虛線框中的部分,解碼器殘差網絡模塊的輸出是將γ嵌入到輸出中。
2.1.3 判別網絡結構
判別網絡整體結構如圖6 所示,判別網絡將輸入的圖像不斷通過卷積網絡加激活函數的結構進行下采樣。卷積核大小選擇為5×5,卷積核個數分別為16、32、48、64、64,最后通過全連接層預測輸入圖像是正常圖像還是魚眼圖像。
2.1.4 損失函數
預測損失選擇L1 損失函數作為預測參數與真實參數之間的損失函數,減少異常值的懲罰項。N 為從訓練樣本中取樣的個數,Ppre為預測參數,Pgt為真實參數,LP為預測損失,如式(7)所示:

Fig.5 Residual block network structure圖5 殘差塊網絡結構

Fig.6 Discriminant network structure圖6 判別網絡結構

生成損失也選擇L1 損失,如式(8)所示,計算圖像與背景圖像每個通道、每個像素點之間的L1損失。

生成網絡的總體損失函數如式(9)所示:

判別網絡判斷真假圖像的問題可以看作是一個二分類任務,因此選擇二分類交叉熵損失(BCEloss)作為判別網絡的損失函數。
峰值信噪比(PSNR)用于評價重建圖像與背景圖像之間的相似度,其數值越高,兩個圖像之間的相似度越高。通過式(10)計算兩個圖像之間的均方誤差,然后通過式(11)計算PSNR。MAXI是圖像中可能最大的像素值,若使用8位表示像素,則MAXI的值為255。

結構相似性(SSIM)用于評價兩個圖像之間的相似度[23],該指標從對比度、亮度、結構3 個方面對圖像進行相似性比較。結構相似性值的范圍為[0,1],當值越靠近1,說明兩個圖像之間的相似度越高。計算SSIM 需要計算兩個圖像各自的均值,如式(12)所示:

標準差的計算公式如式(13)所示:

圖像協方差的計算公式如式(14)所示:

SSIM 一般選用均值作為亮度的估計,如式(15)所示:

標準差作為對比度的估計,如式(16)所示:

協方差作為結構相似程度的度量,如式(17)所示:

SSIM 的計算公式如式(18)所示,其中α、β、γ 取值均為1。

SSIM 選取圖像中的部分區域進行計算,可能存在誤差,而多尺度結構相似性(MS-SSIM)[24]在圖像中選擇多個區域進行計算,然后取多個區域SSIM 的平均值,相比SSIM評價更加合理。用滑動窗口將圖像分成N 塊,加權計算每一窗口的均值、方差以及協方差,權值滿足求和為1,通常采用高斯核,然后計算對應塊的結構相似度,最后將平均值作為兩圖像之間的結構相似性進行度量。
實驗環境如表1 所示。在生成網絡的總損失函數中存在一個超參數λ,在實驗中將其設置為0.001。深度學習中針對損失函數的優化包含多種優化器:隨機梯度下降(SGD)、帶有動量的梯度下降、自適應矩估計(Adam)。一般常用的優化器為SGD 和Adam,本文選擇Adam 作為優化器。學習率是影響模型訓練的重要參數,若學習率太高,損失函數無法收斂;若學習率低,損失函數下降速度慢,無法完成學習。本文的學習率從0.000 1 開始,在訓練過程中動態調整學習率。根據訓練輪次,每10 次對學習率進行修改。每輪次訓練需要30 多分鐘,模型在訓練30 輪次后損失幾乎保持不變,因此訓練輪次選擇50 次,每一輪次輸入圖像為16 張。針對預測參數是否對圖像校正結果產生影響,在訓練中進行了帶有參數預測模型和不帶有參數預測模型的對比實驗。在本文模型的生成網絡中,每個模塊都可以包含多個殘差塊,也進行了對比實驗,殘差塊個數分別為1、2、3、4。

Table 1 Experimental environment表1 實驗環境
從魚眼數據集中選擇3 個不同種類的圖像作為對比,選擇的圖像如圖7 所示。對比方法選擇了經緯度校正方法和文獻[1]中提到的基于外觀流的漸進互補網絡魚眼圖像校正方法。

Fig.7 Fisheye dataset image圖7 魚眼圖像數據集圖像
圖8 是魚眼圖像經過經緯度校正后的圖像,通過與圖7 中的圖像進行比較,雖然圖像中的畸變被校正,但是在圖像的頂端和低端又有了新的畸變,而且相比圖7 內容有所減少。圖9 是魚眼圖像經過文獻[1]中的基于外觀流的漸進互補網絡魚眼圖像校正方法校正后的圖像,相較于圖8,圖9 不僅對魚眼圖像進行了校正,而且圖像內容保存更加完整。

Fig.8 Results of latitude and longitude correction method圖8 經緯度校正方法結果

Fig.9 Results of appearance flow-based progressive complementary network correction method圖9 基于外觀流的漸進互補網絡校正方法結果
圖10 是魚眼圖像經過本文方法校正后的圖像,圖11是魚眼圖像對應的真實背景圖像。圖10 的校正效果與圖9 相比更加接近背景圖像,圖9 中的左側圖像電梯門還存在一點點“凸起”,圖10 中左側圖像電梯門已經不存在“凸起”;圖10 中間的文字與圖9 相比也更加清晰;圖10 中的右側圖像與圖9 中的圖像相比也是“凸起”消失,更加接近圖11中的背景圖像。

Fig.10 Correction results in this paper圖10 本文校正結果

Fig.11 Groundtruth image圖11 真實背景圖像
針對魚眼圖像校正效果,選擇PSNR、SSIM、MS-SSIM3個定量指標進行比較,測試集計算結果如表2 所示。本文方法在3 個指標上均高于文獻[1]中基于外觀流的漸進互補網絡方法,PSNR 從25.596 提高到28.039、SSIM 從0.800提高到0.875、MS-SSIM 從0.943提高到0.970。
由表3 可知,將參數預測嵌入到生成網絡之后,其校正效果與沒有參數嵌入的網絡相比有所提高,數值的增加主要體現在PSNR 和SSIM 值上,證明參數嵌入確實可以提高模型對魚眼圖像的校正效果。

Table 2 Correction results of different methods表2 不同方法校正結果

Table 3 Correction result with and without parameter network表3 有無參數網絡校正結果
不同殘差塊對模型帶來的影響如表4 所示。前期殘差塊個數增加對模型校正效果的影響是積極的,殘差塊個數增加后模型的校正效果也得到提升,但當殘差塊個數增加到4 個時,模型校正效果卻會下降,而且隨著殘差塊的增加,整個模型的參數量也在不斷增加。綜合來看,本文網絡中的殘差塊個數應該為3。

Table 4 Influence of the number of residual blocks on the model表4 殘差塊個數對模型的影響
針對生成對抗網絡在魚眼圖像校正過程中由于跳躍連接帶來的誤差和解碼器負擔過重問題,提出一種結合生成對抗網絡和魚眼校正參數預測網絡的算法。該算法通過在模型的生成網絡中添加魚眼校正參數預測模塊,將生成網絡編碼器的輸出作為預測網絡的輸入,然后將預測的參數嵌入到生成網絡的解碼器中,用預測的參數指導魚眼圖像解碼過程,以此減少跳躍連接帶來的誤差損失和解碼器負擔,提高模型校正魚眼圖像的質量。實驗結果表明,在魚眼圖像數據集上,校正圖像與背景圖像的峰值信噪比(PSNR)達到28.039,相比之前的方法提升了9.5%;結構相似度(SSIM)達到0.875,相比之前的方法升了7.5%。本文模型雖然在一定程度上減少了跳躍連接帶來的誤差,但是模型生成的校正圖像在放大后的某些部分還存在像素模糊的問題,如何直接通過模型生成較高質量的校正圖像是下一步需要研究的問題。