張 晗
(西安石油大學 計算機學院, 西安710065)
在學術研究中,圖像處理是一種常見的操作,但由于圖像不清晰、局部模糊或分辨率太低等原因,圖像處理結果往往不夠理想。 這種情況下,需要將低分辨率圖像向高分辨率圖像轉化,基于這種需求背景,超分辨重建技術應運而生。
圖像超分辨率重建技術就是利用一組低質量、低分辨率圖像(或運動序列)來產生單幅高質量、高分辨率圖像[1]。 在計算機視覺領域,圖像超分辨率重建技術有可能使圖像實現從檢出水平向識別水平的轉化,或實現向細辨水平的轉化。 圖像超分辨率重建技術可以提高圖像的識別能力和識別精度、實現目標物的專注分析[2],從而可以獲取感興趣區域更高空間分辨率的圖像,所以對圖像進行超分辨重建可以有效的提升圖像的質量。
傳統的超分辨率重建算法是針對低分辨率圖像采用保持圖形部分邊緣的方法進行重建[3],雖然處理方便,但依然存在著邊緣部分模糊和超分辨重建能力有限等問題,基于深度學習的超分辨率重建技術可以有效的解決該問題,本文采用傳統雙三次插值算法(Bicubic Interpolation)和基于深度學習的SRCNN 算法(Super-Resolution Convolutional Neural Network)對圖像進行超分辨率重建,并對比相同圖像在兩種方法中的超分辨率重建結果,驗證深度學習SRCNN 算法的優良性能。
Bicubic 是二維空間中最常用的插值方法,又叫雙立方插值。 它是對圖像進行“插值”或增加“像素”數量/密度的一種方法[4]。 通常利用插值技術增加圖形數據,同時,將待采樣點周圍16 個點的灰度值作三次差值,以便在它打印的時候,能夠增大打印面積并提高分辨率。
Bicubic 算法不僅考慮到4 個直接相鄰點的灰度影響,而且考慮到各鄰點間灰度值變化率的影響,相比較一般的傳統算法,Bicubic 算法可以得到更接近高分辨率圖像的放大效果,其結果通過以下公式(1)得到[5]:

計算系數aij的過程依賴于插值數據的特性。如果已知插值函數的導數,常用的方法就是使用4個頂點的高度以及每個頂點的3 個導數。
SRCNN 是一種用于實現圖像超分辨率的特定卷積神經網絡(Convolutional Neural Networks,CNN)模型[6]。 它使用Bicubic 算法將低分辨率圖像放大成目標尺寸后,通過三層卷積網絡擬合非線性映射,最后輸出高分辨率圖像結果,它在Bicubic算法處理圖像之后對圖像進行擬合輸出,確保圖像分辨率的提高。
首先,使預處理圖像,輸入圖像與要重建的高分辨率圖像的尺寸保持一致,再進行高斯內核平滑。通過同樣的縮放因子進行Bicubic 下采樣得到的圖片稱為訓練集[8],SRCNN 對這個訓練集進行訓練。訓練過程中為了避免邊緣效應,所有卷積層都沒有邊緣處理。
預處理圖像后,SRCNN 算法通過三層卷積網絡擬合非線性映射之后,輸出高分辨率圖像結果。 如圖1 為三層卷積網絡重建過程,三個卷積層使用的卷積核的大小分別為9×9,1×1 和5×5,前兩個的輸出特征個數分別為64 和32。

圖1 三層卷積層Fig. 1 Three-layer convolutional layer
三層卷積層重建過程主要有3 個步驟:
(1)利用卷積網絡的性質提取圖像塊的特征,進行圖像塊的提取和特征表示。
(2)將(1)中的低分辨率維度特征映射到當前維度特征從而實現特征非線性映射。
(3)圖像重新進行卷積重構,實現最終的重建。
(1)PSNR。 峰值信噪比(Peak Signal to Noise Ratio, PSNR)是最普遍、使用最為廣泛的一種圖像客觀評價指標,它基于對應像素點間的誤差(即基于誤差敏感的圖像)進行質量評價[7]。 由于并未考慮到人眼的視覺特性(人眼對空間頻率較低的對比差異敏感度較高,人眼對亮度對比差異的敏感度較色度高,人眼對一個區域的感知結果會受到其周圍鄰近區域的影響等),因而可能會出現其評價結果與人的主觀感覺不一致的情況[8]。 峰值信噪比的求值公式(2)如下:

PSNR 的單位是dB,一般取值范圍:20 ~40,數值越大,表示失真越小,獲取的圖像質量越好。 其中均方誤差(Mean Squared Error, MSE)作為損失函數,用來檢測模型預測值和真實值之間的差距[9],表示真實值與預測值差平方的期望,值越大,表示預測效果越差。 均方誤差公式(3)如下:

