殷娟娟



摘要:針對信息缺損的圖像,提出修正傳統像基于樣本塊的圖像修復方法。本文在Criminisi算法的基礎上,提出了滿足于不同結構區域信息自動修復需求的一種樣本塊大小的自適應選取方法,以彌補傳統基于樣本塊的修復算法中忽略圖像紋理結構而使用大小固定不變的樣本塊這一缺陷。并通過實驗進行驗證,結果表明基于樣本塊修正的圖像修復算法可以改善和提高了傳統修復方法實驗的結果和誤差。
關鍵詞:圖像修復;紋理結構;Criminisi算法
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2020)14-0044-03
數字圖像修復是將一幅有破損(或者腐蝕)的圖像,利用某種數字方法填充未知的破損區域的技術,其目的是將缺損圖像修復為完整圖像,且視覺無法察覺。該技術在舊照片修復、景物移除,文物繪畫、壁畫修復,影視作品等許多領域有廣泛的應用。
目前圖像修復算法主要分為三大類:一是基于偏微分方程的小區域破損圖像修復算法,二是基于紋理合成的大區域破損圖像修復算法,三是基于深度學習的圖像修復算法。這些算法的思想和實現步驟各不相同。對于樣本塊修復算法而言,Cri-minisi等人最先提出了以塊為單位的圖像修復技術,該算法主要是通過尋找圖像待修復區域和完好區域之間的最佳匹配來完成圖像的修復。該方法可以修復基于紋理合成的大區域破損圖像,但也存在很多問題,比如該算法中用已知樣本塊補全待修復區域時,樣本塊大小是固定的,如果樣本塊太大對于紋理結構復雜的圖像,就不會得到較好的修復,修復效果不佳;相應的如果樣本塊太小對于待修復區紋理結構單一的圖像,又會顯得耗時。
本文對基于樣本塊的圖像修復算法進行仿真研究,并針對樣本塊的大小進行改進,利用鄰域相關信息自動調整樣本塊大小,以適應不同紋理和結構的修復。
1基于樣本的圖像修復
1.1 Criminisi算法基本思想
基于樣本進行圖像修復的核心思想是利用圖像本身的冗余性,用圖像已知部分的信息來補全未知部分。具體可以分為以下幾個步驟。
首先,根據待修復圖像的結構特征,在待修復區域邊緣處選取優先度最高的像素點P,并以P為中心確定一個n*n大小的樣本塊。
然后,在圖像的完好區域搜索與該樣本塊最相似匹配塊,計算匹配誤差。
最后,將最優匹配塊中的信息復制到待匹配塊中,并更新已修復后像素點的置信度。重復上述步驟,直到全部破損區域修復完成為止。
1.2優先度函數
優先度是指圖像修復過程中待修復區域樣本塊補全的優先次序,根據優先權度的大小順序來確定樣本塊被填充的順序。優先度的計算需要考慮兩個因素:一是周圍像素可信度高的位置要優先修補,二是位于圖像梯度變化劇烈的位置要優先修補。綜合二者得到所有優先度之后,挑選優先度最高的像素優先修補。因而優先度的計算在圖像修復的整個過程中尤為重要,而且直接影響最終的修復效果。各待修補塊的優先度函數定義為:
公式(2)、(3)中,P為待修復區域邊緣上的一點,Ω為圖像中的待修復區域,ψp為以P為中心的待修復塊,ψp表示待修復區域的大小(即其像素點個數),▽IP⊥為p點的等照度線的方向,可以用灰度梯度表示,np是填充前緣aΩ上p點處的法向量,a為歸一化因子(對于灰度圖像,a=255)。
2樣本塊自適應優化方法
2.1 Criminisi改進算法思想
本文的算法思想與Criminisi和傳統的基于樣本塊的算法思想大致相同,只是在一些細節上都采用自己的實現方法。比如,前面介紹的自定義模板大小和顏色選擇等,還有在程序中對置信度的更新均直接采用填充的已知值,這樣既不影響圖像修復結果,也簡化了運算;此外,還在搜索最佳匹配塊的步驟中采用先求模板中匹配塊與目標塊像素點的方差和,再求標準差的運算方法,并結合算法復雜度和圖像處理效果兩方面的考慮,對方差和相同的結果(如4個2的平方和與1個4的平方和,兩者值相同,但為了視覺上的全局一致性,我們會選擇采用前者的值)做了一個求4次方的運算,以獲得更好的匹配,且也不會增加太多的運算量。
2.2改進算法的實現
算法的實現步驟:
(1)根據圖像特征將圖像進行二值化。待修復區域的像素點用0表示,已知區域的像素點用1表示;
(2)尋找填充前緣。條件:在填充前緣的點自身標記為1,且其上下左右四個鄰近點的標記至少有一個1和一個0;
(3)計算邊緣上每個點所在目標塊的優先級。每個像素點的初始置信度設置分別為c(p)=0(p為待填充點)和c(p)=1(p為已知點)。等照度線方向的單位向量可用圖像在x和v方向的灰度梯度表示,邊緣法線單位向量用做好標記的點(即用0和1分別表示未知和已知點)的梯度表示;
(4)在所有目標塊中找出最高優先級的目標塊ψp;
(5)對灰度圖像進行掃描,在已知圖像區域ψ中找出與ψP最匹配的模塊ψq,用于填充ψp區域。可將ψP中已知點的灰度值與ψq中對應點的灰度值進行標準差運算,得出標準差結果中最小的ψq就是我們想要的填充塊;
(6)將ψq的像素值復制到ψp位置;
(7)修改填充后模塊ψp的置信度值:c(p)=c(q)(這里的c(q)是最佳匹配塊ψq的置信度值),同時將已填充了的點標記為1;
(8)重復(2)-(7)步驟(注:像素點的置信度已不再需要初始化);
(9)程序結束。當邊緣點個數為0時,程序結束退出。
3實驗結果與分析
第一組實驗原始圖像大小為100*100,不同位置的掩膜代表不同位置的破損區域,如圖2所示,三組實驗中,圖(a)掩膜位于紋理結構稀疏區域,圖(b)掩膜位于紋理結構密集區域,圖(c)掩膜位于梯度變化劇烈區域,采用Criminisi傳統算法,使用相同尺寸的模板對破損位置不同的圖像進行修復,修復效果分別如三組圖的最后一幅“修復結果”所示。
由圖1(a)、(b)、(c)三組實驗的修復結果可見,破損位置位于圖像紋理結構不明顯的位置時修復結果較好,破損位置位于紋理結構清晰的位置時,修復結果較模糊,而破損區域位于圖像梯度變化較大的邊緣處時,因修復過程中使用固定大小的模板進行搜索修復使填充修補出的效果出現一些誤差。
第二組實驗中原始圖像采用同樣的大小,三組實驗的破損位置位于同一梯度變化較大的位置,在利用改進后的Criminisi算法進行破損圖像的修復實驗,采用不同模板大小,修復效果分別如三組圖的最后一幅“修復結果”所示。
第二組實驗中,(a)圖是帶掩膜的破損圖像,(b)、(c)、(d)三幅圖像分別是在圖像修復處理時采用不同尺寸樣本塊的修復結果。圖(b)是用15*15的樣本塊時的修復結果,顯然眼睛和鼻子的特征被填充到待修復域當中了,這是因為輸入圖像原本就比較單調,且眼睛處的紋理特征與待修復區域十分相似,產生了匹配錯誤從而出現了圖示(b)修復結果一的情況。圖(c)是用9*9的樣本塊時的修復結果,圖(d)是用3*3的樣本塊時的修復結果。當采用3*3模板時,由于每一次迭代時幾乎只填充了模板中一個像素點,而其余的點都用來做運算判斷了,所以盡管輸入的仍然是這幅較為單調的小圖像,在用3*3模板處理后視覺上已經有相對不錯的修復結果了。
4結束語
針對傳統基于樣本塊的修復算法中忽略圖像紋理結構而使用大小固定不變的樣本塊這一缺陷,提出了滿足于不同結構區域信息修復時樣本塊大小修正的方法。然而,評價一個算法的優劣不能只看結果,還要從實施過程的復雜度、運算時長等多角度考量。實驗中我們能夠發現,雖然用較小的樣本塊修復圖像的效果較好一些,但是由于每一次迭代時被真正被填充的個數變少了,導致相應的迭代次數增加,所以總的運行時間變長了。這在處理較大圖像時,增加的時間復雜度會更多,因而算法的性能也需要進一步提升。