劉正男,梁美玉
(安徽信息工程學院 電氣與電子工程學院,安徽 蕪湖 241000)
圖像修復技術歷史悠久,早在中國西漢時期就有修復畫卷的記錄,圖像修復的概念是在文藝復興時期引入的,近年來發展迅速[1-5]。目前,圖像修復可以主要分為兩個方面,一個是基于非紋理結構的處理,另一個是基于紋理的修復。前者又可以分為變分模型和偏微分方程模型(PDE),后者可細分為紋理合成與圖像分解的修復算法。
基于非紋理結構的修復算法是根據已知信息進行空白區域的填補修復,適用于待修復面積較小的情況。Bertalmio等人[6]于2005年在PDE的思路上提出了BSCB(Bertalmio、Sapiro、Casel Ballester)模型,算法的核心是在受損區域的邊緣上利用公式遵從一定的方向傳播至內部,直到填補所有的待修復區域,此算法為圖像修復領域開啟了一個全新的世界。2001年,Chan等人[7-8]提出了一種具有銳化和去噪功能的TV數學模型,該算法不僅盡可能多地保留圖像的邊緣信息,而且復雜度較低,但是存在結構連通性比較差的問題,導致修復結果與原圖之間差異較大,并且由于修復過程中沒有將圖像信息是均勻分布的這一特性考慮進去,導致得到的結果存在不夠清晰的情況。隨后Chan等人[9]針對TV算法出現的缺點,又提出了將幾何信息引入算法以改進處理效果的CDD模型。為了控制和調節圖像修復中的信息擴散過程,該算法在考慮梯度信息之余,還利用了含有曲率k的控制函數,使仿真結果更加理想、視覺更加合理。但由于該算法本身是一個高階方程模型,帶來了很大的計算量,導致修復時間變長的同時也存在處理后期難以收斂的問題,從而得到的仿真圖像也會存在連通性不佳、內容模糊的現象。之后也有很多研究者對這兩個模型進行了一系列的優化與改進[10-13]。
基于紋理結構的修復方法的主要思想是利用一些參數在源區域中尋找和待處理區域最接近的圖像塊進行圖像處理,進而達到修復的目的,該算法在大范圍受損圖像的修復方面具有明顯的優勢。Criminisi等人[14]在2003年提出新的修復算法,首次引入了優先權的概念,利用數據項與置信項的乘積來決定處理的先后次序,而后利用最佳匹配搜索來填補空白區域,考慮了目標對象的結構與紋理,成為圖像修復中的一個里程碑。
Criminisi算法的基本思想是利用被扣圖像的剩余部分的冗余信息來對孔洞進行填充操作,主要分為優先級的計算、最佳匹配塊的搜索并填充以及置信度的更新這3個部分:
1) 優先級用于確定待修復塊的處理次序,解決結構連通性較差的問題;
2) 搜索即根據紋理相似距離(平方差距離和,即SSD)在已知區域中找到最佳匹配塊;
3) 復制即是將最佳匹配塊復制到對應的目標區域位置。
圖1展示了Criminisi算法的一次處理過程。

圖1 Criminisi算法的處理過程

P(p)=C(p)D(p),
(1)
其中:C(p)是置信項,D(p)是數據項。C(p)和D(p)分別定義[14]3為
(2)
(3)
其中:C(q)為待修復塊ψp中像素q的置信項值,未對圖像操作處理前,在圖像信息已知范圍內定義其值為1,在圖像待處理范圍內定義其值為0;|ψp|指的是待修復塊ψp的面積。

(4)
再以目標最優匹配塊對空白部分進行填充,并在此之后對置信度進行更新,進行下一次的修復。
圖2是Criminisi算法的仿真效果圖,其中圖2 (a)是待處理對象,圖2 (b)為經過Criminisi算法處理得到的結果。由結果分析發現,對于待處理圖2(a),本意是移除圖片中右邊男子,但是由于Criminisi算法是從完好區域尋找出與待處理區最為接近的圖像塊并進行填充,于是就出現了圖2(b)的修復結果,僅僅是將中間的女子所在圖像塊進行了復制,此外,還出現了不合理內容的填充問題。

