肖 濤,唐向宏,任玉升
(1.杭州電子科技大學(xué)通信工程學(xué)院,浙江 杭州 310018;2.浙江水利水電學(xué)院電氣工程學(xué)院,浙江 杭州 310018)
圖像修復(fù)的目的在于填充破損圖像中缺失部分的像素點(diǎn),使修復(fù)結(jié)果對(duì)人眼視覺具有一定的欺騙性。針對(duì)大面積破損情況,Criminisi等[1]提出的樣本塊紋理合成方法取得了較好修復(fù)效果,但當(dāng)樣本匹配發(fā)生錯(cuò)誤或原圖中無法找到合適的樣本塊時(shí),導(dǎo)致修復(fù)錯(cuò)誤。在此基礎(chǔ)上,人們進(jìn)行了大量改進(jìn)。Xu等[2]改進(jìn)了優(yōu)先權(quán)計(jì)算填充法則,以稀疏表示代替單一樣本塊的方法修復(fù)較大破損面積的圖像,但當(dāng)大面積破損區(qū)域中包含物體顯著結(jié)構(gòu)和復(fù)雜的紋理信息時(shí),仍難以獲得良好的修復(fù)效果。Sun等[3]提出一種人工交互的圖像修復(fù)算法,首先根據(jù)先驗(yàn)知識(shí),用一組簡單的曲線來補(bǔ)全破損物體缺失的輪廓;然后用結(jié)構(gòu)傳達(dá)(Structure Propagation,SP)方法,將破損物體的已知輪廓結(jié)構(gòu)沿著人工交互曲線傳達(dá)進(jìn)入破損區(qū)域,實(shí)現(xiàn)破損輪廓的重建;最后采用樣本塊合成方法修復(fù)紋理部分。對(duì)于物體輪廓結(jié)構(gòu)較簡單且只有部分破損的圖像來說,具有較好的修復(fù)效果,但當(dāng)物體結(jié)構(gòu)輪廓復(fù)雜且完全缺失時(shí),修復(fù)效果較差。Chen等[4]提出一種全自動(dòng)圖像修復(fù)算法,通過提取圖像的主要結(jié)構(gòu),以張量投票的方式,自動(dòng)將破損區(qū)域邊界的結(jié)構(gòu)線在破損區(qū)域內(nèi)部連接起來。但破損輪廓復(fù)雜時(shí),難以獲得較好的修復(fù)效果。近年來,深度學(xué)習(xí)和數(shù)據(jù)驅(qū)動(dòng)技術(shù)已用于圖像修復(fù)領(lǐng)域[5-8]。Pathak等[5]通過學(xué)習(xí)全圖的上下文圖像特征,采用破損區(qū)域周邊信息的約束來修復(fù)圖像,但在破損區(qū)域輪廓結(jié)構(gòu)復(fù)雜情況下,出現(xiàn)前背景融合、紋理錯(cuò)誤等現(xiàn)象。Gao等[8]結(jié)合人工交互和數(shù)據(jù)驅(qū)動(dòng)的方式提出一種借助數(shù)據(jù)庫匹配圖像的圖像修復(fù)算法。先由用戶交互曲線補(bǔ)全物體缺失的輪廓,再通過匹配樣本圖像,用結(jié)構(gòu)傳達(dá)方式將匹配圖像中的物體輪廓傳達(dá)到破損物體上,重建物體輪廓,最后用樣本塊紋理合成方法修復(fù)紋理部分,取得了較好的修復(fù)效果,但是,在結(jié)構(gòu)傳達(dá)時(shí),有時(shí)會(huì)將匹配圖像的背景信息誤傳達(dá)給破損圖像,在紋理修復(fù)時(shí)出現(xiàn)前背景融合、紋理合成錯(cuò)誤等現(xiàn)象。本文在研究如何有效還原大面積破損物體結(jié)構(gòu)信息的基礎(chǔ)上,提出一種基于匹配圖像和像素點(diǎn)紋理合成的圖像修復(fù)算法。采用人工交互和數(shù)據(jù)驅(qū)動(dòng)的方式來提升對(duì)復(fù)雜輪廓結(jié)構(gòu)的修復(fù)效果,采用前背景分離像素點(diǎn)紋理合成方式來改善紋理修復(fù)效果,進(jìn)一步提升了破損圖像的修復(fù)質(zhì)量。
針對(duì)大面積破損導(dǎo)致物體結(jié)構(gòu)完全缺失的情況,本文提出一種基于匹配圖像和像素點(diǎn)紋理合成的圖像修復(fù)算法。首先,結(jié)合先驗(yàn)知識(shí),由人工交互指導(dǎo)曲線補(bǔ)全物體缺失的主體結(jié)構(gòu)并提取物體輪廓;然后,與圖像數(shù)據(jù)庫中的物體依次進(jìn)行輪廓和紋理匹配,找到含有與破損物體結(jié)構(gòu)和紋理最相近的匹配樣本圖像,采集匹配樣本圖像中的物體輪廓樣本區(qū)塊,構(gòu)造不含背景信息的輪廓樣本區(qū)塊字典;接著,采用結(jié)構(gòu)傳達(dá)方法將輪廓樣本字典傳達(dá)到破損物體,完成物體輪廓結(jié)構(gòu)的修復(fù);最后,采用基于像素點(diǎn)的紋理合成方法,分別修復(fù)背景和前景破損區(qū)域的紋理,實(shí)現(xiàn)對(duì)破損圖像的整體修復(fù)。實(shí)現(xiàn)流程如圖1所示。
圖1 本文算法實(shí)現(xiàn)流程
為了構(gòu)建圖像數(shù)據(jù)庫,本文采用Grabcut方法對(duì)圖像進(jìn)行前背景分離,用基于拓?fù)溥壿嫿Y(jié)構(gòu)的二值邊界追蹤法來提取物體的輪廓。由于圖像中的物體包含輪廓結(jié)構(gòu)和紋理色彩信息,因此在圖像數(shù)據(jù)庫中尋找最佳匹配圖像時(shí)要同時(shí)考慮到這2種信息。本文采用文獻(xiàn)[8]中定義的匹配消耗(Matching Cost,MC)來度量,即:
C=αCs+βCt
(1)
式中,Cs為物體輪廓匹配時(shí)的消耗,Ct為物體紋理色彩匹配時(shí)的消耗;參數(shù)α與β的大小選取決定了結(jié)構(gòu)和紋理在匹配時(shí)候所占的權(quán)重,α+β=1。由于本文側(cè)重物體的輪廓結(jié)構(gòu),所以取α=0.8,β=0.2。輪廓匹配屬于物體識(shí)別和物體分類的范疇,其中一類是將物體輪廓進(jìn)行采樣,使其整體輪廓變?yōu)镹個(gè)離散的點(diǎn),然后通過分布計(jì)算這N個(gè)點(diǎn)的空間分布情況,即通過形狀上下文來描述物體輪廓[9]。本文算法主要考慮物體外部輪廓的匹配,因此選用形狀上下文來計(jì)算輪廓匹配消耗Cs,即2個(gè)取樣點(diǎn)間的形狀上下文的匹配消耗為:
(2)
式中,Ci,j為第1個(gè)物體輪廓上的采樣點(diǎn)pi和第2個(gè)物體輪廓上的采樣點(diǎn)qj的形狀上下文匹配消耗;hi(k)為采樣點(diǎn)pi的形狀上下文,hj(k)為采樣點(diǎn)qj的形狀上下文。
將pi放置在極坐標(biāo)的圓心位置,將極坐標(biāo)均等分為5×12共計(jì)60個(gè)小格,統(tǒng)計(jì)其余采樣點(diǎn)落于這些小格子的數(shù)目就可以獲得該點(diǎn)的形狀上下文hi(k)。當(dāng)hi(k)與hj(k)越接近時(shí),說明這2點(diǎn)的周圍采樣點(diǎn)在空間上的分布越相近,Ci,j就越??;K代表采樣點(diǎn)個(gè)數(shù),本文取K=100。對(duì)于2個(gè)輪廓上的所有點(diǎn)對(duì)(pi,qπ(i)),總的形狀上下文的匹配消耗為:
Cs=∑iC(pi,qπ(i))
(3)
式中,C(pi,qπ(i))為2個(gè)待匹配的輪廓上第i個(gè)點(diǎn)的形狀上下文匹配消耗,π(i)為對(duì)i點(diǎn)匹配后對(duì)應(yīng)的點(diǎn)。
為了避免因破損圖背景紋理與匹配圖背景紋理存在較大差異導(dǎo)致匹配出現(xiàn)較大誤差,本文將前景與背景分離,只匹配物體內(nèi)部的紋理信息。采用準(zhǔn)確反映圖像的局部紋理特征和顏色信息的局部二值模式(Local Binary Pattern,LBP)特征向量來描述物體紋理,2個(gè)LBP特征向量匹配方式為:
(4)
(5)
這樣,通過式(1)匹配消耗的最小化就可以從圖像數(shù)據(jù)庫中找出包含與破損圖中最相似物體的樣本匹配圖像。
圖2給出了對(duì)同一破損圖像采用不同人工交互曲線指導(dǎo)獲得的匹配圖、結(jié)構(gòu)傳達(dá)效果以及最終的修復(fù)結(jié)果。
圖2 不同人工交互曲線的修復(fù)結(jié)果
從圖2可以看出,人工交互曲線補(bǔ)全的物體缺失輪廓結(jié)構(gòu)既決定了匹配圖的結(jié)果,也決定了最后將匹配圖結(jié)構(gòu)傳達(dá)過來的結(jié)果。因此,不同的人工輪廓交互曲線將影響不同的匹配結(jié)果,造成結(jié)構(gòu)修復(fù)的差異。
圖3 輪廓樣本字典塊的獲取及預(yù)處理
圖4 結(jié)構(gòu)傳達(dá)填充修復(fù)過程示意圖
為了求解1組最佳樣本塊標(biāo)簽分配方案,本文運(yùn)用文獻(xiàn)[8]的最小化求解Gibbs能量場方程,即尋找1組樣本分塊PG{xi}使得能量方程式(6)最小化求解。
(6)
E1(xi)=kSES(xi)+kIEI(xi)
(7)
式中,ES(xi)為樣本塊PG{xi}與位于待填充錨點(diǎn)pi處區(qū)塊中包含的人工指導(dǎo)交互曲線的結(jié)構(gòu)相似度。假設(shè)樣本分塊PG{xi}中包含輪廓片段cxi,待填充錨點(diǎn)區(qū)塊中有輪廓片段ci,為了使結(jié)構(gòu)傳達(dá)更加準(zhǔn)確,cxi與ci相似度越高越好,即樣本塊中的輪廓片段要盡可能與人工指導(dǎo)的輪廓片段更加相似。ES(xi)的大小定義為:
ES(xi)=d(ci,cxi)+d(cxi,ci)
(8)
采用置信度傳播(Belief Propagation,BP)算法可以有效提高求解能量最小化方程的效率,得到每個(gè)待填充錨點(diǎn)對(duì)應(yīng)候選樣本區(qū)塊的最優(yōu)解,從而完成結(jié)構(gòu)傳達(dá)實(shí)現(xiàn)輪廓結(jié)構(gòu)修復(fù)。
從圖2可以看出,當(dāng)通過結(jié)構(gòu)傳達(dá)完成對(duì)破損物體輪廓修復(fù)后,剩余破損區(qū)域?qū)⒈恍迯?fù)的輪廓分割成背景、前景(物體)兩部分??紤]到前景與背景紋理在大多數(shù)情況下是迥然不同的,若采用傳統(tǒng)樣本塊全局搜索填充修復(fù),容易導(dǎo)致前背景融合、紋理錯(cuò)誤等現(xiàn)象。當(dāng)基于像素點(diǎn)的紋理合成方式在局部小區(qū)域內(nèi)紋理特征較為接近時(shí),可以保證合成紋理的連續(xù)性,同時(shí)在紋理樣本信息較少的情況下也能有效合成紋理。因此,本文采用無邊界式的基于像素點(diǎn)的紋理合成方法,分別填充修復(fù)前景和背景紋理。
在修復(fù)前景(物體)紋理時(shí),首先,從破損或背景區(qū)域的最左、最右、最上、最下方搜索,找到各自方向上第1個(gè)破損的像素點(diǎn),如圖5(a)中所示,圓點(diǎn)為水平方向找到的第1個(gè)破損像素點(diǎn),Ω為破損區(qū)域,C為修復(fù)完的物體輪廓,S為以待修復(fù)像素點(diǎn)為中心的區(qū)塊;然后,以該像素點(diǎn)為中心,取M×M大小的矩形區(qū)塊S;最后,在圖5(b)中該破損待填充像素點(diǎn)周圍取L形鄰域N1,在S的已知部分中搜尋與N1最相似的L形區(qū)域N2,將N2中與破損待修復(fù)像素點(diǎn)位于L形區(qū)域同樣位置的像素點(diǎn)復(fù)制填充到破損待修復(fù)像素點(diǎn),完成修復(fù)。N1與N2的相似性為[10]:
圖5 前/背景紋理合成填充過程
(9)
式中,R,G,B分別為顏色的3個(gè)通道。p為L形鄰域內(nèi)的像素點(diǎn),D為N1與N2總體的顏色差異,定義為利用L2范數(shù)計(jì)算3個(gè)通道的顏色距離并且求和,D越小說明N1與N2越相似。
在背景紋理修復(fù)時(shí),為了避免紋理像素來源于物體輪廓產(chǎn)生錯(cuò)誤的延伸,因此在搜索第1個(gè)破損的像素點(diǎn)時(shí),應(yīng)排除已修復(fù)輪廓方向的搜索,其余修復(fù)過程與前景修復(fù)一樣。因此,紋理合成填充修復(fù)過程如下:
(1)確定修復(fù)區(qū)域(背景、前景);
(2)在確定修復(fù)的區(qū)域中,從不同方向搜索最先待填充的破損像素點(diǎn);
(3)以破損像素點(diǎn)為中心取M×M大小的區(qū)塊S;
(4)在破損像素點(diǎn)周圍構(gòu)建L形領(lǐng)域N1,再在S的已知部分搜索與N1最相似的L形領(lǐng)域N2,將N2中與破損像素點(diǎn)對(duì)應(yīng)位置的已知像素點(diǎn)復(fù)制填充到破損像素點(diǎn);
(5)重復(fù)步驟2—步驟4,直到待修復(fù)區(qū)域填充完成為止。
實(shí)驗(yàn)采用MATLAB和OpenCv開源庫在2.6 GHz的PC機(jī)上進(jìn)行仿真,將本文算法與文獻(xiàn)[1]、文獻(xiàn)[3]及文獻(xiàn)[8]算法進(jìn)行比較分析。將峰值信噪比(Peak Signal to Noise Ratio,PSNR)和結(jié)構(gòu)相似度(Structure Similarity,SSIM)作為破損圖像修復(fù)效果的評(píng)價(jià)指標(biāo)。實(shí)驗(yàn)中,結(jié)構(gòu)傳達(dá)修復(fù)輪廓的樣本塊大小n×n=13×13個(gè)像素點(diǎn),L形領(lǐng)域N1與N2的大小為5×1個(gè)像素點(diǎn),紋理修復(fù)的搜索矩形區(qū)塊S大小為M×M=50×50個(gè)像素點(diǎn)。
實(shí)驗(yàn)選取具有較強(qiáng)的結(jié)構(gòu)特征且前背景紋理差異較明顯的動(dòng)物圖像作為實(shí)驗(yàn)對(duì)象,如圖6(a)所示。對(duì)圖中結(jié)構(gòu)性強(qiáng)、語義性強(qiáng)的部位進(jìn)行大面積破損,如動(dòng)物的嘴巴、尾巴、身體等部位,如圖6(b)所示,4種算法的修復(fù)結(jié)果如圖6所示。
圖6 破損圖、匹配圖及修復(fù)結(jié)果
從圖6可以看出,文獻(xiàn)[1]算法未引入先驗(yàn)知識(shí),僅依靠破損圖像自身已知信息修復(fù)填充破損圖像,修復(fù)結(jié)果出現(xiàn)結(jié)構(gòu)斷裂、缺失以及紋理錯(cuò)亂等現(xiàn)象;文獻(xiàn)[3]算法引入了先驗(yàn)知識(shí)并結(jié)合破損圖像自身已有的結(jié)構(gòu)信息,對(duì)物體輪廓破損沒有完全缺失且破損輪廓結(jié)構(gòu)可用簡單曲線繪制的圖像,如鵝和長頸鹿,可獲得較好的輪廓修復(fù)效果,但當(dāng)物體輪廓破損完全缺失且輪廓結(jié)構(gòu)復(fù)雜時(shí),如斑馬、狗和兔子,因破損圖無法提供任何結(jié)構(gòu)輪廓信息,物體輪廓結(jié)構(gòu)修復(fù)出現(xiàn)延伸、斷裂等現(xiàn)象,紋理修復(fù)也出現(xiàn)前背景融合、紋理錯(cuò)誤等現(xiàn)象;文獻(xiàn)[8]算法引入了先驗(yàn)知識(shí)和匹配圖像,結(jié)合結(jié)構(gòu)傳達(dá)基本實(shí)現(xiàn)了物體缺失輪廓的重建,但在輪廓邊緣靠近背景部分,明顯出現(xiàn)了錯(cuò)誤,這是因?yàn)槲刺幚淼妮喞獦颖緣K在結(jié)構(gòu)傳達(dá)時(shí)將匹配圖像背景信息引入破損圖像,導(dǎo)致紋理修復(fù)出現(xiàn)前背景融合、紋理錯(cuò)誤等現(xiàn)象;本文算法通過圖6(b)中人工交互曲線的引導(dǎo),將圖6(c)所示的最佳匹配圖像構(gòu)造的純輪廓樣本字典用結(jié)構(gòu)傳達(dá)的方式準(zhǔn)確傳達(dá)到破損物體缺失部分,較好地完成了物體主體結(jié)構(gòu)的修復(fù),還原了缺失的語義信息,同時(shí)基于像素點(diǎn)的前背景分開修復(fù)紋理的方式,較好地實(shí)現(xiàn)了前背景紋理的修復(fù),避免了紋理錯(cuò)誤、前背景融合等現(xiàn)象,視覺效果得到提升,修復(fù)結(jié)果的整體效應(yīng)優(yōu)于其他3種算法。
4種算法的峰值信噪比PSNR、結(jié)構(gòu)相似度SSIM及修復(fù)耗時(shí)如表1和表2所示。從表1可以看出,由于本文算法修復(fù)物體輪廓結(jié)構(gòu)依賴于人工指導(dǎo)曲線和匹配圖像,修復(fù)的物體輪廓結(jié)構(gòu)更接近于匹配圖像,所以修復(fù)圖像的SSIM平均值達(dá)到0.972 32,較其他3種算法,平均提升了約1%;本文算法的PSNR平均為28.932 42 dB,較其他3種算法,平均提高了近2 dB;本文算法在修復(fù)兔子耳朵時(shí),PSNR比文獻(xiàn)[1]算法低了約0.5 dB,在修復(fù)鵝羽毛時(shí),PSNR比文獻(xiàn)[3]低了約0.6 dB,在修復(fù)狗尾巴時(shí),SSIM比文獻(xiàn)[1]低了約0.04,但本文算法無論在局部修復(fù)還是在整體修復(fù)上,都具有更好的整體效應(yīng)和視覺效果。另外,從表2中可以看出,本文算法的修復(fù)用時(shí)最少,這是因?yàn)樵诩y理修復(fù)時(shí),其他3種算法都采用了耗時(shí)較長的樣本塊匹配搜索法,而本文算法則采用像素點(diǎn)紋理合成方法,在已知紋理樣本信息較少時(shí)也能保持局部紋理特征的連續(xù)性,較好地解決了邊緣與紋理之間的過渡,同時(shí),算法平均修復(fù)效率提升約20%。
表1 不同算法的PSNR和SSIM
表2 不同算法的運(yùn)行時(shí)間 單位:s
針對(duì)圖中結(jié)構(gòu)復(fù)雜、語義性強(qiáng)的破損物體的修復(fù),傳統(tǒng)的圖像修復(fù)算法僅依靠破損圖自身信息,難以還原物體缺失的主體結(jié)構(gòu)和紋理信息。本文提出一種基于匹配圖像和像素點(diǎn)紋理合成的圖像修復(fù)算法,運(yùn)用先驗(yàn)知識(shí)和外部數(shù)據(jù)庫圖像信息修復(fù)破損物體的主體輪廓,采用像素點(diǎn)紋理合成方法修復(fù)破損紋理,在保持較高的PSNR和SSIM的同時(shí),提升了修復(fù)圖像的視覺效果和修復(fù)效率。但是,本文算法對(duì)輪廓樣本塊質(zhì)量和紋理信息來源要求較高,在輪廓樣本塊質(zhì)量較差和紋理信息來源有限時(shí),可以考慮對(duì)輪廓樣本塊進(jìn)行變形、變色處理,或通過改善像素點(diǎn)間的匹配方式,進(jìn)一步改善修復(fù)結(jié)果。