胡德敏,胡鈺媛,褚成偉,胡 晨
(上海理工大學 光電信息與計算機工程學院,上海 200093)
圖像修復[1,2]是數字圖像處理技術的一個重要分支,指通過圖像中未受損的信息對受損區域進行演算從而得到最佳修復效果.這一問題多年來受到圖像處理和計算機視覺界的高度關注,并在該領域取得了關鍵進展[3].
基于補丁[11]的方法使用從相同或其他圖像提取的圖像塊,以便在缺失區域中合成紋理,大多數方法解決了涉及缺失區域中的像素值以及類似圖像塊搜索的優化問題.由于相似的圖像補丁搜索,該優化問題具有很強的非凸性,過早導致局部最小值出現,遠離大缺失區域邊界的像素幾乎不受邊界條件的約束,因此基于補丁的方法容易從其他區域復制不可信的紋理.通常采用人工標注的方法,反復標記這些故障區域,直到算法給出滿意的圖像,但容易造成邊界模糊且人工過程繁瑣.
我們在基于補丁的圖像修復基礎上,提出了一種具有修復區域故障自動檢測的處理方法,用于提高現有圖像修復算法的結果質量.通過訓練卷積神經網絡(CNN)來完成對于補丁的故障檢測,自動確定故障區域,將檢測到的故障區域進行迭代修復,逐步減少故障區域,得到圖像修復的最佳結果.通過實驗將其與手動標記方法和非迭代方法進行了比較.結果表明,相對于其他修復結果,該方法能在一定范圍內降低故障像素與原始缺失區域的面積之比.
圖像修復的方法可以大致分為兩種類型,即基于樣本和基于擴散的方法.基于擴散的方法[4,5]在一定的邊界條件下,將缺失區域邊緣像素一階導數以保證缺失區域邊界的平滑性.它們適用于填充小區域,因為它們不會在區域中合成紋理,會導致修復邊界模糊的偽影,所以不宜處理大區域.基于樣本的方法可以分為基于神經網絡和基于補丁的方法[10].基于神經網絡的方法使用卷積神經網絡(CNN)估計缺失區域中的相似紋理,通過對有缺失區域和無缺失區域的圖像進行訓練.盡管基于神經網絡[6,7]的方法最初只能處理較小的缺失區域,但由于對抗性網絡(GAN)[8].的生成,處理大缺失區域的紋理[9,10]的方法得到應用.基于補丁的方法是根據圖像或其他圖像中的紋理合成缺失區域的紋理,該方法復制圖像補丁中從圖像的其余部分提取的像素值,并且與缺失區域邊界周圍的像素類似.由于它的合成結果很大程度上取決于提取的順序.因此,近幾年來采用的方法都是基于紋理結構和稀疏性來計算缺失區域邊界上的每個像素的優先級[12].由于這種方法在合成區域仍然存在不連續性,在文獻[13]中提出了一種多匹配塊隨機查找像素的迭代方法,該方法將圖像的完整性轉化為一個能量最小化問題,涉及丟失區域中的所有像素值和類似的圖像補丁搜索.由于能量函數的非凸性,該方法迭代過程尋找最佳的圖像補丁,并根據圖像補丁更新像素值,直至收斂.所以,它很容易過早導致局部最小值.這一問題是不可避免的,尤其是在缺失區域較大的情況下,遠離大缺失區域邊界的像素幾乎不受邊界條件的約束,算法會從其他區域復制不真實的紋理.為了解決這個問題,目前采用人工標記出不真實真理區域,對于少量的圖像可以做到精確,但是面對數量較大的圖像時,過程繁瑣且誤差變大.
對于當前人工標記補丁區域故障問題,本文提出了一種精確化、自動化檢測故障區域的處理方法.給定一個圖像缺失區域Ω,首先進行圖像修復,然后通過CNN將Ω中的每個像素劃分為有效或無效.對于分類為無效的像素,再次應用圖像修復算法,引入啟發式閾值對修復圖像多次迭代直至收斂.
設Ω′為是包含任意i∈Ω為中心的核k覆蓋的像素區域,如圖1所示.區域Φ是Ω′的補碼,稱為數據區域.大多數基于補丁的圖像修復算法都被定義為一個優化問題,這使得能量最小化.文獻[13]方法使用以下能量編碼:i)Ω復制Φ中的像素值;ii)相似的圖案通常位于附近區域:
(1)
其中,wi是像素i的權重,它基于距邊界的距離和紋理復雜度;k是控制每個像素的預測范圍的參數.

