何 凱,劉 坤,沈成南,李 宸
(天津大學電氣自動化與信息工程學院 天津 南開區 300072)
圖像修復是為了補全圖像的破損區域或信息缺失區域,進而得到理想的視覺效果。目前修復損壞的圖像方法可以大致分為3 種:1)基于偏微分方程的修復方法;2)基于圖像樣本塊的紋理合成算法;3)基于神經網絡的圖像修復算法。其中,基于偏微分方程方法僅適用于小區域圖像修復,如附加文字、噪聲、劃痕去除等,目前已基本成熟。傳統基于樣本塊的紋理合成算法只能從破損圖像中提取有用信息,信息來源有限,無法修復復雜的結構和紋理信息。而基于深度學習的圖像修復算法雖然可以獲得更多的有用信息,但訓練時間長,紋理合成效果往往不夠理想。
為解決上述問題,本文提出一種破損圖像的相似度計算方法,通過在數據庫中尋找相似圖像來為圖像修復提供更多的有用信息。使用基于圖像配準的方法實現破損圖像與其相似圖像的粗略對齊。最后,通過改進最佳匹配塊搜索方法和匹配準則來提高紋理合成效果。仿真實驗結果證明了本算法的有效性。
文獻[1]提出了基于圖像樣本塊的經典紋理合成修復算法,利用圖像待修復區域周圍的紋理結構信息,計算優先權和相似度,從中提取特征對破損區域進行修復,可以獲得比較理想的圖像修復效果。在此基礎上,研究者提出了許多改進算法,例如:文獻[2]重新定義了優先級計算函數,可自適應確定樣本塊大小;文獻[3]生成了5 個具有不同初始化的圖像,通過適當混合可產生更好的修復結果;文獻[4]使用圖像結構張量來檢測圖像的基本結構,并重新制定優先級函數;文獻[5]提出了一種改進的補丁距離,可以改善紋理補丁的比較,并解決了初始化和金字塔等級數選擇的關鍵問題;文獻[6]通過添加梯度信息,利用樣本塊的結構、對比度和亮度來確定最優樣本塊大小。
此外,文獻[7]通過優化離散馬爾可夫隨機場,保證結構和紋理信息的正確傳播,同時提出了優先級置信度傳播(p-BP);文獻[8]提出首先在輸入圖像的粗糙版本上執行修復,然后使用分層的超分辨率算法來恢復丟失區域的詳細信息;文獻[9]根據圖像的上下文將圖像分為可變大小的塊,可以限制候選塊的搜索范圍。
近年來,卷積神經網絡(convolutional neural networks, CNN)[10]和生成對抗性網絡(generative adversarial networks, GAN)[11]技術的快速發展,為圖像修復領域提供了新的方法和方向。文獻[12]首次提出用編碼器-解碼器結構結合卷積神經網絡和GAN 進行圖像修復;文獻[13]將圖像修復描述為一個圖像生成問題,基于上下文編碼器,使用一個經過對抗性損失訓練的卷積神經網絡進行處理;文獻[14]采用一種全卷積神經網絡,利用全局鑒別器和局部鑒別器進行預測,并提出了一種上下文注意力機制;文獻[15]提出采用門控卷積和頻譜歸一化鑒別器,以及一個基于補丁的GAN 損失函數進行修復;文獻[16]利用級聯生成對抗網絡來修復人臉圖像,可以獲得更高質量的修復效果。
在目前大區域圖像修復算法中,基于樣本塊的紋理合成算法,以及基于MRF 的置信度傳播算法,都是從圖像已知區域中獲取相關信息,不能實現復雜場景結構及相關紋理的自動修復,效果不佳。而基于深度學習的修復方法,能有效地利用圖像的語義信息,可從圖像庫中獲得更加豐富的圖像信息,有效提高修復質量。但當圖像缺失區域較大,圖像內容比較豐富時,容易出現如圖像模糊、紋理失真、邊界偽影等問題。
為了獲取破損圖像的相似圖像,為圖像修復提供更多的有效信息,本文提出了一種基于卷積特征向量的破損圖像相似度計算方法。
首先采用遷移學習的方法,利用VGG-16 模型[17]對所選數據集進行分類訓練,提取圖像的特征信息。為了保證網絡訓練的穩定性,防止梯度消失,同時加快學習速度,增強網絡的非線性表達能力,訓練采用ReLU 激活函數,輸入特征圖為m×n×C1,其中,m×n為輸入特征數目, C1為輸入通道數目,卷積層的輸出特征圖尺寸為:

