劉振國(guó),潘崢嶸,朱 翔
(蘭州理工大學(xué) 電氣工程與信息工程學(xué)院,蘭州 730050)
隨著計(jì)算機(jī)視覺(jué)的快速發(fā)展,在實(shí)際應(yīng)用中圖像處理的速度、精度也越來(lái)越高。雖然有圖形處理器 GPU(graphics processing unit)進(jìn)行加速,但是在多數(shù)計(jì)算機(jī)中計(jì)算的實(shí)時(shí)性仍達(dá)不到要求,因而提出了超像素這一概念。
Ren和Malik在圖像處理中提出超像素的概念,為圖像預(yù)處理提供一種全新的設(shè)計(jì)思路[1]。超像素是指圖像中具有一致特性(相似的紋理、顏亮度等)的像素集。以超像素為處理單元相比以像素為處理單元,具有以下優(yōu)勢(shì):
1)超像素作為圖像一種緊湊表示方式,不僅可以摒棄冗余的信息而且降低了空間的復(fù)雜度。
2)超像素分割將上百萬(wàn)像素轉(zhuǎn)換為僅由幾百超像素表示的圖像,這有利于提升計(jì)算效率。
3)對(duì)于紋理較弱的圖像區(qū)域[2],傳統(tǒng)的方法處理時(shí)候難以找到相關(guān)的特征點(diǎn),進(jìn)而導(dǎo)致這部分信息丟失;而超像素對(duì)弱紋理區(qū)域信息保存較好。
根據(jù)原理的不同,超像素可分為以下2種:①基于梯度的分割,代表算法有Mean Shift算法,Turbo Pixel算法,Watershed 算法,SLIC 算法[3-6];②基于圖論的分割,代表算法有N-Cuts算法、Superpixel Lattices算法、GCB 與 GCa算法[7-9]。
超像素的分割實(shí)質(zhì)是具有相同屬性的一類(lèi)像素聚類(lèi)。傳統(tǒng)的聚類(lèi)方法有K-mean聚類(lèi)算法、模糊聚類(lèi)算法和譜聚類(lèi)算法等。它們均基于單個(gè)像素進(jìn)行聚類(lèi),考慮到其分割結(jié)果的不穩(wěn)定性以及存在較大的噪聲,傳統(tǒng)聚類(lèi)方法不適合分割的要求。
目前最好的超像素分割算數(shù)當(dāng)屬SLIC(simple liner iterative clustering),它滿(mǎn)足文中圖像分割的要求。因此,文中首先采用導(dǎo)向?yàn)V波器對(duì)圖像進(jìn)行預(yù)處理,得到邊緣加強(qiáng)的對(duì)象,再次使用SLIC對(duì)已經(jīng)處理的圖像進(jìn)行分割,進(jìn)而達(dá)到提高分割效率的目的。
在導(dǎo)向?yàn)V波器[10]的定義中,關(guān)鍵的假設(shè)是導(dǎo)向圖I與濾波輸出q之間的局部線(xiàn)性模型。假設(shè)q是以像素k為中心的窗口Wk中I的線(xiàn)性變換:
式中:ak和bk為線(xiàn)性模型的系數(shù),在Wk中它們視為常數(shù)有用半徑為r的正方形窗口。該線(xiàn)性模型只有在I存在邊的情況下,q才會(huì)有邊緣輸出。因?yàn)榇嬖诘年P(guān)系為▽q=a▽I,為確定線(xiàn)性系數(shù)ak和bk,需要來(lái)自濾波輸入p的約束。將輸出q建模為輸入p減去一些不需要的分量n,如噪聲/紋理等。即
為了尋找一種解決方案,在保持線(xiàn)性模型的同時(shí)最小化q和p之間的差異,因而最小化在窗口Wk中的代價(jià)函數(shù)為
式中:ε為懲罰較大ak的正則化參數(shù)。
通過(guò)對(duì)式(3)的計(jì)算,得到的ak和bk計(jì)算表達(dá)式為
式中:μk和分別為在窗口Wk中I的均值、方差;為窗口Wk中像素的總數(shù)。
式中:為窗口Wk中p的均值。由線(xiàn)性系數(shù)ak和bk,則可通過(guò)式(1)計(jì)算得到濾波輸出qi。導(dǎo)向?yàn)V波如圖1所示,視差圖紋理與導(dǎo)向圖的一樣,原圖失去了表面紋理。
圖1 導(dǎo)向?yàn)V波示意Fig.1 Guided filter schematic
由于像素i可能被包含于多個(gè)重疊的窗口中,這導(dǎo)致在不同的窗口中用式(1)計(jì)算時(shí)qi的值不相同,為此采用qi所有可能值的均值來(lái)替代。因此在圖像中每個(gè)窗口Wk計(jì)算ak,bk。
其中
由于盒子窗口的對(duì)稱(chēng)性,式(6)可以重寫(xiě)為
其中
式中:,為所有包含像素i窗口的平均系數(shù)。
簡(jiǎn)單線(xiàn)性迭代聚類(lèi)算法SLIC可以產(chǎn)生規(guī)則的超像素,并且其在邊界連接、計(jì)算效率和分割質(zhì)量比其他分割算法優(yōu)異。
SLIC算法是基于K-Means思想提出的一種分割算法,在分割過(guò)程中先將RGB圖像轉(zhuǎn)換到CIE-Lab顏色空間和空間中的五維特征向量然后用生成的五維特征向量來(lái)生成像素度量的標(biāo)準(zhǔn),根據(jù)標(biāo)準(zhǔn)進(jìn)行超像素分割。具體步驟如下:
步驟1獲得種子點(diǎn)并對(duì)其進(jìn)行初始化。根據(jù)需要設(shè)定分割超像素的個(gè)數(shù)K,同時(shí)在圖內(nèi)均勻的分配K個(gè)種子點(diǎn)。假設(shè)處理的圖片I總共有N個(gè)超像素,欲得到K個(gè)均勻的超像素,則每個(gè)超像素大小為N/K,相鄰超像素種子間的距離近似為S=N/K。
步驟2在每個(gè)種子點(diǎn)周?chē)?S×2S的區(qū)域進(jìn)行搜索,找到和種子點(diǎn)相似的若干點(diǎn)進(jìn)行聚類(lèi)。由于存在種子點(diǎn)是邊緣或者是噪聲點(diǎn)情況,算法中采用3×3的窗口將種子點(diǎn)沿梯度的方向移動(dòng)到最小的區(qū)域。
步驟3給每個(gè)種子點(diǎn)鄰域內(nèi)的所有像素進(jìn)行標(biāo)簽處理。計(jì)算每個(gè)搜索到的像素點(diǎn)與種子點(diǎn)之間的距離,將像素點(diǎn)分配到與其距離最近的類(lèi)內(nèi)。
步驟4重復(fù)步驟3直到迭代滿(mǎn)足終止條件為止。
距離的定義為
式中:dc為顏色距離;ds為空間距離;S為種子間的距離;m為顏色和空間之間的比例因子,m越大,說(shuō)明后項(xiàng)占的比例較多,生成的超像素越緊湊;m越小,則說(shuō)明生成的超像素越不規(guī)則。
導(dǎo)向?yàn)V波器與雙邊濾波器Bilateral Filter一樣,都能起到保護(hù)邊緣的作用,但相對(duì)于雙邊濾波器,導(dǎo)向?yàn)V波器可以更好地接近邊緣并且使邊緣平滑。無(wú)論內(nèi)核、強(qiáng)度大小,導(dǎo)向?yàn)V波器是一種快速具有線(xiàn)性的時(shí)間算法。因此,文中采用導(dǎo)向?yàn)V波器來(lái)增強(qiáng)對(duì)象的邊緣,對(duì)邊緣的像素進(jìn)行處理。通過(guò)使用SLIC算法對(duì)導(dǎo)向?yàn)V波輸出進(jìn)行分割。由于導(dǎo)向?yàn)V波器對(duì)邊緣像素進(jìn)行了預(yù)處理,SLIC在對(duì)邊緣像素聚類(lèi)時(shí)減少了迭代次數(shù),使計(jì)算效率得到提升。同時(shí),邊緣的強(qiáng)化促使超像素分割的效果相對(duì)于僅使用SLIC時(shí)的分割更好。超像素分割流程如圖2所示。
圖2 超像素分割流程Fig.2 Superpixel segmentation flow chart
導(dǎo)向?yàn)V波器不僅可以平滑對(duì)象邊緣,而且更靠近對(duì)象的邊緣并對(duì)其具有一定強(qiáng)化作用。在此,文中在邊緣強(qiáng)化的部分采用雙邊濾波器Bilateral Filter[11]與導(dǎo)向?yàn)V波器進(jìn)行對(duì)比;在超高像素分割部分采用SLIC與文中所提方法(導(dǎo)向?yàn)V波和SLIC結(jié)合)進(jìn)行對(duì)比。試驗(yàn)在Intel Core i3 CPU 2.5 GHz的個(gè)人電腦上運(yùn)行,使用Visual Studio 2015和Openc V3.0軟件。
導(dǎo)向?yàn)V波與雙邊濾波的對(duì)比如圖3所示,通過(guò)對(duì)圖3(a)局部區(qū)域放大,觀察二者的區(qū)別。圖3(b)(d)為導(dǎo)向?yàn)V波結(jié)果,圖 3(c)(e)為雙邊濾波結(jié)果。
由圖 3(b)(d)可見(jiàn),濾波更接近邊緣,并且邊緣比較平滑;從圖 3(c)(e)可以觀察到,靠近邊緣處的像素并未被正確地處理。由此得出:導(dǎo)向?yàn)V波對(duì)于對(duì)象的邊緣具有增強(qiáng)的效果,其性能優(yōu)于雙邊濾波。
圖3 導(dǎo)向?yàn)V波結(jié)果與雙邊濾波結(jié)果的對(duì)比Fig.3 Comparison between the results of guided filtering and the results of bilateral filtering
文中采用導(dǎo)向?yàn)V波與SLIC相結(jié)合的程序運(yùn)行,在代碼的數(shù)量上提出的方法較多,無(wú)法針對(duì)計(jì)算效率進(jìn)行比較。為公平起見(jiàn),在此僅采用原始圖與導(dǎo)向?yàn)V波圖通過(guò)SLIC算法處理,對(duì)其運(yùn)行時(shí)間及效果進(jìn)行對(duì)比。SLIC+原始圖如圖4所示,SLIC+導(dǎo)向圖如圖5所示。
經(jīng)過(guò)圖4與圖5的對(duì)比,可以發(fā)現(xiàn)在超像素?cái)?shù)為50和100時(shí),盡管都存在對(duì)邊緣分割不完善的情況,圖5的效果優(yōu)于圖4。
圖4 SLIC+原始圖Fig.4 SLIC+the original image
圖5 SLIC+導(dǎo)向圖Fig.5 SLIC+the guided filter image
如超像素?cái)?shù)為50時(shí),圖4(b)中箭頭所指的花瓣邊緣明顯沒(méi)有被成功分割,而在圖5該部分明顯被分割到邊緣。隨著分割超像素?cái)?shù)增大,兩者雖然都能快速接近圖像邊緣,但是圖5的效果稍?xún)?yōu)于圖4。超像素分割運(yùn)行時(shí)間見(jiàn)1。
表1 超像素分割時(shí)間Tab.1 Superpixel segmentation time (s/S)
由表1可知,文中所提方法在超像素分割數(shù)量相對(duì)較少的情況下,運(yùn)行的時(shí)間相對(duì)于SLIC+原始圖的要少,其計(jì)算效率有所提升。但隨著分割數(shù)量的增加,所提方法比SLIC+原始圖的運(yùn)行時(shí)間長(zhǎng)(如超像素?cái)?shù)為800時(shí))。這是由于導(dǎo)向圖在保護(hù)邊緣的同時(shí),圖像的部分紋理丟失,過(guò)小的超像素已不能包含邊緣,因而運(yùn)行時(shí)間較長(zhǎng)。由此所提方法在實(shí)際應(yīng)用中超像素?cái)?shù)在一定范圍時(shí)才能更有效。
試驗(yàn)通過(guò)將導(dǎo)向?yàn)V波器與SLIC相結(jié)合,不僅使圖像的分割更接近對(duì)象的邊緣,而且使超像素能夠更好地與對(duì)象邊緣對(duì)齊。同時(shí),由于將對(duì)象的邊緣增強(qiáng),使在種子點(diǎn)周?chē)垲?lèi)的時(shí)候避免了邊緣附近點(diǎn)的干擾,減少了迭代次數(shù)從而提高計(jì)算效率。該方法不足的之處在于導(dǎo)向?yàn)V波處理后,圖像表面的部分紋理丟失,因此不適于對(duì)紋理要求較高的地方。