圖1 缺失區Ω、擴展缺失區Ω′、數據區Φ
SSD(i,j,Hij)是基于圍繞i和j的像素在j附近的某些局部幾何變換為Hij之后的平方差的總和,在它們的方法中,Hij是標識、水平翻轉或垂直翻轉.將xi,xj∈R2作為像素i和j的位置,將I(xi)為xi處的像素值,SSD定義為:
(2)
其中,αij用于調整補丁的亮度.ER是一個正則化術語,用于提取附近像素,這是由公式(3)使用Sigmoid函數定義的.
(3)
其中|K|是K中的像素數,a和b是預定常數,G是大常數.我們通過迭代兩個過程來最小化等式(1)中的能量.第一個過程是解決內部最小化問題,即找到一個以j為中心的圖像補丁,它與以i∈Ω′為中心的補丁最相似.我們可以通過Patch Match算法[15]解決這個問題,大大降低了計算復雜度.第二個過程是計算補丁中的像素值的加權平均值,該加權平均值與每個i∈Ω的像素值I(xi)包括i的補丁最相似.
上述最小化問題容易過早導致出現局部最小值.為了避免這種情況,算法可以通過手動標記開始更多輪修復,以識別缺失區域.我們設計并訓練了一個CNN,使標記自動化,它將原始缺失區域Ω中的每個像素分類為有效或無效.
3.2.1 數據
當手動在循環圖像修復系統中標注故障像素時,他們只看到生成的圖像,無法考慮生成圖像中的語義,因此很難找到故障像素.為了彌補缺失的語義,除了初始圖像修復后的圖像外,我們還考慮了圖像修復過程中可以獲得的額外數據,即圖像修復后的RGB圖像、SSD、到邊界(DB)地圖的距離以及到類似補丁(DSP)的距離.
SSD映射存儲了像素i∈Ω和像素j∈Φ附近的圖像塊之間的差異性,這在大多數圖像修復算法中都得到了應用.故障區域通常包含具有較大SSD值的像素,因為最小化無法找到平滑連接該區域中不同部件的良好圖像補丁.這表明,SSD可以很好地提示尋找故障區域.我們的案例使用修改過的SSD,亮度調整系數在等式(2)中定義.
DB(數據庫映射)存儲缺失區域中的像素和數據區域中的像素之間的最小距離.通常,對于遠離缺失區域Ω和數據區域Φ邊界的像素,圖像修復失敗的可能性更大.因為這些像素幾乎不受周圍數據區域的約束,因此在查找類似的補丁時會受到模糊性的影響.對于此類像素,圖像修復算法可能會放置無效的像素,為了找到這樣的像素,本文使用一個DB數據庫映射.
DSP映射沿兩個軸存儲每個像素及其相關圖像補丁之間的距離.地圖的概念來自于一個物體通常具有一致紋理的事實,因此圖像中的紋理是局部一致的.由于這種紋理位置,圖像修復算法通常會從更近的區域中挑選要復制到像素的圖像塊;否則,生成的圖像可能具有局部不一致的紋理.因此,我們使用每個像素與其相關的圖像補丁之間的距離作為紋理位置,以方便我們的分類任務.
從每個像素到其關聯圖像的相對方向是信息性的,因為絕對方向(相對于圖像水平和垂直軸的方向)并不是信息性的,因此,我們找到了長軸和短軸,其中長軸是大多數類似像素可能所在的方向,短軸是其正交的.為此,我們的方法計算數據區域Φ中所有像素的最相似面的方向直方圖,并使用最有優先權的方向作為主軸.
3.2.2 卷積神經網絡的結構
對于缺失區域Ω中像素i的有效/無效標記,我們提取以像素i為中心的56×56圖像區域,稱為子區域Ri.子區域Ri有7個通道,包括RGB映射(3個通道)、D映射(1個通道)、DB映射(1個通道)和DSP映射(2個通道).
由于這些豐富的輸入數據,我們使用了一個相對較淺的網絡結構,如圖2所示.我們的網絡有三個3×3核卷積層,每個卷積層有30個信道,其次是2×2最大池化層和ReLU非線性.在此之上,它有兩個完全連接的層:下層具有100個單元,具有ReLU非線性,上層具有2個單元,分別對應SOFTMax輸出的有效和無效像素.