式中,卷積采用小尺度卷積核; a表示卷積核尺度; pad為填充; str為步長; F1為輸出通道數目。
卷積層之后連接池化層,用于壓縮數據和參數的量,同時保留了網絡學習到的主要特征,并防止過擬合。池化層大小設為GH,該層輸入特征圖大小為pwC2,輸出通道數為 F2,其輸出特征圖尺寸為:

經卷積層輸出后,每個神經元的特征向量為:

式中, f為激活函數; j,i為卷積核的長、寬; x為輸入的二維向量;M,N分別是二維向量的長、寬;ω代表卷積核; b為輸出的偏置項;yconv為輸出的卷積結果。
然后,利用訓練后的網絡提取圖像的特征參數,計算相似度。具體過程如圖1 所示,利用卷積網絡提取數據集中每張圖像和破損圖像最后一層卷積層的特征向量,利用提取到的特征向量來計算破損圖像和數據集中圖像的相似度,進而找到與破損圖像最為相似的圖像。為了便于計算,對圖像的特征向量進行歸一化處理:

式中,W 為特征矩陣;h×w為每幅特征圖大小。基于式(5)計算兩個向量的余弦相似度:
建筑工程的設計方案也直接影響到建筑工程的造價成本,在進行建筑工程設計環節,高質量建造難度大的項目往往需要花費較大的費用,因此,業主也可委托不同專業水平的設計人員對項目進行設計考慮,可在多組設計項目的必選下,選擇合適的建造方案。

式中, A、 B為兩個向量; θ為兩向量之間夾角。
針對破損圖像中部分區域信息缺失的問題,引入一個權重值,僅利用破損區域的周圍信息來計算其相似度 M:

式中, Ai和 Bi分別代表破損圖像和相似圖像; V代表圖像經過卷積網絡并歸一化; qi為對應像素的權重值,在破損區域和信息區域分別取值為0 和1。
相似度M 越大,代表破損圖像與數據集中候選圖像相似程度越高。采用最大相似度準則,在數據庫中選取與破損圖像特征向量相似度最大的候選圖像,作為其相似圖像B,即:


圖1 相似圖像搜索過程示意圖
由于視角、偏差、尺度、光照等因素的影響,相似圖像與參考圖像之間往往存在較大程度的扭曲和偏移。為了能更有效地利用相似圖像的相關信息,基于仿射不變性原理,對兩幅圖像的形變差異進行糾正。首先,對兩幅圖像進行局部特征向量的檢測和匹配,采用完全仿射不變配準(affine-Scale invariant feature transform, ASIFT)算法[18]實現兩幅圖像的特征配準。然后,采用最優化的隨機采樣一致性(optimized RANSAC, ORSA)算法[19]實現誤匹配點的自動篩選,以減少誤匹配,提高配準精度。最后,利用單應性變換實現兩幅圖像的粗對齊。經過單應性變換之后,相似參考圖像與破損圖像的視角基本一致,取得了比較理想的校正效果。上述操作有助于初步定位最優匹配塊的搜索范圍,避免全局搜索,可有效減少算法的時間消耗。
校正圖像與破損區域的結構和紋理信息基本一致,實現了圖像的粗對齊,但校正后的圖像與破損區域仍有一定的偏差,直接利用校正圖像進行信息填充,容易出現被修復區域的紋理和結構信息與邊界不一致的情況。受紋理合成算法基本思想的啟發,本文將校正圖像作為附加源區域,以增加輔助信息源,提高結構和紋理合成效果。
研究表明,對于破損區域,最可靠的信息來源于兩個方面:1)校正圖像中與破損區域的重疊部分;2)破損區域圖像本身邊界處的信息。破損圖像與校正后的相似圖像之間的位置關系通常有兩種情況:1)校正圖像完全覆蓋破損區域,如圖2a 所示;2)校正圖像部分覆蓋破損區域,如圖2b 所示。

