張 晗
(西安石油大學(xué) 計(jì)算機(jī)學(xué)院, 西安710065)
在學(xué)術(shù)研究中,圖像處理是一種常見(jiàn)的操作,但由于圖像不清晰、局部模糊或分辨率太低等原因,圖像處理結(jié)果往往不夠理想。 這種情況下,需要將低分辨率圖像向高分辨率圖像轉(zhuǎn)化,基于這種需求背景,超分辨重建技術(shù)應(yīng)運(yùn)而生。
圖像超分辨率重建技術(shù)就是利用一組低質(zhì)量、低分辨率圖像(或運(yùn)動(dòng)序列)來(lái)產(chǎn)生單幅高質(zhì)量、高分辨率圖像[1]。 在計(jì)算機(jī)視覺(jué)領(lǐng)域,圖像超分辨率重建技術(shù)有可能使圖像實(shí)現(xiàn)從檢出水平向識(shí)別水平的轉(zhuǎn)化,或?qū)崿F(xiàn)向細(xì)辨水平的轉(zhuǎn)化。 圖像超分辨率重建技術(shù)可以提高圖像的識(shí)別能力和識(shí)別精度、實(shí)現(xiàn)目標(biāo)物的專(zhuān)注分析[2],從而可以獲取感興趣區(qū)域更高空間分辨率的圖像,所以對(duì)圖像進(jìn)行超分辨重建可以有效的提升圖像的質(zhì)量。
傳統(tǒng)的超分辨率重建算法是針對(duì)低分辨率圖像采用保持圖形部分邊緣的方法進(jìn)行重建[3],雖然處理方便,但依然存在著邊緣部分模糊和超分辨重建能力有限等問(wèn)題,基于深度學(xué)習(xí)的超分辨率重建技術(shù)可以有效的解決該問(wèn)題,本文采用傳統(tǒng)雙三次插值算法(Bicubic Interpolation)和基于深度學(xué)習(xí)的SRCNN 算法(Super-Resolution Convolutional Neural Network)對(duì)圖像進(jìn)行超分辨率重建,并對(duì)比相同圖像在兩種方法中的超分辨率重建結(jié)果,驗(yàn)證深度學(xué)習(xí)SRCNN 算法的優(yōu)良性能。
Bicubic 是二維空間中最常用的插值方法,又叫雙立方插值。 它是對(duì)圖像進(jìn)行“插值”或增加“像素”數(shù)量/密度的一種方法[4]。 通常利用插值技術(shù)增加圖形數(shù)據(jù),同時(shí),將待采樣點(diǎn)周?chē)?6 個(gè)點(diǎn)的灰度值作三次差值,以便在它打印的時(shí)候,能夠增大打印面積并提高分辨率。
Bicubic 算法不僅考慮到4 個(gè)直接相鄰點(diǎn)的灰度影響,而且考慮到各鄰點(diǎn)間灰度值變化率的影響,相比較一般的傳統(tǒng)算法,Bicubic 算法可以得到更接近高分辨率圖像的放大效果,其結(jié)果通過(guò)以下公式(1)得到[5]:
計(jì)算系數(shù)aij的過(guò)程依賴(lài)于插值數(shù)據(jù)的特性。如果已知插值函數(shù)的導(dǎo)數(shù),常用的方法就是使用4個(gè)頂點(diǎn)的高度以及每個(gè)頂點(diǎn)的3 個(gè)導(dǎo)數(shù)。
SRCNN 是一種用于實(shí)現(xiàn)圖像超分辨率的特定卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)模型[6]。 它使用Bicubic 算法將低分辨率圖像放大成目標(biāo)尺寸后,通過(guò)三層卷積網(wǎng)絡(luò)擬合非線(xiàn)性映射,最后輸出高分辨率圖像結(jié)果,它在Bicubic算法處理圖像之后對(duì)圖像進(jìn)行擬合輸出,確保圖像分辨率的提高。
首先,使預(yù)處理圖像,輸入圖像與要重建的高分辨率圖像的尺寸保持一致,再進(jìn)行高斯內(nèi)核平滑。通過(guò)同樣的縮放因子進(jìn)行Bicubic 下采樣得到的圖片稱(chēng)為訓(xùn)練集[8],SRCNN 對(duì)這個(gè)訓(xùn)練集進(jìn)行訓(xùn)練。訓(xùn)練過(guò)程中為了避免邊緣效應(yīng),所有卷積層都沒(méi)有邊緣處理。
預(yù)處理圖像后,SRCNN 算法通過(guò)三層卷積網(wǎng)絡(luò)擬合非線(xiàn)性映射之后,輸出高分辨率圖像結(jié)果。 如圖1 為三層卷積網(wǎng)絡(luò)重建過(guò)程,三個(gè)卷積層使用的卷積核的大小分別為9×9,1×1 和5×5,前兩個(gè)的輸出特征個(gè)數(shù)分別為64 和32。
圖1 三層卷積層Fig. 1 Three-layer convolutional layer
三層卷積層重建過(guò)程主要有3 個(gè)步驟:
(1)利用卷積網(wǎng)絡(luò)的性質(zhì)提取圖像塊的特征,進(jìn)行圖像塊的提取和特征表示。
(2)將(1)中的低分辨率維度特征映射到當(dāng)前維度特征從而實(shí)現(xiàn)特征非線(xiàn)性映射。
(3)圖像重新進(jìn)行卷積重構(gòu),實(shí)現(xiàn)最終的重建。
(1)PSNR。 峰值信噪比(Peak Signal to Noise Ratio, PSNR)是最普遍、使用最為廣泛的一種圖像客觀(guān)評(píng)價(jià)指標(biāo),它基于對(duì)應(yīng)像素點(diǎn)間的誤差(即基于誤差敏感的圖像)進(jìn)行質(zhì)量評(píng)價(jià)[7]。 由于并未考慮到人眼的視覺(jué)特性(人眼對(duì)空間頻率較低的對(duì)比差異敏感度較高,人眼對(duì)亮度對(duì)比差異的敏感度較色度高,人眼對(duì)一個(gè)區(qū)域的感知結(jié)果會(huì)受到其周?chē)徑鼌^(qū)域的影響等),因而可能會(huì)出現(xiàn)其評(píng)價(jià)結(jié)果與人的主觀(guān)感覺(jué)不一致的情況[8]。 峰值信噪比的求值公式(2)如下:
PSNR 的單位是dB,一般取值范圍:20 ~40,數(shù)值越大,表示失真越小,獲取的圖像質(zhì)量越好。 其中均方誤差(Mean Squared Error, MSE)作為損失函數(shù),用來(lái)檢測(cè)模型預(yù)測(cè)值和真實(shí)值之間的差距[9],表示真實(shí)值與預(yù)測(cè)值差平方的期望,值越大,表示預(yù)測(cè)效果越差。 均方誤差公式(3)如下:
其中:H、W 分別為圖像的高度和寬度。
(2) SSIM。 結(jié)構(gòu)相似性(Structural Similarity Index,SSIM)是一種衡量?jī)煞鶊D像相似度的指標(biāo),給定兩個(gè)圖像x 和y, 兩張圖像的結(jié)構(gòu)相似性可按照公式(4)~公式(6)求出[10]:
其中:μx是x 的平均值, μy是y 的平均值,是x 的方差,是y 的方差,σxy是x 和y 的協(xié)方差。c1,c2是用來(lái)維持穩(wěn)定的常數(shù)。 L 是像素值的動(dòng)態(tài)范圍。k1= 0.01,k2= 0.03。 結(jié)構(gòu)相似性的范圍為(0,1)。 數(shù)值越大,圖像越相似,當(dāng)兩張圖像一模一樣時(shí),SSIM 的值等于1。
本次實(shí)驗(yàn),硬件系統(tǒng)為Windows10 +I(xiàn)ntel(R)Core(TM) i7-6700 CPU @ 3.40GHz- 3.41gHz,實(shí)驗(yàn)環(huán)境為Python3.6+Tensorflow1.12.0。
本文圖像采用公共數(shù)據(jù)集Set14 部分圖像以及自選圖像,圖像格式均設(shè)置為.bmp,因其采用位映射存儲(chǔ)格式,除了圖像深度可選外,不采用其他任何壓縮,由于.bmp 文件格式是Windows 環(huán)境中交換與圖有關(guān)數(shù)據(jù)的一種標(biāo)準(zhǔn),因此在Windows 環(huán)境中運(yùn)行的圖形圖像軟件都支持.bmp 圖像格式,并且能夠快速讀取.bmp 格式的圖片。 因此,.bmp 文件格式的圖片是非常適合訓(xùn)練的圖像格式。
本次實(shí)驗(yàn)分別采用Bicubic 和SRCNN 兩種方法進(jìn)行,訓(xùn)練次數(shù)分別為1、10、100。 首先,采用Bicubic 算法進(jìn)行實(shí)驗(yàn),當(dāng)訓(xùn)練次數(shù)增加之后,損失函數(shù)(Loss Function)和PSNR 兩個(gè)指標(biāo)一直趨于不變,說(shuō)明訓(xùn)練次數(shù)的增加對(duì)訓(xùn)練效果沒(méi)有改變作用。對(duì)比輸入圖和輸出圖,不難發(fā)現(xiàn),使用Bicubic 進(jìn)行實(shí)驗(yàn),圖像分辨率略有提高,但效果較差,細(xì)節(jié)部分仍然模糊。 再使用SRCNN 算法對(duì)同一數(shù)據(jù)集進(jìn)行超分辨重建。
圖2~圖4 為進(jìn)行超分辨率重建之后的結(jié)果,(a)為輸入低分辨率圖像,(b)為使用Bicubic 進(jìn)行超分辨率重建的圖像結(jié)果,(c)為使用SRCNN 進(jìn)行超分辨率重建的輸出圖像。
圖2 人物重建結(jié)果Fig. 2 Character reconstruction results
圖3 動(dòng)畫(huà)重建結(jié)果Fig. 3 Animation reconstruction results
圖4 葡萄重建結(jié)果Fig. 4 Grape reconstruction results
觀(guān)察圖2~圖4,(a)是分辨率較低的輸入圖像,細(xì)節(jié)部分比較模糊,(b)是經(jīng)過(guò)Bicubic 重建之后的圖像,圖像清晰度有了提升,但圖像噪聲依然比較大,細(xì)節(jié)部分仍需完善,但經(jīng)過(guò)SRCNN 進(jìn)行超分辨率重建訓(xùn)練出圖像,無(wú)論是女人圖像、動(dòng)畫(huà)哪吒還是葡萄的超分辨率重建圖像,其細(xì)節(jié)部分相比輸入圖和Bicubic 輸出圖像都有明顯的提升,邊緣明顯銳化,整體圖像清晰度有很大的提高,視覺(jué)清晰度有明顯的改善。
視覺(jué)方面來(lái)看,圖像的超分辨率重建效果明顯,為了更加準(zhǔn)確地評(píng)價(jià)兩種方法的超分辨率重建性能,本文使用PSNR 和SSIM 作為評(píng)價(jià)指標(biāo),進(jìn)行超分辨率重建的結(jié)果判斷,結(jié)果如表1 所示。
表1 PSNR 和SSIM 結(jié)果比較Tab. 1 Comparison of PSNR and SSIM results
從表1 可以看出,SRCNN 的PSNR 指標(biāo)比Bicubic 高出了3.338 db,說(shuō)明SRCNN 的去噪能力明顯優(yōu)于Bicubic;SRCNN 的SSIM 指標(biāo)比Bicubic高出了6.076%,因此圖像經(jīng)過(guò)SRCNN 算法重建之后,還原程度更高,說(shuō)明基于深度學(xué)習(xí)的SRCNN 算法在圖像超分辨重建中比傳統(tǒng)Bicubic 算法有更好的性能。 從原理分析,傳統(tǒng)的插值算法,沒(méi)有考慮邊緣等特性,圖像處理后模糊的現(xiàn)象仍需改善,會(huì)在一定程度上影響圖像的質(zhì)量,而SRCNN 很好的去掉了噪聲對(duì)于圖像細(xì)節(jié)的影響,有效的提高了超分辨率重建的圖像質(zhì)量。
本文對(duì)比分析了Bicubic 算法和深度學(xué)習(xí)SRCNN 算法的圖像超分辨率重建性能,相比于Bicubic,SRCNN 在超分辨率重建實(shí)驗(yàn)中能更有效提高圖像分辨率,解決邊緣部分模糊問(wèn)題。 當(dāng)然,SRCNN 也存在著訓(xùn)練收斂較慢,準(zhǔn)確率有待提高等諸多問(wèn)題。 目前,基于深度學(xué)習(xí)的超分辨率重建方法已有很多,越來(lái)越多的研究者不斷進(jìn)行研究探索,圖像超分辨率重建技術(shù)在未來(lái)的發(fā)展空間也是值得期待的。