圖2 體系結構圖
3.2.3 訓練網絡
為了訓練神經網絡,我們從網上收集了1078張圖片.將這些圖像中的某些對象標記為缺失區域,并應用圖像修復算法.主觀地手動標記成功/失敗像素.通過水平翻轉和調整大小來增強數據.然后,我們從中提取了146556對56×56子區域和有效/無效補丁.為了進行驗證,我們收集了其他78個圖像,并以相同的方式提取了11000對.訓練和驗證集中提取的成功/失敗示例的比率分別為50%和50%.
我們使用SoftMax交叉熵作為訓練損失.為了減輕過度擬合,在完全連接層之前應用了脫落技術.采用隨機梯度下降(SGD)算法對網絡參數進行訓練,最小批量為150,存儲了比驗證數據集具有最佳分類性能的網絡參數.
在手動標記系統中,圖像修復過程和像素有效/無效標記過程依次迭代數次,直到得到滿意的結果.自動化系統也遵循這個流程,但是直到它沒有無效標簽或者達到預定的i次迭代.
本文使用具有兩個可能補丁的SoftMax輸出像素的有效或無效.如果在無效區域中有標記為成功的像素,則圖像修復過程會受到這些像素的約束,導致不合理的紋理,因為標記為成功的像素是固定的,并在隨后的迭代中用作示例.為了避免這個問題,我們在初始修復后將以啟發式閾值θ應用到與迭代m=1…m的成功標簽相對應的輸出.
(4)
其中T是一個預定參數.隨著迭代M的進行,閾值θ逐漸增加,這比僅使用θ=0.5更為收斂,因為額外應用圖像修復得到成功像素通常不會導致質量下降(因為結果不會發生其他變化,所以每次迭代都需要減少無效區域).
基于CNN圖像修復區域故障檢測的迭代方法的算法如下:
算法.基于CNN圖像修復區域故障檢測的迭代算法
輸入:缺失區域Ω填充補丁像素
輸出:迭代后不存在失效像素的補丁
Step 1.int m=1,Q=Ω,Q為屬于Ω的一組像素,必須進行修復,最初,Q=Ω.

Step 3.對每一個p∈P,評估屬于p的k×k鄰域的像素值的一致性水平.
Step 4.完成迭代i:將已修復的像素視為已知像素,并將其從Q中移除.
Step 5.ifQ=?,程序結束.else Q≠?,m:=m+1,重復步驟2、3和4.
由于分類性能不一定與生成圖像的感知質量相關,因此我們用用戶研究的結果來評估修復質量.為了實現CNN,我們使用了Caffe框架[17].在實驗中,手動標記了25個測試圖像中的目標對象,用于訓練和驗證CNN的分類性能.
我們使用驗證數據集上的準確率評估了基于CNN的分類器的分類性能,以發現特征的良好組合.為了進行比較,還評估了基于SVM的分類器,該分類器以扁平和連接的子區域為特征.對于基于CNN的分類器,本文對它們進行了四次訓練,并選擇了最好的一次,由于SGD算法,訓練過程是隨機的,盡管在四次訓練中準確率相對穩定.當SVM訓練長時間不收斂時,我們將SVM訓練中的迭代次數限制為1000次.我們使用了Liblinear,懲罰參數為c=1.
表1 分類精度百分比
Table 1 Percentage of classification accuracy

