李云波, 李曉峰*, 李 東, 衛(wèi) 晉
(1. 黑龍江外國語學(xué)院 信息工程系, 黑龍江 哈爾濱 150025;2. 哈爾濱工業(yè)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 黑龍江 哈爾濱 150001;3. 北京理工大學(xué) 計算機科學(xué)與技術(shù)學(xué)院, 北京 100081)
在信息化時代,圖像的重要性逐步凸顯,然而市場中的攝像機質(zhì)量參差不齊,采集到的圖像質(zhì)量也不相同[1-2]。攝像機成像會受到很多因素的影響,包括攝影過程中實體景物與攝像機的相對運動、大氣湍流效應(yīng)、周邊環(huán)境的色彩噪聲等[3-4],由這些因素所導(dǎo)致的圖像失真問題被稱之為圖像畸變[5]。由于計算機科學(xué)發(fā)展迅速,很多圖像畸變問題已經(jīng)可以使用軟件程序調(diào)整[6-7]。
當(dāng)前對于圖像畸變校正方法的研究已取得了一些有效的成果。文獻[8]首先分析了投影圖像之間的幾何位置關(guān)系,采用網(wǎng)格劃分法對畸變圖像進行校正,然后采用邊緣衰減算法來對圖像進行邊緣融合處理,并且通過過濾消除多源投影中球幕圖像上的亮帶,使投影圖像的整體亮度保持均勻,但圖像畸變校正耗時較長。文獻[9]使用FPGA技術(shù)設(shè)計了一個圖像畸變校正算法,并利用線性插值技術(shù)獲取了映射的逆向容量坐標(biāo),在映射表中通過調(diào)整壓縮參數(shù)保證圖像數(shù)據(jù)的完整性與安全性,但計算準(zhǔn)確度不夠高。文獻[10]通過對魚眼圖像有效區(qū)域進行劃分,并對不同區(qū)域內(nèi)的畸變點在橫、縱2個方向上分別建立校正模型,確定畸變圖像與理想圖像之間的坐標(biāo)映射關(guān)系,求取校正坐標(biāo)的位置。最后對圖像進行非線性拉伸,改善圖像中心與邊緣放大率不同而產(chǎn)生的“膨脹感”,獲得符合人眼視覺習(xí)慣的圖像,但對于畸變圖像像素點定位效果還有待優(yōu)化。文獻[11]通過對透射電子顯微鏡圖像畸變進行分析,以及其對應(yīng)關(guān)系進行多項式變換,求出多項式擬合后最小誤差,獲取電子顯微鏡畸變測度,采用電子顯微鏡圖像自適應(yīng)的慣性權(quán)重,以適應(yīng)度值來對慣性權(quán)重大小進行調(diào)節(jié),以最優(yōu)粒子作為全局最優(yōu)解,完成圖像畸變快速校正,整體效果較好,但存在耗時較長的問題。文獻[12]采用光電測量技術(shù)對復(fù)眼系統(tǒng)進行畸變測量與校正,生成多模動態(tài)電子畸變測量靶標(biāo),構(gòu)建畸變測量校正模型,建立多項式擬合算法,采用最小二乘法獲得畸變系數(shù),通過雙線性插值法模型對圖像進行重建,但網(wǎng)絡(luò)損失值較大。
以上方法在定位像素點時的準(zhǔn)確度較差,導(dǎo)致校正效果不理想,因此本文提出了基于改進卷積神經(jīng)網(wǎng)絡(luò)的圖像畸變快速校正方法。本研究的主要貢獻如下:①根據(jù)圖像中心點計算畸變圖像像素點坐標(biāo)值,解決傳統(tǒng)方法像素點定位不準(zhǔn)確的問題。②利用改進卷積神經(jīng)網(wǎng)絡(luò)校正畸變圖像像素點,得到像素點偏移坐標(biāo)以及偏移距離,以此獲取更為準(zhǔn)確的像素點定位結(jié)果。③利用不同函數(shù)指令實現(xiàn)圖像畸變快速校正,降低校正耗時,提升校正速度。
在攝像機的投影系統(tǒng)中,為了收集更多信息,在相機的投影模型中需要遵循
Rx=hjjtanθx。
(1)
圖1 笛卡爾坐標(biāo)系Fig.1 Cartesian coordinate system
式中:Rx表示攝影圖像中的任意一個像素點到圖像最中心的直線距離;hjj表示攝影機的焦距;θx表示光線通過攝影機后與光軸形成的夾角。通過這樣的投影模型,可以提升攝像機拍攝的面積[13]。從另一個角度出發(fā),假設(shè)被攝像機拍攝的畸變圖像分辨率為Xk×Yk,其中,Xk表示圖像中第k個像素點在高度中的坐標(biāo),Yk表示圖像中第k個像素點在寬度中的坐標(biāo)。由此可以將像素點的坐標(biāo)系與笛卡爾坐標(biāo)系相互轉(zhuǎn)化,笛卡爾坐標(biāo)系如圖1所示。
具體的轉(zhuǎn)化公式為:
(2)
式中:fx和fy分別表示圖像像素坐標(biāo)值在x軸方向與y軸方向的像素格數(shù)量;xi與yi分別表示圖像像素坐標(biāo)在x軸與y軸方向的坐標(biāo);zx和zy表示圖像中心點的坐標(biāo);xd和yd表示該像素點的笛卡爾坐標(biāo)位置[14]。該像素點至圖像中心點的距離為
(3)
式中:rx,y表示畸變圖像的任意一點到圖像中心點的距離,此時得到投影模型為
(4)
式中:Rn表示畸變圖像的像素點n與正常圖像像素點之間的直線距離;fn表示畸變圖像中像素點的數(shù)量;θn表示光線在通過鏡頭后與像素點形成的入射夾角?;儏?shù)為
(5)
式中:λn表示畸變圖像像素點的位置參數(shù);δxy(λn)表示圖像的畸變參數(shù);λ0~λ3分別表示入射光線在幾次反射之后的光線角度;R1~R3則表示入射光線行走的半徑[15]。以畸變參數(shù)計算結(jié)果為基礎(chǔ),可以依據(jù)正常的圖像像素點提取畸變圖像的像素點坐標(biāo)值。
卷積神經(jīng)網(wǎng)絡(luò)是一種新型深度卷積結(jié)構(gòu),在圖像分析中具有非常好的應(yīng)用性,對于不同大小和類型的圖像均具有很好的適用性。但卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中容易出現(xiàn)過擬合問題,因此對其進行改進,采用反向傳播算法實時調(diào)整參數(shù),完成權(quán)值更新,進而實現(xiàn)圖像處理。改進卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型如圖2所示。
圖2 改進卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型Fig.2 Structure model of improved convolutional neural network
以圖2改進卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型為基礎(chǔ),對畸變圖像像素點進行誤差校正。誤差校正是一種將輸出誤差強行穩(wěn)定在神經(jīng)元中的一種修正算法。設(shè)輸出樣本為(Fd,Uk),其中,Fd可以作為網(wǎng)絡(luò)輸入的連接節(jié)點,Uk則表示網(wǎng)絡(luò)輸出的連接節(jié)點。網(wǎng)絡(luò)權(quán)值的修正量為
(6)
式中:te表示網(wǎng)絡(luò)權(quán)值的修正結(jié)果;h0(i)表示網(wǎng)絡(luò)神經(jīng)元的輸出誤差;w0(i)表示網(wǎng)絡(luò)神經(jīng)元的輸入誤差。此時神經(jīng)元的連接權(quán)值與修正結(jié)果之間存在關(guān)系
Δμdk=te(γhνkim)。
(7)
式中:Δμdk表示在結(jié)果修正以后連接權(quán)值的調(diào)整量;μdk表示連接權(quán)值;γh表示神經(jīng)元連接的效率;νk表示神經(jīng)元的輸出效率;im表示誤差函數(shù)在經(jīng)過神經(jīng)元過程中的偏導(dǎo)數(shù)因子[16]。
在改進卷積神經(jīng)網(wǎng)絡(luò)的隱含層和輸入層中,可以將像素坐標(biāo)標(biāo)記為(xi,yi),此時的輸入與輸出向量可以作為影響因子的維度,因此隱含層的數(shù)量必須超出一定的閾值[17-18]。在畸變圖像像素點的投影中,若投影點映射在正常圖像中,則投影點可以以一種傾斜的方式平移到另一個方向,可以從其中選取兩條平行線,就會將其中一個像素點變?yōu)榫珳?zhǔn)的垂直函數(shù),此時存在關(guān)系
(8)
式中:D1(xi,pk)表示2條像素點構(gòu)成的線段在相互垂直的前提下組成的變量交叉函數(shù);xi和pk分別表示一條垂直線;H(xi,pk)表示像素點的平移間距。若某一個圖像畸變像素點出現(xiàn)了一個投影峰值,則像素單元的傾斜角度可以表示為
(9)
式中:φx表示投影面上像素點的與畸變圖像之間的傾斜角度;Ds表示畸變圖像像素點與正常圖像像素點在統(tǒng)一投影面上的間距;Ud表示圖像噪聲峰值面積。此時若通過霍夫變換將像素點全部映射到參數(shù)空間,就可以通過累加和的方式獲得所有像素點的傾斜方向,并以對偶的方式定義圖像空間中的曲率[19]。通過曲率可以得到圖像校正過程中像素點偏移距離為
(10)
式中:ρx,y表示經(jīng)過校正后的像素點位置坐標(biāo);x0和y0表示校正后的坐標(biāo);x1和y1表示校正前的坐標(biāo);vi表示像素點的擬合偏移速度。至此應(yīng)用式(10)即可校正畸變圖像中的像素點。
在圖像的處理過程中,由于像素點數(shù)量龐大,導(dǎo)致數(shù)據(jù)集的訓(xùn)練以及測試時間較長,為加快圖像校正的速度,可以設(shè)計一個改進卷積神經(jīng)網(wǎng)絡(luò)算法,用于圖像畸變的快速校正。在快速校正算法中,只需要經(jīng)過3個層面,從輸入層的像素點輸入開始,經(jīng)過隱含層的修正與求和,最后從輸出層輸出[20]。在連接權(quán)中需有一個激活函數(shù),處理偏置的求和信息。該激活函數(shù)為
(11)
式中:hu表示激活函數(shù);ξxy表示像素點在x軸與y軸中的連接函數(shù),在隱含層中起到抑制圖像畸變的作用;et表示喜好的線性組合偏置模型參數(shù)[21]。經(jīng)過以上3個層面的數(shù)據(jù)處理,可以將改進卷積神經(jīng)網(wǎng)絡(luò)中的函數(shù)分為兩類,分別是區(qū)域線性函數(shù)和非線性函數(shù)。其中線性函數(shù)的關(guān)系式為:
(12)
而非線性函數(shù)的關(guān)系式則可以表示為:
(13)
此時通過這些函數(shù)的指令,就可以快速校正畸變圖像,并將未經(jīng)過校正的圖像輸入輸入層,經(jīng)由隱含層傳遞到輸出層中,此時就能夠?qū)崿F(xiàn)圖像畸變快速校正。
為了檢測文中設(shè)計的改進卷積神經(jīng)網(wǎng)絡(luò)算法得到的校正結(jié)果是否優(yōu)于文獻[8-12]方法,設(shè)計如下實驗。
本文所有實驗均在Windows 10系統(tǒng), NVIDIA/英偉達(dá)TITAN RTX 24GB,GPU, TensorFlow深度學(xué)習(xí)框架環(huán)境下運行。 采用攝像機拍攝以及MNIST和ImageNet公開數(shù)據(jù)集中的5 000幅圖像進行實驗測試, 選取其中圖像畸變現(xiàn)象較為明顯的2 000幅圖像作為實驗數(shù)據(jù), 其中1 400幅圖像用于算法的訓(xùn)練, 400幅圖像用于算法檢驗, 最后200幅圖像用于算法測試。 為了使畸變圖像具備普適性, 需要在畸變圖像的像素點中設(shè)置畸變參數(shù){kx,λ1,λ2}, 其中kx表示像素點的總數(shù)量,λ1和λ2表示像素點在圖像中的位置。將以上畸變參數(shù)保存在參數(shù)數(shù)據(jù)集中, 將其與無畸變的參數(shù)相比, 可以得到校正參數(shù){u0,xn,yn}, 將所有像素點的校正參數(shù)全部保存在同一個數(shù)據(jù)集中, 就可以得到該圖像的參數(shù)數(shù)據(jù)集。
考慮圖像像素點數(shù)量的龐大以及參數(shù)的復(fù)雜性,本實驗需要消耗大量的時間用于算法訓(xùn)練以及參數(shù)校正。在訓(xùn)練實驗所有算法過程中,需要一個參與訓(xùn)練的網(wǎng)絡(luò)參數(shù)對樣本數(shù)據(jù)集進行校正。在此過程中,輸入的數(shù)據(jù)是數(shù)據(jù)集中的畸變圖像,輸出的則是校正參數(shù)。通過損失函數(shù)計算網(wǎng)絡(luò)參數(shù)校正值與畸變圖像真實值之差
(14)
式中:pi表示第i個樣本參數(shù)的真實值;wi表示網(wǎng)絡(luò)參數(shù)中第i個樣本的校正值;mx表示某圖像中的像素點個數(shù);Fmse則表示真實值與校正值之間的差值。 在定義網(wǎng)絡(luò)參數(shù)時, 可以得到損失函數(shù)的定義式為
UK=β1U1+β2U2。
(15)
式中:UK表示損失函數(shù),且UK值越小,表明該參數(shù)下圖像畸變校正的效果越好;β1和β2均為平衡損失值的權(quán)重,該權(quán)重通過數(shù)量級來計算;U1與U2則可以表示校正前的損失值與校正后的損失值。
計算以上損失函數(shù)在圖像畸變校正過程中的準(zhǔn)確性,可以通過觀測值擬合度來體現(xiàn),具體計算公式為
(16)
畸變圖像像素點定位準(zhǔn)確度是指不同方法定位定位結(jié)果與真實像素點位置之間的比率,具體的計算公式為
(17)
式中,wj表示真實像素點位置。
圖像畸變校正耗時是指完成圖像畸變校正所用時間,該指標(biāo)的公式為
T=T1+T2+…+TN。
(18)
式中,T1,T2,…,TN分別表示不同的圖像畸變校正步驟所用時間。
在全網(wǎng)絡(luò)中,輸入的參數(shù)個數(shù)為256×12×12,且輸出的參數(shù)總量為256,此時的參數(shù)是訓(xùn)練參數(shù)正常運行的最大值。為了避免過擬合現(xiàn)象,可以通過隨機忽略的方法減少節(jié)點間的相互作用,同時在連接層中進行參數(shù)訓(xùn)練,通過以上方法可以得到在不斷的迭代過程中,6種算法的網(wǎng)絡(luò)損失函數(shù)具體如圖3所示。
圖3 網(wǎng)絡(luò)損失函數(shù)對比Fig.3 Comparison of network loss function
分析圖3可知,在網(wǎng)絡(luò)損失函數(shù)的數(shù)據(jù)結(jié)果中,改進卷積神經(jīng)網(wǎng)絡(luò)算法最終的網(wǎng)絡(luò)損失值約為0.009 2,其他5種對比算法的網(wǎng)絡(luò)損失值分別為0.031 5、0.020 6、0.040 6、0.011 4、0.020 9。網(wǎng)絡(luò)損失值的結(jié)果越低,表明該參數(shù)下的圖像畸變校正結(jié)果越好,因此在以上6種方法中,本文所設(shè)計的改進卷積神經(jīng)網(wǎng)絡(luò)算法參數(shù)最優(yōu)。觀測擬合度比較結(jié)果如圖4所示。
圖4 觀測擬合度對比Fig.4 Comparison of observational fit
分析圖4可知,經(jīng)過1 000次迭代后,本文方法得到的觀測擬合度結(jié)果為0.96,其他5種對比方法的觀測擬合度分別為0.80、0.83、0.72、0.85、0.86。觀測擬合度越接近1,表明該校正參數(shù)越準(zhǔn)確,因此在6種方法中,本文方法的校正參數(shù)準(zhǔn)確度最高。因此說明本文設(shè)計的基于改進卷積神經(jīng)網(wǎng)絡(luò)算法的圖像畸變快速校正方法得到的校正參數(shù)更佳,校正效果更好。
在上述基礎(chǔ)上,選取2幅原始圖像進行畸變校正,不同方法的畸變圖像校正效果比較如圖5~圖8所示。
圖5 原始圖像1Fig.5 Original image 1
(a)文獻[8]方法(b)文獻[9]方法(c) 文獻[10]方法(d)文獻[11]方法(e) 文獻[12]方法(f) 本文方法
圖7 原始圖像2Fig.7 Original image 2
(a) 文獻[8]方法(b) 文獻[9]方法(c) 文獻[10]方法(d) 文獻[11]方法(e) 文獻[12]方法(f) 本文方法
由圖5~圖8可知,原始圖像存在畸變,而本文方法可以有效對畸變處進行校正。
在上述基礎(chǔ)上,比較6種方法的畸變圖像像素點定位準(zhǔn)確度,結(jié)果如表1所示。
表1 畸變圖像像素點定位準(zhǔn)確度對比Table 1 Comparison of pixel positioning accuracy of distorted image 單位: %
由表1可知,與文獻[8-12]相比,本文所設(shè)計方法的畸變圖像像素點定位準(zhǔn)確度平均值為97.7%,是6種方法中最高的,定位精度高,可以為后續(xù)的圖像畸變快速校正奠定堅實的基礎(chǔ)。
為了進一步驗證不同方法的實際應(yīng)用效果,對圖像畸變校正耗時進行了比較,比較結(jié)果如表2所示。
表2 圖像畸變校正耗時對比Table 2 Comparison of time consumption of image distortion correction 單位: s
由表2可知,與文獻[8-12]方法相比,本文所設(shè)計方法的圖像畸變校正耗時平均值為0.61 s,是6種方法中最低的,說明該方法可以達(dá)到圖像畸變快速校正的研究目標(biāo)。
本文以解決傳統(tǒng)圖像畸變快速校正方法存在的網(wǎng)絡(luò)損失函數(shù)較高、觀測擬合度較低、畸變圖像像素點定位準(zhǔn)確度較低以及圖像畸變校正耗時較長的問題,提出了一種基于改進卷積神經(jīng)網(wǎng)絡(luò)的圖像畸變快速校正方法。通過計算圖像像素點的坐標(biāo)值函數(shù),得到了畸變矯正的模型,以此設(shè)計了一種圖像畸變快速校正方法,使校正效果更好。實驗結(jié)果表明,本文方法的網(wǎng)絡(luò)損失值較低、觀測擬合度較高、畸變圖像像素點定位準(zhǔn)確度較高以及圖像畸變校正耗時較短。但本文設(shè)計仍有需要改進的地方,如在定義損失函數(shù)時,沒有考慮到區(qū)域像素?fù)p失問題,導(dǎo)致最終的結(jié)果并不是全局最優(yōu)解,且在引入圖像信息時,沒有進一步以非線性的方式優(yōu)化畸變校正結(jié)果,因此在未來的研究中可據(jù)此對該方法進行改進與優(yōu)化。