策略模式在圖像分割中的應(yīng)用
圖像分割是一種重要的圖像技術(shù),它不僅得到人們廣泛重視和研究,也在實(shí)際中得到大量的應(yīng)用。圖像分割在不同領(lǐng)域中有時(shí)也用其他名稱,如目標(biāo)輪廓技術(shù)閾值化技術(shù),圖像區(qū)分或求差技術(shù),目標(biāo)檢測(cè)技術(shù),目標(biāo)識(shí)別技術(shù),目標(biāo)跟蹤技術(shù)等,這些技術(shù)本身或核心實(shí)際上也是圖像分割技術(shù)。圖像分割的算法有很多,但是,在目前還沒有一個(gè)算法是適合于所有的圖像分割。針對(duì)不同的領(lǐng)域、不同的條件,應(yīng)該選用不同的分割算法。
1 基本概念
1.1 圖像分割定義
借助集合概念對(duì)圖像分割可給出如下的定義:令集合R代表整個(gè)圖像區(qū)域,對(duì)R的分割可看作將R分成N個(gè)子區(qū)域Rl,R2,…RN的過程:
(a)URi=R;
(b)讀所有的i和j,i≠j,有Ri∩Rj=φ;
(c)對(duì)i=l,2,…,N,有P(Ri)=TRUE;
(d)對(duì)i≠j,有P(Ri∪Rj)=FALSE;
(e)對(duì)i=1,2,…,N,Ri是連通的區(qū)域。
其中P(Ri)是對(duì)所有在集合Ri元素的邏輯謂詞,φ代表空集。
對(duì)圖像的分割總是根據(jù)一些分割準(zhǔn)則進(jìn)行的。條件(a)說明分割必須是完全的;即,每個(gè)象素必須屬于一個(gè)區(qū)域。條件(b)要求區(qū)域中的點(diǎn)必須與某個(gè)預(yù)定義的準(zhǔn)則相聯(lián)系。條件(c)說明不同區(qū)域必須是不相交的。條件(d)涉及在分割區(qū)域內(nèi)必須滿足的性質(zhì)——例如如果所有Ri內(nèi)的像素有相同的灰度級(jí),則P(Ri)=TRUE。條件(e)說明區(qū)域Ri和Rj對(duì)于謂詞P是不同的。
1.2 Strategy模式
按照四人團(tuán)的說法,Strategy模式的意圖是:定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換,本模式使算法可獨(dú)立于使用它們的客戶而變化。將算法的選擇和算法的實(shí)現(xiàn)相分離,讓客戶可以基于場(chǎng)景作出選擇。
2 典型算法
2.1 邊緣檢測(cè)邊界閉合法
為將圖像中不同的區(qū)域分開,需要將邊緣象素連接起來組成區(qū)域的封閉邊界。邊緣檢測(cè)算子都是并行工作的,如果邊界閉合也能并行完成,則分割基本上可以并行實(shí)現(xiàn)。邊緣象素連接的基礎(chǔ)是它們的梯度之間有一定的相似性。用梯度算子對(duì)圖象處理可得到象素兩方面的信息:1)梯度的幅度;2)梯度的方向。結(jié)合邊緣象素梯度在這兩方面的相似性可把邊緣象素如下連接起來。具體說來如果象素(s,t)在象素(x,y)的領(lǐng)域且它們的梯度幅度和梯度方向分別滿足以下兩個(gè)條件(其中T是幅度閾值,A是角度閾值):
那么就可將(s,t)的象素與在(x,y)的象素連接起來。如對(duì)所有邊緣象素都進(jìn)行這樣的判斷和連接就有希望得到閉合的邊界。
2.2 動(dòng)態(tài)規(guī)劃輪廓搜索法
動(dòng)態(tài)規(guī)劃是一個(gè)多步?jīng)Q策過程,它通過把一個(gè)N步過程化為N個(gè)單步過程的方法使算法的復(fù)雜性按對(duì)數(shù)律降低。根據(jù)動(dòng)態(tài)規(guī)劃的原理,可將全局最優(yōu)化成局部最優(yōu)之和。動(dòng)態(tài)規(guī)劃輪廓搜索法是:
令r(n)為從起始結(jié)點(diǎn)s出發(fā)經(jīng)過當(dāng)前結(jié)點(diǎn)n到達(dá)目標(biāo)結(jié)點(diǎn)g的最小代價(jià)通路的估計(jì)代價(jià)。這個(gè)估計(jì)代價(jià)可以表示成兩個(gè)代價(jià)之和,即從起始結(jié)點(diǎn)s到當(dāng)前結(jié)點(diǎn)n的最小代價(jià)通路的估計(jì)代價(jià)t(n)以及從當(dāng)前結(jié)點(diǎn)n到目標(biāo)結(jié)點(diǎn)g的通路的估計(jì)代價(jià)h(n)之和:
r(n)=t(n)+h(n)
這里t(n)可取為目前從結(jié)點(diǎn)s到結(jié)點(diǎn)n的最小代價(jià)通路,h(n)可借助某些啟發(fā)性知識(shí)得到。常用的啟發(fā)性知識(shí)包括通路的方向性(是否指向搜索的終點(diǎn)),光滑性(可通過曲率計(jì)算來估計(jì))以及代價(jià)估計(jì)。代價(jià)的計(jì)算可參照前面的方法。根據(jù)r(n)=t(n)+h(n)進(jìn)行圖搜索的搜索算法(稱為A*算法)由以下幾個(gè)步驟構(gòu)成:
1)將起始結(jié)點(diǎn)標(biāo)記為OPEN并置t(s)=0;
2)如果沒有結(jié)點(diǎn)為OPEN,失敗退出,否則繼續(xù);
3)將r(n)=t(n)+h(n)算得的估計(jì)代價(jià)r(n)為最小的OPEN結(jié)點(diǎn)標(biāo)記為CLOSE;
4)如果n是目標(biāo)結(jié)點(diǎn),找到通路退出,否則繼續(xù);
5)展開結(jié)點(diǎn)n,得到它的所有子結(jié)點(diǎn)(如果沒有子結(jié)點(diǎn),返回步驟2));
6)如果某個(gè)子結(jié)點(diǎn)ni還沒有標(biāo)記,置r(ni)=t(n)十c(n,ni),標(biāo)記它為OPEN并將指向它的指針返回到結(jié)點(diǎn)n;
7)如果子結(jié)點(diǎn)ni以標(biāo)記為OPEN或CL0SE,根據(jù)t’(ni)=min[t(ni),t(n)+c(n,ni)]更新它的值。將其t’值減少的CLOSE子結(jié)點(diǎn)記為OPEN,并將原指向所有其t’值減少的子結(jié)點(diǎn)的指針重指向n。返回步驟2)。
2.3 改進(jìn)的直方圖凹面分析法
圖像的灰度直方圖是圖像各象素灰度值的一種統(tǒng)計(jì)度量。許多的閾值選取方法就是根據(jù)直方圖來進(jìn)行的。對(duì)含有目標(biāo)和背景兩類區(qū)域的圖像,其直方圖并不一定總是呈現(xiàn)雙峰形式。例如當(dāng)目標(biāo)和背景區(qū)域的主要灰度比較接近而部分重疊時(shí),其間的谷可能不存在。又如當(dāng)圖像中目標(biāo)和背景面積相差較大時(shí),直方圖的一個(gè)峰會(huì)淹沒在另一個(gè)峰旁邊的緩坡里,直方圖具體就是把直方圖看作平面上的區(qū)域,計(jì)算其凸包并求取其最大的凸殘差,以對(duì)應(yīng)最大凸殘差的灰度值作為閾值來分割圖像。這里最大的凸殘差是用一種稱為凹性測(cè)度的指標(biāo)來衡量的。與一般方法不同,這里要求凸殘差的計(jì)算是沿與灰度垂直的直線進(jìn)行的。
改進(jìn)的直方圖凹面分析法就是先將直方圖函數(shù)取對(duì)數(shù),計(jì)算指數(shù)凸包,然后借助凹凸性分析確定閾值。
2.4 分裂,合并和聚集法
區(qū)域生長(zhǎng)方法將圖像以象素為基本單位來進(jìn)行操作,基于區(qū)域灰度差的方法主要有如下步驟:
1)對(duì)圖像進(jìn)行逐行掃描,找出尚沒有歸屬的象素;
2)以該象素為中心檢查它的鄰域象素,即將鄰域中的象素逐個(gè)與它比較,如果灰度差小于預(yù)先確定的閾值,將它們合并;
3)以新合并的象素為中心,返回到步驟2),檢查新象素的鄰域,直到區(qū)域不能進(jìn)一步擴(kuò)張;
4)返回到步驟1),繼續(xù)掃描直到不能發(fā)現(xiàn)沒有歸屬的象素,則結(jié)束整個(gè)生長(zhǎng)過程。
3 Strategy模式的應(yīng)用
圖像分割的主要控制對(duì)象為閾值,為使閾值選取算法的選擇具有更大的靈活性,引入Strategy模式,把不同的閾值選取算法分別封裝起來,并使它們可以相互替換,這樣不但可以在不同的環(huán)境條件下靈活地采用相應(yīng)的閾值選取算法,而且在將來有更好的閾值算法出現(xiàn)時(shí)能夠方便地對(duì)系統(tǒng)進(jìn)行改進(jìn)和擴(kuò)展。實(shí)現(xiàn)Strategy模式的類圖如圖l所示。
圖1中的TaskControl類包含一個(gè)ControlStrategy接口成員controlStrategy,因此Controller類的對(duì)象可以依靠其實(shí)現(xiàn)ControlStrategy接口的成員controlStrategy的多態(tài)性來實(shí)現(xiàn)不同的閾值選取算法。當(dāng)有更好的閾值選取算法出現(xiàn)時(shí),只需添加一個(gè)實(shí)現(xiàn)ControlStrategy接口的類就可以方便地更新圖像分割系統(tǒng)。并且TaskControl類擁有設(shè)置其成員controlStrategy的功能,使得系統(tǒng)可以在運(yùn)行時(shí)更換不同的算法,提高了系統(tǒng)的靈活性。
4 結(jié)論
通過Strategy模式,可以將不同的閾值選取方法封裝起來,使圖像分割系統(tǒng)不再局限于特定場(chǎng)景、一個(gè)閾值選取算法,對(duì)于不同的場(chǎng)景,可以選取不同的算法,實(shí)用的范圍更加的廣泛。