Comb.#RGBSSDDBDSPCNNSVM1√√√√84.0370.352√√√81.6065.263√√√81.1673.775√√√81.6259.916√√78.2656.637√74.4454.508√√√81.8272.579√√81.4859.7310√79.0468.6411√63.5559.8012√78.5660.79
結果如表1所示.“√”表示在該組合中使用了相應的映射,使用所有映射的組合1明顯優于其他組合.在使用單一類型映射的組合中(即組合7、10、11和12),組合11的精度低于其他組合.這意味著數據庫映射本身對于這個分類任務的用處較小.此外,組合8的低精度率僅使用RGB映射(即圖像修復結果),顯示了我們為該分類任務定制的特征映射的優勢.本文基于CNN的分類器大多優于基于SVM的分類器.
為了顯示迭代策略的參數(即閾值參數T和迭代次數M)的影響,運行本文提出的自動化系統為25個測試圖像生成不同的參數值.
為了說明T是如何影響修復結果的,本文將系統進行圖像測試,T從0.2到0.5,步長為0.05,M固定為3.圖3展示了帶有缺失區域(左)及其初始圖像修復結果(右)的測試圖像示例,用于測試T如何影響結果.圖4顯示了圖3中圖像具有不同T的示例結果.這表明T=0.2過于保守,無效區域幾乎沒有減少.由于缺失區域和無效區域相似,初始和第一輪圖像修復的結果也相似.另一方面,時一些故障像素沒有標記為故障.因為我們當前的系統不會改變像素,一旦它們被標記為成功,反過來又會限制它們接觸的區域的圖像修復.T=0.35的迭代策略比其他策略效果更好.顯示了最終修復結果中不符合紋理區域面積與25個測試圖像原始缺失區域面積之比之間的關系,在T=0.35得到了最小的不符合紋理區域.

圖3 測試圖像示例

圖4 不同T的失敗像素標記和圖像修復
如圖4所示,從左到右不同T的失敗像素標記和圖像修復示例,分別為T=0.2、0.35和0.5.從上到下:第一輪故障像素標記結果、第一輪圖像修復結果和第三輪(最終)圖像修復結果.
如圖5所示,M與25個測試圖像中故障區域面積與原始缺失區域面積之比的平均值之間的關系.結果表明,比值在M=5附近幾乎收斂.因此,我們的自動化系統在初始修復后,將故障像素標記和圖像修復過程重復5次,T=0.35.所有25個測試圖像的結果,以及與文獻[15,16]中的圖像修復方法獲得的結果相比,所提出的迭代系統生成的紋理更加合理.本文還將系統應用于不同M的測試圖像,從1到7,T=0.35.如圖6所示.從左到右,從上到下:缺失區域的原始圖像,初始圖像修復結果,M=1、2、3、4、5、6、7的最終一輪圖像修復后的結果.
為了客觀地評估本文自動化系統修復結果的質量,我們進行了比較與研究,如圖7所示,不同方法修復后得到的結果圖,從左到右:有缺失區域的原始圖像通過(Ⅰ)到(Ⅴ)的方法修復圖像,比較了以下五種方法,以證明迭代系統的有效性:(Ⅰ)文獻[12]中描述的方法、(Ⅱ)文獻[13]方法的迭代應用、(Ⅲ)本文方法(T=0.5,M=1)、(Ⅳ)本文方法(T=0.35,M=5)、(Ⅴ)文獻[14]方法由人工手動標記無效像素.

圖5 參數T和參數M與故障區域和原始缺失區域之比

圖6 不同M最終圖像修復結果
從結果圖7來看,我們的自動化系統(Ⅳ)明顯優于除(Ⅴ)以外的其他系統.對比(Ⅱ)和(Ⅳ),確認了圖像修復結果的質量取決于補丁,即使迭代次數相同.對比(Ⅳ)和(Ⅴ),可以發現(Ⅴ)在紋理與缺失區域紋理相似的數據區域中,當圖像包含較少的區域時是有利的.這是因為本文系統有時將成功像素標記為失敗像素(由于T=0.35),而手動標注則將其標記為盡可能小的區域.因此,帶有人工標注的算法可以使用較大的數據區域來填充較小的區域.尤其是在粗到細的方法中,當對最粗的層次應用圖像補全時,較大的缺失區域會阻礙算法找到最佳的補丁,因為它可能包含在Ω′中,這是缺失區域Ω的擴展.最粗糙層次的不恰當的對應通常保持在最精細的層次,導致不真實的紋理.

圖7 不同方法修復后得到的結果圖
人工循環圖像修復系統是一種很有前途的方法,以獲得更高質量的圖像修復結果.為了減輕人工工作,我們提出了一個自動檢測循環式圖像修復的方法,利用CNN對故障區域進行自動檢測,并為基于補丁的圖像修復定制了大量數據.實驗結果表明,我們的自動化系統優于人工注標記的人工循環系統.我們未來的工作包括尋求更好的網絡架構,例如完全卷積網絡反卷積網絡,可能與集成語義獲取方法,以及增加更深層網絡架構的培訓數據數量等.