圖2 Criminisi算法仿真圖
Criminisi算法對于待處理面積較大的圖像的修復效果比較理想,然而當目標對象信息比較復雜時,或待修復塊涉及兩個或者多個紋理結構截然不同的區域時,不論是優先權計算函數,還是最佳匹配算法,就會因此出現修復錯亂、仿真效果不夠理想的情況。此外,在修復圖像前,Criminisi算法需要對圖像中的待處理部分進行掩膜操作,可是人為創建的掩膜與真正需要處理的修復區域還是會存在或大或小的差距。在標記掩膜時,為了涵蓋所有的破損區域,人們通常會設計面積較大的掩膜。然而,過大地標注掩膜,勢必會加大圖像處理過程的難度,進而也會增加修復算法的時間成本。
針對上述問題,本研究對原Criminisi算法進行了改進,現將本文算法記為CBC(Corrode、Block、Criminisi),提出以下優化方案:
1)通過腐蝕算法對圖像的掩膜進行處理,避免人為擴大修復區域;
2)針對優先權函數在修復后期為零所導致的修復錯亂的問題,對優先權函數提出了優化;
3)通過分塊的思想對圖像進行分塊修復,避免差距明顯的紋理區域出現修復錯亂。
腐蝕屬于圖形形態學操作,其目的是消除對象的邊界點,使邊界向內部收縮,同時可以消除微小的結構元素。也就是對目標對象中的白色區域進行縮減的過程,經過處理后的圖像白色區域面積要比原圖像中的白色區域面積小。腐蝕可簡單地理解為取局部最小值,將對象中的結構元素進行四處移動,倘若結構元素的所有點都在目標對象內,則該點保留于對象中,否則就會被消除掉(即腐蝕)。
腐蝕算法仿真如圖3所示,其中圖3(a)是原始掩膜圖像,圖3(b)是經過腐蝕處理后得到的效果圖。

圖3 腐蝕處理前后對比效果
經過對比可以看出,白色區域變小了,即掩膜區域變小了,這在一定程度上減輕了人為擴大修復區域的問題,也提高了圖像修復算法的運行效率。因此,可以在圖像修復之前進行適當的腐蝕預處理。
圖4是經過腐蝕預操作后再進行Criminisi修復的結果,其中圖4(a)是原圖,圖4(b)是所得到的結果圖像。

圖4 腐蝕處理后Criminisi算法仿真與原圖對比效果
通過圖4與圖2的結果對比分析可以看出,經過腐蝕操作后再進行Criminisi算法處理的結果盡管沒有達到預期的修復效果,依然是對附近類似人物的復制填充結果,但是處理后的圖像沒有出現破損區域,沒有發生草坪上出現湖水的圖像塊和水邊樹木枝干的情況,整體而言,沒有明顯的圖像處理痕跡,視覺效果更加合理。
利用時間、峰值信噪比、結構相似性給出以上結果的評價參數。

表1 Criminisi算法與腐蝕處理后Criminisi算法的評價結果
根據表1的客觀評價結果,可以看出,經過腐蝕處理后的修復效果更加真實自然,并且由于腐蝕的特性導致修復區域變小,也縮短了圖像修復的時間。
由公式(2)可知,置信項會在修復過程中趨近于0,導致無法確定修復塊的優先次序。而公式(1)僅對待修復塊的結構信息做了一定的計算,但是并沒有考慮到信息的復雜度,因此,這里提出在進行優先權函數的建立時將能反映復雜程度的信息熵考慮在內,具體函數為

(5)
其中Sp代表圖像的信息熵,定義如下:
(6)
其中pi是目標對象中灰度值為i的像素所占的比例。
當C(p)<0.5時,為了避免置信項過低導致數據項無法合理影響破損塊的優先權的情況出現,本研究將Criminisi算法中的數據項與置信項的乘積運算改為兩者相加;當C(p)≥0.5時,由于置信項對于待修復塊的優先權起著很大的作用,所以繼續保持數據項與置信項的相乘運算。
鑒于原Criminisi算法利用匹配準則在整幅圖像中尋找最佳相似塊,故而導致在圖像中出現修復失誤的情況,因此提出在不同紋理區域里分別進行修復的思路。具體思路如下:首先將待修復的對象分割成若干子對象,并且彼此之間沒有重疊的部分,隨后針對每一個子對象做并行修復處理,減小修復范圍的同時也保證了最佳匹配塊的符合度,修復效果如圖5所示。

圖5 Criminisi分塊處理仿真與原圖對比效果
從圖5可以看到,經過分塊處理的圖像再進行圖像修復,已經基本上達到了去除目標人物的要求,只是細節部分仍然有待提高。
本研究融合分塊和腐蝕算法,對Criminisi算法進行改進,先對圖像的掩膜部分進行腐蝕預處理,繼而對圖像進行分塊處理,處理結果如圖6所示。

