黃梓珊,田秀云
(廣東海洋大學(xué)電信學(xué)院,廣東湛江 524088)
早期由于技術(shù)有限,很多照片、圖片都無(wú)法很好地保存,特別是古畫古文和一些珍貴的老照片,如果這些文物因?yàn)闀r(shí)間的流逝而逐漸銷毀,那么也許會(huì)是整個(gè)世界的一大遺憾,于是圖像補(bǔ)全技術(shù)應(yīng)運(yùn)而生。圖像補(bǔ)全技術(shù)早在20 世紀(jì)末到21 世紀(jì)初,甚至更早,就有學(xué)者在研究。以前比較經(jīng)典的圖像補(bǔ)全算法是基于偏微分方程PDE 的圖像補(bǔ)全算法BSCB[1],原理是利用未知區(qū)域的邊緣信息估計(jì)等照度線方向,采用熱擴(kuò)散方程將已知區(qū)域的信息傳播到未知區(qū)域,從而獲得目標(biāo)圖像[2],該算法曾經(jīng)一度成為國(guó)際上比較熱門的研究課題,所以基于PDE/泛函的圖像補(bǔ)全技術(shù)在早年發(fā)展地很快,但是PDE 圖像補(bǔ)全技術(shù)仍然存在比較明顯的不足。PDE圖像補(bǔ)全技術(shù)不足的根源主要是忽略了圖像修復(fù)過(guò)程的先后順序,從而使得圖像中的顯著結(jié)構(gòu)發(fā)生模糊、扭曲、消失的概率大大提升。修復(fù)先后順序之所以重要,是因?yàn)楹竺嬉迯?fù)的補(bǔ)丁信息一定是在前面補(bǔ)丁的信息基礎(chǔ)上進(jìn)行的,也就是這里存在著信息傳遞,如果一開(kāi)始修復(fù)的是無(wú)關(guān)緊要的信息,那么如果信息傳遞到后面補(bǔ)丁,那么這些信息也其實(shí)作用也不大。
本文主要針對(duì)PDE 圖像補(bǔ)全技術(shù)的缺點(diǎn)和不足,結(jié)合結(jié)構(gòu)傳播和紋理合成等方法作為研究?jī)?nèi)容,對(duì)PDE 補(bǔ)全技術(shù)進(jìn)行優(yōu)化,使得圖像補(bǔ)全更為真實(shí)、自然。
因?yàn)樵擁?xiàng)目是基于結(jié)構(gòu)的圖像補(bǔ)全,而結(jié)構(gòu)其實(shí)就是用戶給的,所以需要用戶交互界面讓用戶可以繪制掩模和定義結(jié)構(gòu)線。
用戶通過(guò)鍵盤按鍵選擇“[”或者“]”來(lái)切換上一張或下一張圖像,最后選擇好目標(biāo)圖像按“ESC”確認(rèn)選擇,在切換圖像時(shí),運(yùn)用了循環(huán)加減算法保證在切換的時(shí)候不會(huì)溢出,圖1 所示為本文選擇用于圖像補(bǔ)全的圖片。
圖1 用戶界面顯示
回調(diào)函數(shù)是一個(gè)在框架設(shè)計(jì)之初留下的一個(gè)還未實(shí)現(xiàn)的接口,專門給編程者實(shí)現(xiàn)的[3],通過(guò)這個(gè)函數(shù)獲取鼠標(biāo)終端的坐標(biāo)和行為,從而繪制出的掩模和結(jié)構(gòu)線,如圖2所示。
圖2 通過(guò)鼠標(biāo)回調(diào)函數(shù)繪制的掩模和結(jié)構(gòu)
用戶指定的結(jié)構(gòu)線會(huì)貫穿未知區(qū)域,延伸到已知區(qū)域,沿著這條結(jié)構(gòu)線以一定的步長(zhǎng)進(jìn)行采樣,可以得到一系列錨點(diǎn),每一個(gè)錨點(diǎn)代表了一個(gè)塊的中心。結(jié)構(gòu)傳播的任務(wù)就是從已知區(qū)域的塊中選取最合適的去填補(bǔ)未知區(qū)域的每個(gè)塊,以恢復(fù)出完整連貫的結(jié)構(gòu)。這樣的任務(wù)可以被抽象成一個(gè)圖的貼標(biāo)簽問(wèn)題[4]。
未知區(qū)域的目標(biāo)塊源自于已知區(qū)域patch以及已知區(qū)域衍生的patch,所以待填充的塊的選擇是很多的,那么該如何選擇最優(yōu)塊就正好是該算法需要考慮的重要問(wèn)題之一,對(duì)于如何選取最合適的塊,有如下3個(gè)標(biāo)準(zhǔn):(1)結(jié)構(gòu)相似性,每個(gè)未知塊與對(duì)應(yīng)已知塊的結(jié)構(gòu)線走向的相似性;(2)完整性,處在邊緣的未知塊與已知區(qū)域會(huì)有重疊,重疊部分像素與已知區(qū)域像素的相似性;(3)連貫性,在未知區(qū)域中,算法補(bǔ)上去的兩個(gè)相鄰的塊的重疊部分對(duì)應(yīng)位置像素的相似性。綜合上述3 個(gè)標(biāo)準(zhǔn)并進(jìn)行量化,可以得到圖的能量函數(shù)(損失函數(shù)):
這里的算法任務(wù)是能量最小化問(wèn)題。如果要找出某一個(gè)未知區(qū)域目標(biāo)塊,應(yīng)對(duì)比其與其他已知塊的損失函數(shù),找出損失函數(shù)的最小值,將找出來(lái)的patch填入未知區(qū)域。
動(dòng)態(tài)規(guī)劃在數(shù)學(xué)、計(jì)算機(jī)科學(xué)等各種領(lǐng)域均有廣泛應(yīng)用[5]。動(dòng)態(tài)規(guī)劃指在解決某些最優(yōu)問(wèn)題時(shí),可將原問(wèn)題的過(guò)程分解為相對(duì)簡(jiǎn)單的子問(wèn)題的方式,從而簡(jiǎn)化求解復(fù)雜問(wèn)題步驟[6]。
通過(guò)上面的式子計(jì)算出每一個(gè)點(diǎn)的損失函數(shù)E后,接下來(lái)就需要開(kāi)始求其最小值,如果是單結(jié)構(gòu)線,那么就說(shuō)明G是單鏈表,圖中的節(jié)點(diǎn)呈鏈狀排列,符合動(dòng)態(tài)規(guī)劃操作的條件,所以損失函數(shù)的最小化問(wèn)題可以使用最短路徑來(lái)代替解決,動(dòng)態(tài)規(guī)劃算法可以理解為在每個(gè)節(jié)點(diǎn)處選擇當(dāng)前的最優(yōu)結(jié)果,然后用最短路徑和記錄損失,其中最短路徑和就是Mi(xi),表示對(duì)于一切可能的xi,從節(jié)點(diǎn)1 到節(jié)點(diǎn)i最小路徑和,其定義和初值分別如下式所示:
初始值M1(x1)可以理解為是Mi(xi)的遞推初值,EI指的是邊緣塊與已知區(qū)域重疊部分的相似性,該項(xiàng)可以直接求出,另一項(xiàng)min 值是上一次的求解結(jié)果,是已知量,可以直接加上去,根據(jù)這兩式不斷進(jìn)行遞推,最終即可將后面的每一個(gè)節(jié)點(diǎn)的M值求出。以最后一個(gè)節(jié)點(diǎn)L(last anchor)為例,其最優(yōu)標(biāo)簽根據(jù)下式選?。?/p>
式中:argmin 為一種方法,其功能是獲取使后面ML(xL)達(dá)到最小值時(shí)的變量的取值[12]。
貝葉斯定理是置信傳播算法的基礎(chǔ),貝葉斯定理可以完美結(jié)合問(wèn)題的不確定性和已知知識(shí),轉(zhuǎn)成概率論中的推理問(wèn)題,從而尋找全局最優(yōu)解。而馬爾科夫隨機(jī)場(chǎng)是一種特殊的貝葉斯網(wǎng)絡(luò),網(wǎng)絡(luò)中的節(jié)點(diǎn)滿足馬爾科夫性質(zhì),也就是網(wǎng)絡(luò)中某節(jié)點(diǎn)的概率分布特性只與其領(lǐng)域內(nèi)的點(diǎn)有關(guān),與領(lǐng)域外的點(diǎn)無(wú)關(guān)[7]。而置信傳播的主要思想,就是對(duì)于馬爾科夫隨機(jī)場(chǎng)中的每一個(gè)節(jié)點(diǎn),通過(guò)消息傳播,將其概率分布傳給相鄰節(jié)點(diǎn),從而影響其他節(jié)點(diǎn)的概率分布情況,經(jīng)過(guò)一定次數(shù)的迭代,可以使得所有節(jié)點(diǎn)的概率分布都趨于穩(wěn)態(tài),所以某點(diǎn)置信度可以理解為是某點(diǎn)的邊緣概率分布[8]。
對(duì)于存在多結(jié)構(gòu)線和交叉點(diǎn)的圖像,如果單純使用動(dòng)態(tài)規(guī)劃算法算最小E(X)是很不劃算的,因?yàn)橛?jì)算成本很高,所以改用置信度傳播來(lái)算出最小E(X),那么將會(huì)高效許多,因?yàn)槊總€(gè)點(diǎn)只需要傳遞給領(lǐng)域內(nèi)的節(jié)點(diǎn)即可,然后不斷往外擴(kuò)散,而不需要對(duì)所有節(jié)點(diǎn)依次傳輸,時(shí)間復(fù)雜度驟減,算法輕便很多。
為了實(shí)現(xiàn)置信度傳播,本文構(gòu)造一個(gè)矩陣M用于存儲(chǔ)當(dāng)前圖中每個(gè)節(jié)點(diǎn)對(duì)其每個(gè)鄰點(diǎn)的信息,如Mij是從i節(jié)點(diǎn)傳給j節(jié)點(diǎn)的消息。該信息反映了一個(gè)節(jié)點(diǎn)在多大程度上相信其鄰點(diǎn)獲得了最優(yōu)標(biāo)簽,之后再通過(guò)不斷的迭代更新,即可獲取到最優(yōu)塊的信息。
結(jié)構(gòu)傳播結(jié)果顯示如圖3所示。
圖3 結(jié)構(gòu)傳播之后的南瓜
如圖4 所示,經(jīng)過(guò)結(jié)構(gòu)傳播之后,只是將重要結(jié)構(gòu)處的像素值優(yōu)先補(bǔ)全,但是除了結(jié)構(gòu)線區(qū)域,還剩下許多的未知區(qū)域,而這部分的像素值補(bǔ)全就需要用到紋理傳播技術(shù)。
圖4 應(yīng)用Texture-by-numbers技術(shù)后的區(qū)域編號(hào)
為了保證紋理合成符合視覺(jué)一致性,避免紋理合成中利用其他不相關(guān)的區(qū)域信息,因此紋理合成需要使用texture-by-number的技術(shù)[9],這種技術(shù)的意思就是給結(jié)構(gòu)傳播之后的圖像分區(qū),如圖4 所示,可以發(fā)現(xiàn)被結(jié)構(gòu)線切斷的區(qū)域與其相鄰的已知區(qū)域編號(hào)相同,那么就意味著,這些未知區(qū)域由與其同編號(hào)的已知區(qū)域負(fù)責(zé)填補(bǔ)。因?yàn)橥ǔ2煌膮^(qū)域會(huì)擁有不同類型的紋理,而對(duì)于一塊未知區(qū)域,只從與其相同編號(hào)的已知區(qū)域去合成紋理,這樣就基本上保證了紋理類型的正確性。
子區(qū)域處理的次序根據(jù)置信圖確定,是一種水平集方法,從最靠近已知區(qū)域的塊開(kāi)始處理,每次選取優(yōu)先級(jí)最高的塊,向內(nèi)擴(kuò)散。求取邊界上的紋理塊的優(yōu)先級(jí)的算法思路是:(1)在需要填充區(qū)域的輪廓上計(jì)算權(quán)重,選擇權(quán)重最大的輪廓點(diǎn)作為待填充點(diǎn);(2)在該點(diǎn)周圍領(lǐng)域取一個(gè)固定大小的塊,在圖像其他區(qū)域內(nèi)找該塊的最近鄰的塊;(3)將最近鄰patch塊所對(duì)應(yīng)的需要填充的區(qū)域部分復(fù)制到等待填充的區(qū)域;(4)填充完成后,更新confidence 的值。再重復(fù)上述步驟,直至所有點(diǎn)都填充完畢[9-11]。
將圖片應(yīng)用Texture-by-numbers 技術(shù)之后,進(jìn)行紋理合成即可形成圖5 所示效果,雖然交接處有些扭曲,但對(duì)比原圖可發(fā)現(xiàn),該方法確實(shí)可以有效地將目標(biāo)區(qū)域去掉并補(bǔ)全。而若不使用結(jié)構(gòu)傳播,對(duì)南瓜圖畫好掩模之后直接采取紋理合成,那么結(jié)果圖如圖6 所示,對(duì)比一下即可明顯發(fā)現(xiàn)其效果遠(yuǎn)遠(yuǎn)不及圖5,所需填補(bǔ)的部分模糊且結(jié)構(gòu)不清晰,可以說(shuō)是亂成一團(tuán),因此更加證明了采用結(jié)構(gòu)傳播的重要性。
圖5 結(jié)構(gòu)傳播+紋理傳播的效果
圖6 紋理合成的效果
光測(cè)度一致性是專門用于解決塊之間由于重疊而產(chǎn)生的縫隙問(wèn)題,因?yàn)椴徽撌墙Y(jié)構(gòu)傳播亦或是紋理合成都是根據(jù)對(duì)比塊,在已知區(qū)域塊的基礎(chǔ)上直接復(fù)制粘貼到未知區(qū)域的,所以不論這個(gè)塊性能多好,和原圖相比難免會(huì)有些生硬,在重疊處很容易存在鋸齒狀以及不平滑現(xiàn)象,而光測(cè)度一致性就是為了解決這一問(wèn)題的[10]。
通過(guò)光測(cè)度一致性,可以將像素點(diǎn)之間梯度較大的部分削減,令邊界看起來(lái)更加和諧,從而實(shí)現(xiàn)圖像間或者像素之間的融合,如此一來(lái)即可完成光測(cè)度一致性調(diào)整。
圖7 所示為整個(gè)算法的過(guò)程圖,按照從左到右,從上到下的順序進(jìn)行。
圖7 整個(gè)項(xiàng)目流程以及結(jié)果展示
隨著時(shí)代的發(fā)展,圖像補(bǔ)全技術(shù)已經(jīng)被越來(lái)越廣泛地應(yīng)用于深度學(xué)習(xí)、計(jì)算機(jī)視覺(jué)以及現(xiàn)在高速網(wǎng)絡(luò)傳播,本文由以前比較經(jīng)典的圖像補(bǔ)全算法——基于偏微分方程PDE 的圖像補(bǔ)全算法BSCB 出發(fā),分析他的貢獻(xiàn)與不足,然后根據(jù)其不足引用了其他的方法進(jìn)行彌補(bǔ)。引用了結(jié)構(gòu)傳播技術(shù)之后,可以優(yōu)先補(bǔ)全重要結(jié)構(gòu)像素點(diǎn),使得最后的紋理傳播可以得到更好的優(yōu)化結(jié)果,雖然無(wú)法滿足百分之百的視覺(jué)一致性,但相比于非結(jié)構(gòu)傳播,效果還是好了很多。同時(shí),本文從用戶感知視覺(jué)和用戶需求出發(fā),不僅僅是以修復(fù)圖像為主的補(bǔ)全,而是讓用戶挑選出想要去掉的部分,并且勾勒背景結(jié)構(gòu),然后算法再專門對(duì)該部分進(jìn)行補(bǔ)全和修復(fù)。