其中:H、W 分別為圖像的高度和寬度。
(2) SSIM。 結構相似性(Structural Similarity Index,SSIM)是一種衡量兩幅圖像相似度的指標,給定兩個圖像x 和y, 兩張圖像的結構相似性可按照公式(4)~公式(6)求出[10]:

其中:μx是x 的平均值, μy是y 的平均值,是x 的方差,是y 的方差,σxy是x 和y 的協方差。c1,c2是用來維持穩定的常數。 L 是像素值的動態范圍。k1= 0.01,k2= 0.03。 結構相似性的范圍為(0,1)。 數值越大,圖像越相似,當兩張圖像一模一樣時,SSIM 的值等于1。
本次實驗,硬件系統為Windows10 +Intel(R)Core(TM) i7-6700 CPU @ 3.40GHz- 3.41gHz,實驗環境為Python3.6+Tensorflow1.12.0。
本文圖像采用公共數據集Set14 部分圖像以及自選圖像,圖像格式均設置為.bmp,因其采用位映射存儲格式,除了圖像深度可選外,不采用其他任何壓縮,由于.bmp 文件格式是Windows 環境中交換與圖有關數據的一種標準,因此在Windows 環境中運行的圖形圖像軟件都支持.bmp 圖像格式,并且能夠快速讀取.bmp 格式的圖片。 因此,.bmp 文件格式的圖片是非常適合訓練的圖像格式。
本次實驗分別采用Bicubic 和SRCNN 兩種方法進行,訓練次數分別為1、10、100。 首先,采用Bicubic 算法進行實驗,當訓練次數增加之后,損失函數(Loss Function)和PSNR 兩個指標一直趨于不變,說明訓練次數的增加對訓練效果沒有改變作用。對比輸入圖和輸出圖,不難發現,使用Bicubic 進行實驗,圖像分辨率略有提高,但效果較差,細節部分仍然模糊。 再使用SRCNN 算法對同一數據集進行超分辨重建。
圖2~圖4 為進行超分辨率重建之后的結果,(a)為輸入低分辨率圖像,(b)為使用Bicubic 進行超分辨率重建的圖像結果,(c)為使用SRCNN 進行超分辨率重建的輸出圖像。

圖2 人物重建結果Fig. 2 Character reconstruction results

圖3 動畫重建結果Fig. 3 Animation reconstruction results

圖4 葡萄重建結果Fig. 4 Grape reconstruction results
觀察圖2~圖4,(a)是分辨率較低的輸入圖像,細節部分比較模糊,(b)是經過Bicubic 重建之后的圖像,圖像清晰度有了提升,但圖像噪聲依然比較大,細節部分仍需完善,但經過SRCNN 進行超分辨率重建訓練出圖像,無論是女人圖像、動畫哪吒還是葡萄的超分辨率重建圖像,其細節部分相比輸入圖和Bicubic 輸出圖像都有明顯的提升,邊緣明顯銳化,整體圖像清晰度有很大的提高,視覺清晰度有明顯的改善。
視覺方面來看,圖像的超分辨率重建效果明顯,為了更加準確地評價兩種方法的超分辨率重建性能,本文使用PSNR 和SSIM 作為評價指標,進行超分辨率重建的結果判斷,結果如表1 所示。

表1 PSNR 和SSIM 結果比較Tab. 1 Comparison of PSNR and SSIM results
從表1 可以看出,SRCNN 的PSNR 指標比Bicubic 高出了3.338 db,說明SRCNN 的去噪能力明顯優于Bicubic;SRCNN 的SSIM 指標比Bicubic高出了6.076%,因此圖像經過SRCNN 算法重建之后,還原程度更高,說明基于深度學習的SRCNN 算法在圖像超分辨重建中比傳統Bicubic 算法有更好的性能。 從原理分析,傳統的插值算法,沒有考慮邊緣等特性,圖像處理后模糊的現象仍需改善,會在一定程度上影響圖像的質量,而SRCNN 很好的去掉了噪聲對于圖像細節的影響,有效的提高了超分辨率重建的圖像質量。
本文對比分析了Bicubic 算法和深度學習SRCNN 算法的圖像超分辨率重建性能,相比于Bicubic,SRCNN 在超分辨率重建實驗中能更有效提高圖像分辨率,解決邊緣部分模糊問題。 當然,SRCNN 也存在著訓練收斂較慢,準確率有待提高等諸多問題。 目前,基于深度學習的超分辨率重建方法已有很多,越來越多的研究者不斷進行研究探索,圖像超分辨率重建技術在未來的發展空間也是值得期待的。