白 楊 姚桂林
(哈爾濱商業(yè)大學(xué)計(jì)算機(jī)與信息工程學(xué)院 黑龍江 哈爾濱 150028)
圖像摳圖技術(shù)是把圖像的前景從背景中精確地分離出來(lái)的過(guò)程,圖像合成[1]則是把分離出來(lái)的前景通過(guò)某種方法放到新背景中的過(guò)程。利用摳圖與合成技術(shù),可以將一個(gè)實(shí)體的目標(biāo)放到虛擬的環(huán)境中,這種技術(shù)已經(jīng)被影視業(yè)廣泛應(yīng)用,同時(shí)這種功能也被一些圖像處理軟件所應(yīng)用,例如目前使用最為廣泛的Photoshop。
圖像摳圖和圖像分割仍有較大區(qū)別,對(duì)于前景物體的邊緣和一些半透明物體,圖像分割只能將它們和背景分割成二值化形式。但在實(shí)際圖像的形成過(guò)程中,在前景物體邊緣附近的像素值是很復(fù)雜的,并不是簡(jiǎn)單的前景/背景這兩種模式。圖像摳圖則對(duì)前景物體加入了α通道(或稱(chēng)為Alpha通道,透明度),成功解決了這個(gè)問(wèn)題,從而可以更加精確地提取物體的前景。
對(duì)于一幅圖像中的某個(gè)像素,假設(shè)其坐標(biāo)為z,觀察到的顏色為Iz,前景的顏色為Fz,背景的顏色為Bz,則物體的實(shí)際顏色可由{Fz,Bz}的線(xiàn)性組合得到:
Iz=αzFz+(1-αz)Bz
(1)
式中:Fz、Bz、αz為未知量;αz的取值范圍是[0,1]中的一個(gè)數(shù)。將αz∈(0,1)時(shí)的所有點(diǎn)稱(chēng)作混合點(diǎn),這些點(diǎn)通常在圖像的前景和背景的分界處,比如物體的頭發(fā)或者一些半透明物體等,并將αz=0或1的點(diǎn)稱(chēng)為不透明點(diǎn)或絕對(duì)點(diǎn)。在自然圖像中,大部分點(diǎn)都是絕對(duì)前景點(diǎn)和絕對(duì)背景點(diǎn),而混合像素點(diǎn)所占的比例非常小,如何將{Fz,Bz,αz}準(zhǔn)確地計(jì)算出來(lái)是摳圖問(wèn)題所面臨的任務(wù)。
式(1)有三個(gè)未知數(shù),即有無(wú)窮多解,所以必須加上一些約束條件才能求解。在以往的摳圖過(guò)程中都會(huì)使用單一的背景(藍(lán)屏摳圖)來(lái)減少未知量,但是該方法對(duì)于顏色較復(fù)雜的前景效果并不好。于是提出了一種基于Trimap的交互式摳圖,人為將圖像標(biāo)注成三個(gè)區(qū)域絕對(duì)前景ΩF、絕對(duì)背景ΩB和未知區(qū)域ΩU。其算法實(shí)例如圖1所示,前兩個(gè)區(qū)域?yàn)橐阎獏^(qū)域,分別用白色、黑色表示,未知區(qū)域用灰色表示。在絕對(duì)前景ΩF中包含大部分α=1的點(diǎn),在絕對(duì)背景ΩB中包含大部分α=0的點(diǎn),在未知區(qū)域ΩU中則包含全部0<α<1的混合點(diǎn),并且有少量絕對(duì)點(diǎn)。本文將Trimap作為算法的先驗(yàn)信息,然后求出未知區(qū)域的{Fz,Bz}。
圖1 圖像摳圖算法實(shí)例
當(dāng)前基于Trimap的主流摳圖方式有采樣法[2]和仿射法[3]?;诜律涞膿笀D方法并不孤立地計(jì)算每個(gè)未知點(diǎn),而是考慮像素鄰域之間的聯(lián)系,利用遞歸的方法求出每個(gè)未知像素的Alpha值。基于采樣的摳圖方法和仿射方法正好相反,該方法對(duì)每個(gè)未知點(diǎn)都獨(dú)立計(jì)算,并不考慮像素之間的相關(guān)性。針對(duì)未知區(qū)域ΩU中的像素z,假設(shè)其前景和背景為{Fz,Bz},可以在ΩF和ΩB中可以直接找到或者通過(guò)計(jì)算找到一些近似樣本,并計(jì)算α。
較早的采樣類(lèi)方法采用高斯混合模型[4]分離前景和背景。貝葉斯摳圖[5]將圖像前景F、背景B和α看作一種概率分布,對(duì)于每一個(gè)待計(jì)算的像素z,建立先驗(yàn)概率模式進(jìn)行求解。Wang等[6]提出了一種優(yōu)化采樣方式的魯棒性摳圖算法,該方法為每個(gè)未知點(diǎn)建立前景、背景樣本對(duì),分別計(jì)算每個(gè)樣本對(duì)的信度值和Alpha值,然后選出三個(gè)信度值最高的樣本對(duì),將這三個(gè)樣本對(duì)計(jì)算出的Alpha值取平均作為未知點(diǎn)的Alpha值。Gastal等[7]提出了共享采樣的摳圖方法,該方法以未知點(diǎn)作為起點(diǎn),然后向空間中發(fā)射4條射線(xiàn),每條射線(xiàn)最多采集一個(gè)前景點(diǎn)和一個(gè)背景點(diǎn),經(jīng)過(guò)一些優(yōu)化方式得到未知點(diǎn)的最終Alpha值。文獻(xiàn)[8]提出了一種全局采樣的方法,對(duì)于未知區(qū)域,在靠近已知區(qū)域處用較小的鄰域進(jìn)行采樣,在遠(yuǎn)離已知區(qū)域處采用較大的鄰域采樣。
泊松摳圖[9]將圖像的α看成一個(gè)場(chǎng),將泊松方程引入到了摳圖問(wèn)題中,隨機(jī)游走摳圖[10]將像素當(dāng)成是圖的節(jié)點(diǎn),用鄰域權(quán)值的方法去求解摳圖問(wèn)題。而閉合形式(Closed Form)摳圖[11]假設(shè)在3×3或者5×5的小窗口符合顏色線(xiàn)性模型的性質(zhì),即該窗口中所有的像素值都是由某個(gè)固定的前景顏色F和背景顏色B的線(xiàn)性組合得到,構(gòu)造拉普拉斯摳圖矩陣,并求解相應(yīng)的稀疏線(xiàn)性方程得到每個(gè)未知像素的Alpha值。KNN摳圖[12]利用K近鄰算法來(lái)匹配非局部的鄰域像素,為每個(gè)未知點(diǎn)建立空間加顏色的特征,然后將未知點(diǎn)的K個(gè)鄰域設(shè)置權(quán)值,最后通過(guò)求解類(lèi)似的稀疏線(xiàn)性方程得到未知像素的Alpha值。
從已知區(qū)域的邊界ΦF和ΦB找到與未知點(diǎn)z在空間距離上最近的點(diǎn)FC和BC,然后以這2個(gè)點(diǎn)為起點(diǎn),沿著上述邊界向兩側(cè)方向每隔一定的距離采集一個(gè)樣本點(diǎn),對(duì)于每個(gè)未知點(diǎn),共采集20個(gè)前景樣本點(diǎn)和20個(gè)背景樣本點(diǎn),共包括400個(gè)樣本對(duì)。
在采集了樣本點(diǎn)后,需要從上述樣本對(duì)中選擇較好的樣本對(duì)。為了使采集到的前景/背景樣本對(duì)能夠精確地體現(xiàn)未知點(diǎn)的前景與背景顏色,本文算法分為如下4步進(jìn)行。
(1) 用每個(gè)樣本對(duì)估計(jì)未知點(diǎn)的α:
(2)
(2) 定義距離比率:
(3)
(3) 在普通圖像中,大部分像素都是絕對(duì)前景或絕對(duì)背景,因此需要額外設(shè)置以下兩個(gè)權(quán)值:
(4)
(5)
式中:DF=maxi‖F(xiàn)i-C‖;DB=maxj‖Bj-C‖。在顏色空間中,前景或背景樣本點(diǎn)與未知點(diǎn)的顏色越接近,權(quán)值就越大。
(4) 最終的信度值計(jì)算如下:
(6)
式中:σ為常數(shù),通常取0.1。
采用上述4個(gè)步驟可以計(jì)算出每一對(duì)樣本點(diǎn)的信度值f(Fi,Bj)和初級(jí)Alpha值,之后選擇3個(gè)最高信度的樣本對(duì),對(duì)每個(gè)未知點(diǎn),分別求出其信度值的平均值和初級(jí)Alpha值的平均值。
(7)
(8)
3.4.1KNN算法流程
KNN算法是利用FLANN算法在指定的特征(一般為顏色特征)下尋找與未知點(diǎn)i最近的K個(gè)點(diǎn),這里的“最近”指的是未知點(diǎn)與指定的顏色特征最近,而非空間距離最近,即以顏色特征的相似性代替了空間距離相似性,這樣可以搜尋到更多的空間遠(yuǎn)距離像素,其具體步驟如下:
(1) 建立特征。為每個(gè)未知點(diǎn)i建立特征,并尋找在此特征下最接近i的K個(gè)像素。令{Bi,Gi,Ri}為像素點(diǎn)i的顏色特征,{xi,yi}為像素點(diǎn)i的空間特征。那么在RGB顏色空間下,未知點(diǎn)i的特征可以表示為:
(9)
(2) 計(jì)算權(quán)值。為每個(gè)未知點(diǎn)建立了特征以后,對(duì)未知點(diǎn)i的K個(gè)最近鄰點(diǎn)設(shè)置權(quán)值,其計(jì)算公式為:
(10)
式中:Xi為未知點(diǎn)i的特征;Xik為K個(gè)近鄰點(diǎn)的特征;c為一個(gè)權(quán)值系數(shù)。如果未知點(diǎn)i與樣本k的特征差異越大,權(quán)值越小。
(3) 構(gòu)造稀疏矩陣。將計(jì)算的權(quán)值映射到一個(gè)稀疏對(duì)稱(chēng)矩陣中。
3.4.2后處理的過(guò)程
在建立了KNN類(lèi)型的稀疏矩陣后,就可以對(duì)采樣得到的初級(jí)α進(jìn)行后處理。令α*為最終后處理的值,它的表達(dá)式為:
(11)
(L+θD+λ·diag(P(F)+P(B)))α=
θbs+λ·P(F)
(12)
在以往的仿射類(lèi)后處理算法中采用的是基于空間特征和顏色線(xiàn)性模型的Closed Form算法對(duì)α進(jìn)行后處理,但該方法存在兩個(gè)問(wèn)題:(1) 局部窗口wk大小通常需要根據(jù)前景與背景的顏色分布進(jìn)行選取,以往經(jīng)驗(yàn)上大小一般是3×3或5×5大小,但對(duì)于顏色分布復(fù)雜的場(chǎng)景,通常需要選取更大的窗口。(2) 假設(shè)算法在這個(gè)小窗口中的像素滿(mǎn)足顏色線(xiàn)性模型,然后利用摳圖公式和局部窗口進(jìn)行復(fù)雜的權(quán)值累加計(jì)算。這種模型在局部顏色變化較緩慢的區(qū)域效果尚可,但顏色變化比較劇烈的區(qū)域效果不好。
針對(duì)上述兩個(gè)問(wèn)題,本文采用KNN類(lèi)方法做后處理,相比于Closed Form算法,其優(yōu)點(diǎn)如下:(1) 顏色相似性的優(yōu)勢(shì),KNN類(lèi)方法為每個(gè)未知點(diǎn)尋找K個(gè)近鄰點(diǎn),這些近鄰點(diǎn)的顏色與當(dāng)前未知點(diǎn)的顏色比較相近,因此用它們?nèi)ゾ€(xiàn)性組合未知點(diǎn)的顏色所形成的擬合誤差要比單純的采用空間特征去擬合的誤差要小。另外,由于KNN類(lèi)方法采用的是顏色相似性,對(duì)于不同的顏色分布可能產(chǎn)生不同的顏色模型,相較于簡(jiǎn)單的顏色線(xiàn)性模型要準(zhǔn)確得多。(2) 全局搜索的優(yōu)勢(shì)性。對(duì)于一些分布較廣但是前景、背景顏色差異較大的顏色分布,非常適合用KNN類(lèi)方法去搜索像素。相較于只利用空間特征去尋找像素的一些算法,該算法能夠使未知點(diǎn)找到空間距離比較遠(yuǎn)的像素,尤其是絕對(duì)前景和背景像素。另外,由于絕對(duì)前景和背景像素在未知區(qū)域內(nèi)的比例很大,而對(duì)它們的計(jì)算也會(huì)更加準(zhǔn)確,因此也能使得最終的α結(jié)果更加準(zhǔn)確。
本實(shí)驗(yàn)的硬件為Core i7四核3.8 GHz的CPU 以及8 GB內(nèi)存的PC機(jī),實(shí)驗(yàn)環(huán)境采用的是Visual Studio 2017結(jié)合OpenCV,并采用C++語(yǔ)言實(shí)現(xiàn)。鑒于本文算法的特點(diǎn),將該方法命名為RobustKNN。
本文采用Rhemann等[15]提出的在線(xiàn)摳像訓(xùn)練數(shù)據(jù)集。該系統(tǒng)提供了27幅訓(xùn)練圖像,并且使用均方誤差(MSE)和絕對(duì)誤差(SAD)作為誤差評(píng)判標(biāo)準(zhǔn),其公式如下:
(13)
(14)
式中:m是圖像的寬;n是圖像的高;E(i,j)為摳圖算法得到的結(jié)果;H(i,j)為訓(xùn)練集提供的真實(shí)結(jié)果。
本文選取了訓(xùn)練集中的3幅圖像。圖2為前景區(qū)域存在孔洞的2幅圖像經(jīng)各算法處理得到的Alpha結(jié)果圖。其中,圖2(a)為GT01,其特點(diǎn)是前景存在較多空洞,這些空洞處的背景與已知背景距離較遠(yuǎn)。Trimap為原圖的三分圖,Ground Truth為GT01的真實(shí)Alpha值(只展示在Trimap圖中用黑色矩形框框住的那一部分),下面的三幅圖分別是Closed Form、Robust和RobustKNN算法輸出的結(jié)果(只展示在Trimap圖中用黑色矩形框框住的那一部分)。從圖中可以看出,三種算法都能將物體的前景輪廓摳取出來(lái),但是對(duì)于前景空洞(如用橢圓框住的那一部分),Closed Form算法和Robust算法表現(xiàn)要稍微差一些,前者將這部分空洞劃分到前景中去,后者雖然能摳取出這部分空洞的大致輪廓,但是還是有很多像素被劃分到前景中導(dǎo)致?lián)笀D準(zhǔn)確性下降,這也是單一的使用距離作為特征所帶來(lái)的問(wèn)題。而本文算法(RobustKNN)能夠準(zhǔn)確地將這部分空洞摳取出來(lái),這得益于本文算法在后處理階段使用的是顏色特征與距離特征相結(jié)合的方式,能夠利用顏色相似性找到與未知點(diǎn)顏色相近但空間距離比較遠(yuǎn)的像素,提高了Alpha值的準(zhǔn)確性。
另一個(gè)前景存在空洞的例子如圖2(b)所示,其中GT02為原始圖像,其特點(diǎn)為前景中同樣存在大量的空洞。Trimap為原圖的三分圖,Ground Truth為GT02的真實(shí)Alpha值(只展示在Trimap圖中用黑色矩形框框住的那一部分),下面的三幅圖分別是Closed Form、Robust和RobustKNN算法輸出的結(jié)果(只展示在Trimap圖中用黑色矩形框框住的那一部分)。從圖中可以看出,三種算法都能將物體的前景輪廓提取出來(lái),但是在輪廓內(nèi)部的一些空洞點(diǎn),三種算法的表現(xiàn)不盡相同。Closed Form算法表現(xiàn)的最差,大量的空洞點(diǎn)被劃分到前景中去,造成錯(cuò)誤劃分。而Robust算法稍好一些,但一些細(xì)小的空洞點(diǎn)也被其劃分到前景中,造成錯(cuò)誤劃分。本文算法的效果最好,能夠準(zhǔn)確地劃分出一些細(xì)小的空洞點(diǎn)。
圖2 各算法對(duì)前景區(qū)域存在大量孔洞時(shí)的圖像的Alpha結(jié)果圖
對(duì)于有效樣本缺失的情況,原圖及各算法處理結(jié)果如圖3所示。其中GT03為原始圖像,其特點(diǎn)為國(guó)旗部分缺少有效樣本。Trimap為原圖的三分圖,Ground Truth為GT03的真實(shí)Alpha值,下面的三幅圖分別是Closed Form、Robust和本文算法輸出的結(jié)果。可以看出,Robust算法表現(xiàn)最差,國(guó)旗的輪廓沒(méi)有完整地?fù)溉〕鰜?lái)。Closed Form算法表現(xiàn)稍好一些,能提取出國(guó)旗的輪廓,但是國(guó)旗內(nèi)部許多地方還是劃分到背景中,造成劃分錯(cuò)誤。本文算法的表現(xiàn)最好,它將國(guó)旗的整體區(qū)域都劃分到前景中。
圖3 各算法對(duì)有效樣本缺失時(shí)的圖像的Alpha結(jié)果圖
4.1節(jié)是從視覺(jué)角度對(duì)算法進(jìn)行評(píng)價(jià),本節(jié)通過(guò)MSE和SAD這兩個(gè)指標(biāo)來(lái)對(duì)算法進(jìn)行評(píng)價(jià)。表1與表2為上述3幅圖像的MSE和SAD??梢钥闯?,本文算法無(wú)論是均方誤差還是絕對(duì)誤差都比其他算法小,即本文算法的結(jié)果最接近真實(shí)結(jié)果。
表1 3幅圖片的均方誤差(MSE)
表2 3幅圖片的絕對(duì)誤差(SAD)
為了更加客觀地評(píng)價(jià)本文算法,將訓(xùn)練集中的27幅圖像的均方誤差和絕對(duì)誤差全部計(jì)算出,并求平均值,同時(shí)計(jì)算出在不同型號(hào)Trimap下各個(gè)算法的誤差,結(jié)果如表3、表4所示。這些不同型號(hào)的Trimap最主要的區(qū)別就是在標(biāo)注前景區(qū)域、背景區(qū)域和未知區(qū)域時(shí)的精準(zhǔn)程度,其中小型號(hào)的Trimap標(biāo)注最為精細(xì)而巨大型號(hào)的Trimap標(biāo)注則比較粗糙??梢钥闯觯环N算法中小型號(hào)Trimap的誤差要小于巨大型號(hào)的誤差;在相同Trimap型號(hào)下,本文算法造成的誤差要小于其他兩種算法。
表3 27幅圖像的平均均方誤差
表4 27幅圖像的平均絕對(duì)誤差
本文在魯棒摳圖算法的基礎(chǔ)上,采用KNN算法對(duì)采樣得到的初級(jí)α進(jìn)行后處理,算法彌補(bǔ)了以往使用傳統(tǒng)仿射類(lèi)算法做后處理時(shí),使用單一的空間距離作為特征的缺陷,這會(huì)造成搜索范圍較小。而在局部窗口中使用簡(jiǎn)單的顏色線(xiàn)性模型使得對(duì)于顏色分布較復(fù)雜的圖片造成較大的誤差。本文采用KNN搜索方法用作后處理,為每個(gè)未知點(diǎn)建立顏色特征和空間特征,使得未知點(diǎn)能找到與其顏色相近的一些近鄰點(diǎn),同時(shí)KNN類(lèi)仿射算法具備采樣范圍較寬的特點(diǎn),能搜索到較遠(yuǎn)處的像素。實(shí)驗(yàn)結(jié)果表明,使用KNN類(lèi)仿射算法做后處理相較于傳統(tǒng)的仿射類(lèi)算法,無(wú)論在視覺(jué)方面還是準(zhǔn)確性方面,其Alpha結(jié)果都有較大的提高。