本發明屬于數字圖像修復技術領域,具體一種稀疏度約束和字典原子大小自適應的彩色圖像修復方法。
背景技術:
傳統的圖像修復方法分為兩類:一類是基于偏微分方程的方法。該方法本質上是一種擴散過程,但在修復大面積區域時存在明顯模糊。另一類是基于紋理合成的方法。該方法用匹配塊替換待修復塊,當找不到匹配塊時就會產生錯誤匹配并延續錯誤。為了解決貪婪性造成的錯誤匹配,人們對算法進行了很多改進,但仍然避免不了錯誤的匹配和加權圖像塊過多帶來的模糊。最近,一種新的圖像稀疏表示方法在圖像處理領域得到重視,許多學者將稀疏理論運用到圖像修復的方法中。
同時研究發現,在傳統稀疏表示的圖像修復算法中,字典原子大小往往是固定不變的,在修復紋理區域時,會因字典原子過大產生模糊的現象,而在修復平滑區域時,會因字典原子過小導致區域的延伸,從而影響圖像修復效果;其次,rgb顏色模型三通道間的相關性以及其結構復雜性導致修復效果的不理想,圖像修復過程中較少考慮修復塊的優先順序會使得結構邊緣修復效果不理想。
備注:為了比較本發明算法的優越性,與下列相關修復算法進行了比較。
修復算法[1]:
修復算法[2]:huangw,wangsw,yangxp,etal.dunhuangmuralsin-paintingbasedonimagedecomposition[j].shandongdaxuexuebao(gongxueban),2010,40(2):24-27.
修復算法[3]:xuz,sunj.imageinpaintingbypatchpropagationusingpatchsparsity[j].imageprocessing,ieeetransactionson,2010,19(5):1153-1165.
技術實現要素:
本發明的目的是針對現有技術的不足,為了較好地修復圖像的結構信息,采用待修復塊的結構稀疏性大小和邊緣判別因子來調整修復優先權,通過分析修復塊位于紋理、邊緣、平滑等不同區域的結構信息,自適應確定字典原子的大小,提供一種稀疏度約束和字典原子大小自適應的彩色圖像修復方法。
本發明解決其技術問題所采取以下技術方案:
將彩色圖像從rgb顏色空間映射到yuv顏色空間分層進行修復,這樣在分別對三個分量修復時,可消除分量之間相關性對修復產生的干擾;引入優先權決定待修復塊的修復的先后順序。由于圖像的點、線結構具有稀疏性,與鄰域相似度較低,可以采用結構稀疏度來定義優先級,確定圖像的邊緣修復要優先于紋理區域的修復;結合結構稀疏性和邊緣判別因子自適應選擇字典原子大小,并采用k-svd方法完成字典的訓練,以保字典原子的具有自適應性。具體實現步驟如下:
步驟1、rgb顏色空間到yuv顏色空間的映射
先利用rgb顏色模型與yuv顏色模型之間的轉化公式,將圖像從rgb空間映射到yuv空間。為了克服rgb顏色模型三通道間的相關性以及其結構復雜性導致修復效果的不理想,本發明在yuv顏色空間對破損圖像進行修復。yuv模型是用亮度和色度來表示顏色信息,其中,y表示亮度,u和v表示色度,三分量之間彼此相互獨立。yuv模型中的亮度y與rgb模型中的r、g、b三個顏色分量的轉換關系可以表示為:
y=0.3r+0.59g+0.11b(1)
色度信息u和v是由b-y、r-y按照不同的比例混合而成的,gamma校準之后其模型之間的轉化公式為:
步驟2、確定結構稀疏度及待修復塊的修復順序,實現對y、u、v分量進行修復,具體如下:
采用sobel算子對圖像待修部分的邊緣進行提取,然后確定結構稀疏度及待修復塊的修復順序。
為了確定圖像的邊緣修復要優先于紋理區域的修復。利用圖像的點、線結構具有稀疏性與鄰域相似度較低的特點,采用結構稀疏度來定義優先級。
設待修復圖像i,破損區域ω,源區域
其中n(p)表示鄰域中圖像塊的總數量,ns(p)為n(p)中已知圖像塊的集合。|ns(p)|表示鄰域中已知圖像塊的數量。ωp,k表示待重構塊ψp與ns(p)集合中已知圖像塊ψk的相似度,即ωp,k定義了待修復塊與其鄰域之間的相似程度,其定義為:
其中,d(,)表示兩個圖像塊已知像素的均方距離,z(p)為歸一化系數,σ為一常數(一般取σ=5)。由此,優先權定義為:
p(p)=s(p)·c(p)(5)
其中c(p)為置信度項,其大小定義為:
其中|ψp|為待修復塊ψp的面積。函數c(p)初始化定義為:
在優先權函數定義中,置信度c(p)大小表示待修復塊中已知信息的多少,對其優先權的大小影響較為有限,而結構稀疏度s(p)是決定塊優先修復的主要因素。雖然利用塊結構稀疏度可以很好的判別平滑部分,但是在紋理和邊緣區域,用塊結構稀疏度來判別修復塊的優先級會出現誤差,甚至出現部分紋理區域的塊結構稀疏度大于邊緣區域的稀疏度的現象。研究中發現,其一,位于平滑區域的待修復塊的結構稀疏度要小于位于邊緣區域或紋理區域的待修復塊的結構稀疏度。因此,可以利用結構稀疏度s(p)大小來判別待修復塊位于平滑區域還是位于紋理區域或邊緣區域;其二,雖然大多數位于邊緣區域的待修復塊的結構稀疏度大于位于紋理區域的待修復塊的結構稀疏度,但也出現二者相近,甚至出現位于紋理區域的待修復塊的修復優先度大于位于邊緣區域的待修復塊的修復優先度,打破了邊緣的修復優先級高于紋理的修復優先級的圖像修復規則,會導致修復效果不佳。因此,利用結構稀疏度s(p)不能準確的判別待修復塊是位于邊緣區域還是位于紋理區域。
為了克服僅用結構稀疏度大小來判別是否為邊緣區域或紋理區域存在的不足,在本發明中,引入一個邊緣判別因子β,并對優先權函數重新定義。
將待修復塊ψp沿著法線方向進行分割,待修復塊ψp被分割成大小均勻的塊1(記為p1)和塊2(記為p2)。分別對p1和p2的已知像素求均值e(p1)和e(p2)。判別因子β被定義為:
β=|e(p1)-e(p2)|/α(8)
其中,α是歸一化參數,一般取α=255。
結合結構稀疏性s(p)和邊緣判別因子β的特性,對優先權函數p(p)重新定義,其大小為:
p(p)=s'(p)·c(p)(9)
式中,s'(p)的取值取決于待修復塊所處的區域結構,其大小由以下原則決定:
(1)平滑區域塊。s(p)值的大小可以較好的區別平滑區域與紋理區,因此,可設定一個閾值為γ(γ為經驗常數,一般取0.0500),當結構稀疏度s(p)小于該閾值時待修復塊位于平滑區域,反之則位于邊緣紋理區域。因此,當修復塊位于平滑區域時:
s'(p)=s2(p)(10)
(2)邊緣或紋理區域塊。在判別紋理和邊緣區域時,根據表3的數據分析,利用判別因子β來進行判別,即設定一個閾值λ(λ為經驗常數,一般取0.1000)。當判別因子β小于閾值λ時,表明待修復塊位于紋理區域,這時s'(p)的大小為:
s'(p)=s2(p)(11)
否則待修復塊位于邊緣區域:
s'(p)=s(p)(12)
步驟3、自適應確定字典原子大小及字典的訓練。
由于邊緣區域和紋理區域具有較多的細節信息,而小尺度的字典原子能夠捕獲圖像細小的特征,有利于邊緣和紋理區域破損修復時的稀疏重構。平滑區域細節信息較少具有整體性,而大尺度的字典原子能夠描述圖像的整體特征,較為適合用于平滑區域的稀疏重構。為了確保字典原子大小的選擇具有自適應性,對于圖像不同結構區域的信息重構,應根據待修復區域的結特征,自適應地選擇更優的字典原子大小,以滿足不同結構區域修復的需要。因此,本發明利用待修復塊所處區域結構的不同,自適應的選擇合適的原子大小的字典,即結合結構稀疏性s(p)和邊緣判別因子β自適應選擇字典原子大小,其選擇原則如下:
(1)當結構稀疏性s(p)小于其閾值γ時,待修復塊位于平滑區域,重構該待修復塊時,采用大小為9×9原子的字典。
(2)當結構稀疏性s(p)大于閾值γ且判別因子β小于閾值λ時,待修復塊位于復雜紋理區域,重構該待修復塊時,采用大小為7×7原子的字典。
(3)當結構稀疏性s(p)大于閾值γ且判別因子β大于閾值λ時,待修復塊處于邊緣區域,重構該待修復塊時,采用大小為5×5原子的字典。
在字典訓練時,為了提高字典的完備性,字典訓練塊不僅從待修復圖像中提取,同時也從公共圖像庫中選取一部分自然圖像中提取,以訓練獲得三個原子大小分別為9×9、7×7、5×5的字典。
在字典訓練過程中,字典d為未知需要為其預定義初始值,然后依次獲取稀疏編碼以及更新字典。假設y={yi|i∈ω}表示從待修復圖像中已知信息區域與自然圖像中隨機抽取的待訓練樣本集,在本發明中,采用k-svd方法求解待訓練的樣本集合所對應的字典。用k-svd算法訓練樣本集合所對應字典的過程可描述為:
其中,d=[d1,d2,…,dl]是過完備字典,k<<l表示xi的最大稀疏度為k;
式中,dx分解成秩為1的k個矩陣和,其中k-1項為固定項,余下的1項為更新項。ek表示去掉相對應原子后,對樣本集產生的誤差;然后,對ek進行svd分解,更新相對應的原子dk。按照上述步驟,將字典{d1,d2,…,dl}中的所有原子都進行更新,即完成了字典d的訓練。
步驟4、更新邊緣,并重復第二、三步驟直至圖像完成修復。
本發明有益效果如下:
在傳統稀疏表示的圖像修復算法中,由于字典原子大小固定不變,在修復紋理區域時,會因字典原子過大產生模糊的現象,在修復平滑區域時,會因字典原子過小導致區域的延伸;其次,在修復過程中,在紋理和邊緣區域,僅用塊結構稀疏度來判別修復塊的優先級會出現誤差,使得結構邊緣修復效果不理想。為了較好地修復圖像的結構信息,本發明從考慮字典原子大小的自適應性的角度,結合樣本稀疏表示和結構約束修復的優點,以提高彩色圖像的修復效果。
本發明為了較好地修復圖像的結構信息,采用待修復塊的結構稀疏性大小與邊緣判別因子來調整修復優先權,以確定邊緣修復要優先于紋理區域的修復;其次,采用結構稀疏性大小和邊緣判別因子,自適應地確定字典原子大小,以提高字典的自適應性。
附圖說明
圖1為本發明的流程圖。
圖2塊結構稀疏性計算原理圖
圖3邊緣判別因子計算原理圖
圖4(a)-(d)不同優先權函數及本發明算法對破損圖baboon的修復效果比較
圖5(a)-(d)不同優先權函數及本發明算法的對破損圖barb的修復效果比較
圖6(a)-(f)利用原子大小不同的字典以及本算法采用自適應大小字典修復的圖像
圖7(a)-(f)為分別采用修復算法[1]、修復算法[2]、修復算法[3]以及本發明算法對破損lena圖像修復結果的比較。
圖8(a)-(f)為分別采用修復算法[1]、修復算法[2]、修復算法[3]以及本發明算法對破損baboon圖像修復結果的比較。
圖9(a)-(f)為采用上述算法對圖像中英文字母去除處理結果的比較。
圖10(a)-(e)為采用不同優先權或字典原子大小對破損lena圖像修復結果的比較。
圖11(a)-(e)為采用不同優先權或字典原子大小對baboon圖像修復結果的比較。
具體實施說明
下面結合附圖對本發明實施例作詳細說明。
在本實施例中,圖1給出的本發明的流程圖。
第一步:rgb顏色空間到yuv顏色空間的映射。
先利用rgb顏色模型與yuv顏色模型之間的轉化公式,將圖像從rgb空間映射到yuv空間。為了克服rgb顏色模型三通道間的相關性以及其結構復雜性導致修復效果的不理想,本發明在yuv顏色空間對破損圖像進行修復。yuv模型是用亮度和色度來表示顏色信息,其中,y表示亮度,u和v表示色度,三分量之間彼此相互獨立。yuv模型中的亮度y與rgb模型中的r、g、b三個顏色分量的轉換關系可以表示為:
y=0.3r+0.59g+0.11b(1)
色度信息u和v是由b-y、r-y按照不同的比例混合而成的,gamma校準之后其模型之間的轉化公式為:
然后,對y、u、v分量分別進行修復。
第二步:結構稀疏度及待修復塊的修復順序的確定。
對于圖像待修部分的邊緣提取,采用sobel算子實現;然后在此基礎上,確定結構稀疏度及待修復塊的修復順序。
為了確定圖像的邊緣修復要優先于紋理區域的修復。利用圖像的點、線結構具有稀疏性與鄰域相似度較低的特點,采用結構稀疏度來定義優先級。
如圖2所示,設待修復圖像i,破損區域ω,源區域
其中,n(p)表示鄰域中圖像塊的總數量,ns(p)為n(p)中已知圖像塊的集合。|ns(p)|表示鄰域中已知圖像塊的數量。ωp,k表示待重構塊ψp與ns(p)集合中已知圖像塊ψk的相似度,即ωp,k定義了待修復塊與其鄰域之間的相似程度,其定義為:
其中,d(,)表示兩個圖像塊已知像素的均方距離,z(p)為歸一化系數,σ為一常數(一般取σ=5)。由此,優先權可以定義為:
p(p)=s(p)·c(p)(5)
其中c(p)為置信度項,其大小定義為:
其中,|ψp|為待修復塊ψp的面積。函數c(p)初始化定義為:
在優先權函數定義中,置信度c(p)大小表示待修復塊中已知信息的多少,對其優先權的大小影響較為有限,而結構稀疏度s(p)是決定塊優先修復的主要因素。雖然利用塊結構稀疏度可以很好的判別平滑部分,但是在紋理和邊緣區域,用塊結構稀疏度來判別修復塊的優先級會出現誤差,甚至出現部分紋理區域的塊結構稀疏度大于邊緣區域的稀疏度的現象。研究中發現,其一,位于平滑區域的待修復塊的結構稀疏度要小于位于邊緣區域或紋理區域的待修復塊的結構稀疏度。因此,可以利用結構稀疏度s(p)大小來判別待修復塊位于平滑區域還是位于紋理區域或邊緣區域;其二,雖然大多數位于邊緣區域的待修復塊的結構稀疏度大于位于紋理區域的待修復塊的結構稀疏度,但也出現二者相近,甚至再現位于紋理區域的待修復塊的修復優先度大于位于邊緣區域的待修復塊的修復優先度,打破了邊緣的修復優先級高于紋理的修復優先級的圖像修復規則,會導致修復效果不佳。因此,利用結構稀疏度s(p)不能準確的判別待修復塊是位于邊緣區域還是位于紋理區域。
為了克服僅用結構稀疏度大小來判別是否為邊緣區域或紋理區域存在的不足,在本發明中,引入一個邊緣判別因子β,并對優先權函數重新定義。
如圖3所示,將待修復塊ψp沿著法線方向進行分割,待修復塊ψp被分割成大小均勻的塊1(記為p1)和塊2(記為p2)。分別對p1和p2的已知像素求均值e(p1)和e(p2)。判別因子β被定義為:
β=|e(p1)-e(p2)|/α(8)
其中,α是歸一化參數,一般取α=255。
結合結構稀疏性s(p)和邊緣判別因子β的特性,對優先權函數p(p)重新定義,其大小為:
p(p)=s'(p)·c(p)(9)
式中,s'(p)的取值取決于待修復塊所處的區域結構,其大小由以下原則決定:
(1)平滑區域塊。s(p)值的大小可以較好的區別平滑區域與紋理區,因此,可設定一個閾值為γ(γ為經驗常數,一般取0.0500),當結構稀疏度s(p)小于該閾值時待修復塊位于平滑區域,反之則位于邊緣紋理區域。因此,當修復塊位于平滑區域時:
s'(p)=s2(p)(10)
(2)邊緣或紋理區域塊。在判別紋理和邊緣區域時,根據表3的數據分析,利用判別因子β來進行判別,即設定一個閾值λ(λ為經驗常數,一般取0.1000)。當判別因子β小于閾值λ時,表明待修復塊位于紋理區域,這時s'(p)的大小為:
s'(p)=s2(p)(11)
否則待修復塊位于邊緣區域:
s'(p)=s(p)(12)
圖4(a)-(d)和圖5(a)-(d)分別給出了采用本發明定義的優先權函數與傳統定義的優先權函數對破損圖babon和barb修復結果的比較。從修復效果對比可以看出,利用本發明定義的優先權函數,保證了邊緣部分會優先得到修復,抑制了紋理的延伸,使修復圖像更具有完整性,獲得了較好的修復效果。
第三步:自適應確定字典原子大小及字典的訓練。
由于邊緣區域和紋理區域具有較多的細節信息,而小尺度的字典原子能夠捕獲圖像細小的特征,有利于邊緣和紋理區域破損修復時的稀疏重構。平滑區域細節信息較少具有整體性,而大尺度的字典原子能夠描述圖像的整體特征,較為適合用于平滑區域的稀疏重構。為了確保字典原子大小的選擇具有自適應性,對于圖像不同結構區域的信息重構,應根據待修復區域的結特征,自適應地選擇更優的字典原子大小,以滿足不同結構區域修復的需要。因此,本發明利用待修復塊所處區域結構的不同,自適應的選擇合適的原子大小的字典,即結合結構稀疏性s(p)和邊緣判別因子β自適應選擇字典原子大小,其選擇原則如下:
(1)當結構稀疏性s(p)小于其閾值γ時,待修復塊位于平滑區域,重構該待修復塊時,采用大小為9×9原子的字典。
(2)當結構稀疏性s(p)大于閾值γ且判別因子β小于閾值λ時,待修復塊位于復雜紋理區域,重構該待修復塊時,采用大小為7×7原子的字典。
(3)當結構稀疏性s(p)大于閾值γ且判別因子β大于閾值λ時,待修復塊處于邊緣區域,重構該待修復塊時,采用大小為5×5原子的字典。
在字典訓練時,為了提高字典的完備性,字典訓練塊不僅從待修復圖像中提取,同時也從公共圖像庫中選取一部分自然圖像中提取,以訓練獲得三個原子大小分別為9×9、7×7、5×5的字典。
在字典訓練過程中,字典d為未知需要為其預定義初始值,然后依次獲取稀疏編碼以及更新字典。假設y={yi|i∈ω}表示從待修復圖像中已知信息區域與自然圖像中隨機抽取的待訓練樣本集,在本發明中,采用k-svd方法求解待訓練的樣本集合所對應的字典。用k-svd算法訓練樣本集合所對應字典的過程可描述為:
其中,d=[d1,d2,…,dl]是過完備字典,k<<l表示xi的最大稀疏度為k;
其中,dx分解成秩為1的k個矩陣和,其中k-1項為固定項,余下的1項為更新項。ek表示去掉相對應原子后,對樣本集產生的誤差;然后,對ek進行svd分解,更新相對應的原子dk。按照上述步驟,將字典{d1,d2,…,dl}中的所有原子都進行更新,即完成了字典d的訓練。
圖6(a)-(f)分別給出了利用不同原子大小的字典以及本發明算法采用自適應大小字典修復圖像的效果。從圖6中可以發現,小尺度的字典原子有利于邊緣和紋理的修復,而平滑部分大尺度的原子的字典較為有優勢,自適應修復效果要比原子大小固定的字典修復效果好。原子大小7×7的字典的效果相對5×5和9×9要好,所以過大的原子或者過小的原子都會使修復效果變差。在簡單紋理區域采用較大的字典原子,可以克服因字典原子太小而導致的延伸現象。而在復雜紋理區域和邊緣區域因為紋理比較豐富則需要較小的字典原子,可以避免因字典原子過大而導致修復的模糊]。因此,僅使用固定大小的字典,并不能滿足各個區域不同結構的需求,而本發明較好地克服這一不足。
第四步:更新邊緣并重復第二、三步驟直至圖像完成修復。
為了檢驗本發明算法的修復效果,對圖像進行了模擬仿真,并與其他算法進行了對比實驗。仿真實驗在matlab環境下進行。在對圖像修復效果評時,除了采用主觀評價外,同時也采用峰值信噪比(psnr)進行客觀評價。
圖7分別給出了四種修復算法對lena彩色圖像小塊破損(30×20,15×40,20×20,25×15,15×30)的修復效果的比較。從修復效果中可以看出,修復算法[1]由于在修復過程中未考慮修復優先權的問題,導致其修復效果不理想。修復算法[2]、修復算法[3]以及本發明算法對于小塊破損處于平滑區域的修復效果的效果較好。但破損塊位于邊緣區域的時候,修復算法[2]和修復算法[3]效果較差,如在肩膀部分修復的時候,出現了邊緣斷裂、紋理延伸、以及紋理模糊的現象,修復痕跡較為明顯,本發明的方法修復的圖像更加自然和諧具有整體性。
圖8分別給出了四種修復算法對baboon彩色圖像大塊破損(25x45,25x90,35x35)的修復效果的比較。從修復效果中可以看出,修復算法[1]、修復算法[2]、修復算法[3]對于大塊破損區域位于平滑部分的修復出現了紋理延伸的現象,在紋理以及邊緣部分的修復時,都出現了邊緣不連續,紋理部分模糊的現象。本發明的算法較好的改善了該缺陷,不論在平滑區域的較大塊破損還是邊緣紋理區域的較大塊破損,都取得了較好的修復效果,符合人眼的視覺效果。
圖9分別給出了四種修復算法對文字去除效果的比較。修復算法[1]修復效果較為不理想,而修復算法[2]、修復算法[3]與本發明算法在平滑區域的修復都有較好的效果。但修復算法[2]在邊緣區域的修復有邊緣斷裂的現象,修復算法[2]和修復算法[3]在細節修復上較為模糊,而本發明算法在邊緣、細節上的修復效果則較為理想。
另外,實驗中也對分別對不改進優先權函數只改變字典原子大小的修復效果和只改進優先權函數字典不改變原子大小做了對比實驗。圖10和圖11分別給出了作不同改進時的修復效果,從圖中可以看出,優先權函數未改進前,在邊緣上的修復容易出現紋理延伸的情況,修復邊緣出現斷裂;采用固定大小的字典,在邊緣紋理處會有模糊的現象導致修復效果不佳;采用改進的優先權函數與原子大小自適應相結合的本發明算法,有效的改善了修復效果。
從以上實驗仿真數據可以看出,本發明采用改進的優先權函數并結合自適應選擇字典原子大小,克服了傳統優先級函數在修復過程中出現的紋理延伸,改善了傳統稀疏修復算法采用固定大小字典修復出現的紋理模糊現象,使得修復效果有較好的提高,更加符合人眼的視覺效果。
以上對本發明的優選實施例及原理進行了詳細說明,對本領域的普通技術人員而言,依據本發明提供的思想,在具體實施方式上會有改變之處,而這些改變也應視為本發明的保護范圍。