圖6 CBC算法仿真與原圖對比效果
經過結果對比與分析,可以發現本研究提出的算法不僅對修復圖像實現了要去除目標人物的要求,而且修復后的圖像沒有修復痕跡,在細節方面也取得了比較好的效果。
為了檢驗算法的性能,將CBC算法與Criminisi算法[14]、TV算法[8]、CDD算法[9]的結果進行對比分析。在性能衡量方面,本研究不僅采用了客觀評價還另外組織了主觀評價。
本研究采用峰值信噪比(Peak Signal to Noise Ratio,PSNR)、結構相似性(Structural similarity,SSIM)來對修復算法的效果進行客觀評價。
1) 峰值信噪比PSNR
PSNR是使用最廣泛的一種衡量圖像質量的客觀指標,其值越大表明結果圖像越接近于原始圖像,PSNR的具體計算公式如下:
(7)
2) 結構相似性SSIM
SSIM(用SSIM表示)是一個新的圖像評價指標,用于衡量兩幅圖像的結構相似度,SSIM的值越接近于1說明兩幅圖像的結構越相似,其計算步驟為
(8)
(9)
(10)
SSIM(X,Y)=L(X,Y)*C(X,Y)*S(X,Y),
(11)

由于原圖像與修復所得結果在結構上存在一定的差距,直接對兩者進行客觀評價缺乏說服力,故在接下來的篇幅中,對原圖像進行人為損壞,再利用本研究所提出的修復算法對其進行處理,為了檢驗算法的性能,對CBC算法與Criminisi算法、TV算法、CDD算法的結果進行對比分析,修復結果如圖7所示。

圖7 CBC算法與Criminisi算法、TV算法以及CDD算法的仿真對比效果
據上述不同算法的仿真結果,可以發現,利用本研究方法修復后的圖像整體效果較好,基本上實現了殘缺部分的修復。此外,TV算法和CDD算法由于只進行了1 000次迭代,修復效果不夠理想,沒有達到修復要求,在修復結果中能夠看到修復區域依然存在模糊區域。相較于TV算法和CDD算法,Criminisi算法對于大范圍破損圖像的處理更勝一籌,從修復結果來看,Criminisi算法在很大程度上實現了對殘缺部分的修復,但是修復結果有待改進,與原圖像存在肉眼可見的差距。而本研究算法在Criminisi算法的基礎上提出改進,對掩膜進行腐蝕預處理從而使得修復區域減小,分塊修復的處理方式能夠區別開不同紋理的信息,故而修復效果比較好,同時,改進的優先權函數對圖像處理后期出現的修復錯亂情況起到了一定的抑制作用。但是,由于CBC算法沒有對最佳匹配塊的搜索范圍和匹配準則進行調整和優化,導致部分修復結果仍有優化空間,比如CBC算法對圖7(a)和圖7(f)的圖片的修復效果就出現了不夠理想的情況。
在性能衡量方面,本研究采用峰值信噪比和結構相似性來對算法進行分析,結果如表2所示。

表2 CBC算法與Criminisi算法、TV算法以及CDD算法的對比評價結果
由表2中實驗數據表明:可知TV算法由于其模糊效應,綜合評價結果比較差;CDD算法在TV算法的基礎上引入梯度和曲率信息,修復結果得到了改善,峰值信噪比和結構相似性均有所提高,但對于邊緣待修復區域的處理仍然不夠理想,模糊現象依舊存在;CBC算法在Criminisi算法的基礎上提出了改進,圖像的評價參數均有所提高。
本研究提出的基于腐蝕和分塊處理的圖像修復算法利用腐蝕算法對圖像進行預處理,減輕了人為擴大修復區域的問題;然后通過信息熵對優先權函數進行了優化,抑制了修復錯亂的問題;最后引入分塊的思想對不同區域進行分塊修復。通過一系列的數據對比和經過對處理后的圖像效果進行分析,本研究算法在邊緣破損圖像的處理效果較好,取得了比較高的峰值信噪比、結構相似性,細節部分也得到了較好處理。但是CBC算法對于大面積破損圖像的修復效果不夠理想,原因是CBC算法未對最佳匹配塊的搜索區域和匹配準則做出調整,后續工作將進一步對其完善。