圖2 匹配塊搜索范圍示意圖
針對第一種情況,將最佳匹配塊的搜索范圍限定為:1) 校正后相似圖像中與破損區域重疊的部分以及重疊部分邊界周圍的區域;2) 原圖像中破損區域邊界周圍的區域,如圖2a 中A 框內部區域。
針對第二種情況,將修復優先權和搜索范圍設定為:1)首先對被校正的相似圖像覆蓋的破損區域進行修復,如圖2b 中B 框的內部區域,其最佳匹配塊搜索范圍與第一種情況相同;2)對于在相似圖像中沒有對應的重疊部分的破損區域,設定原始圖像破損區域周圍的已知區域和步驟1)中已經修復的部分區域為其最佳匹配塊的搜索范圍,如圖2b 中C 框的內部區域。
傳統紋理合成算法通常采用最小均方準則來獲取最佳匹配塊,而本文中最佳匹配塊與原圖像塊分屬兩幅不同圖像,在顏色、亮度等方面存在較大差異。因此,在傳統算法[1]的基礎上,引入結構相似度(structural similarity, SSIM),對匹配準則函數加以改進,以提高匹配精度。結構相似度函數定義如下:

式中, x, y代表進行匹配的兩幅圖像; μx, μy為兩幅 圖像的平均灰度; M1, M2為固定常數; σx,σy為圖像的標準差; σxy為圖像的協方差。根據文獻[20]選取 M1=6.50, M2=58.52。改進后的匹配準則定義為:



式 中, φ為待搜索區域。
算法采用python 平臺實現,計算機配置如下:CPU 處理器為Core i9-9900k;主頻為3.60 GHz;內存為64.00 GB。選取“hertford”“triomphe”兩幅破損圖像,這兩幅圖像具有比較復雜的紋理和結構信息。在國際標準數據集Oxford Building Dataset 和Paris Dataset 中搜索其相似圖像,結果如圖3 所示。從圖中可以看出,本算法能夠準確地獲取破損圖像的相似圖像,且校正效果良好。基于相似圖像及改進的匹配準則,破損區域的結構、紋理和圖像內容都得到了合理的修復,修復效果理想。為便于觀察,對紅色矩形框區域做了放大處理。
為了驗證本算法的有效性,任意選取8 幅圖像,人工標記破損區域,從6 個國際標準數據集:FGVC aircraft、 Oxford Building Dataset、 Paris Dataset、Standford-cars、PairsStreet Dataset 和Places2中尋找其相似圖像,分別采用不同經典算法和本文算法進行圖像修復,實驗對比結果如圖4 所示。其中,Kumar[3]算法是紋理合成的最新改進算法,contextual attention (CA)算法[14]是使用注意力機制的神經網絡改進算法,gated convolution (GC)算法[15]是使用門控卷積和生成對抗網絡的最新神經網絡算法。考慮到相似圖像與破損圖像往往具有不同的光照條件,本文結果作了適當的增強處理,以消除光照的影響。

圖3 本文算法的修復效果

圖4 不同算法修復效果對比
從圖4 中可以看出,由于信息來源有限,Kumar算法只能修復部分結構信息,并且存在明顯的結構混亂、斷層,以及紋理傳播錯誤等情況;CA 算法在修復中存在明顯的模糊現象,紋理修復效果不理想,且在結構上存在斷裂、輕微扭曲現象;GC 算法能夠較好地修復出主體結構,但在邊界部分存在扭曲變形,修復痕跡明顯;而本文算法對所有圖像均取得了比較理想的修復效果,結果更加真實可信。
為了分析圖像破損區域大小對最終修復程度的影響,分別選取3 種破損區域大小:1) 100×100 以內;2) 100×100~200×200;3) 200×200~300×300。對圖像進行修復,并計算修復圖像的PSNR 值,結果如表1 所示。從表中可以看出,圖像破損區域越大,可參考的信息越少,出現誤差的概率越大,圖像修復質量逐漸降低。

表1 不同破損區域大小算法性能對比
此外,為了對不同算法性能進行量化評估,從6 個國際標準數據庫中隨機選取200 幅圖像,分別利用經典算法和本文算法進行修復。幾種算法的PSNR、平均訓練時間和運行時間對比結果如表2所示,其中第二行給出了本文算法相比于其他算法的PSNR 值提升率。從表中可以看出,本文方法相比于經典算法,PSNR 值分別提升了13.7%、11.4%及8.1%,修復準確度最高。同時可以看出,Kumar 算法時間消耗過大;CA 算法和GC 算法修復時間最短,但網絡訓練時間過長;與之相比,本文算法雖然修復時間略長,但訓練時間縮短。

表2 不同算法性能對比
本文提出了一種基于相似圖像配準的圖像修復算法,通過尋找破損圖像的相似圖像來擴大信息來源,進而實現復雜圖像的自動修復。實驗結果表明,與傳統深度學習方法相比,本算法訓練時間減少,且修復準確度高,對于具有復雜結構和紋理的圖像,仍然能夠獲得理想的修復效果。