本發(fā)明涉及一種圖像處理領(lǐng)域,具體為一種用于水平集圖像分割的快速符號(hào)距離函數(shù)計(jì)算方法。
背景技術(shù):
圖像分割是圖像處理領(lǐng)域中的一個(gè)關(guān)鍵技術(shù),主要用于目標(biāo)識(shí)別和理解,在基于圖像的人工智能領(lǐng)域中起到非常重要的作用。,同時(shí)圖像分割也是一經(jīng)典難題,發(fā)展至今仍沒(méi)有找到一個(gè)通用的方法。常用的分割技術(shù)有基于閾值的分割方法、基于邊界的分割方法、基于區(qū)域的分割方法。osher和sethian提出的基于水平集的分割方法是一種基于邊界的分割方法,由于能夠很好地處理拓?fù)浣Y(jié)構(gòu)發(fā)生變化時(shí)產(chǎn)生的問(wèn)題近年來(lái)成為圖像分割中最大的研究熱點(diǎn)。一般在水平集計(jì)算的初始化及更新過(guò)程中,都需要計(jì)算符號(hào)距離函數(shù)(sdf)。符號(hào)距離函數(shù)如下定義:
其中d[(x,y),c]表示點(diǎn)(x,y)與閉合曲線c之間的距離。
這一選擇的優(yōu)點(diǎn)是:由于距離函數(shù)具有如下基本性質(zhì):
由于給定的曲線運(yùn)動(dòng)方程只是對(duì)于嵌入函數(shù)的零水平集成立,而不是對(duì)函數(shù)的所有水平集成立,所以隨著演化的的進(jìn)行,u逐漸偏離了距離函數(shù)的性質(zhì),
對(duì)于任意閉合曲線,直接計(jì)算符號(hào)距離函數(shù)的計(jì)算量較大。特別是對(duì)于大幅圖像來(lái)說(shuō),計(jì)算量更大。因此,如何快速準(zhǔn)確地計(jì)算任意閉合曲線地符號(hào)距離函數(shù),對(duì)于提高水平集方法地效率和穩(wěn)定性至關(guān)重要。
符號(hào)距離函數(shù)不僅用于水平集分割還大量直接用于計(jì)算機(jī)視覺(jué)中的三維視覺(jué)特征提取,模式識(shí)別等領(lǐng)域。而計(jì)算符號(hào)距離函數(shù)的計(jì)算量較大,時(shí)間復(fù)雜度為o(n*m),n為圖像點(diǎn)數(shù),m為閉合曲線點(diǎn)數(shù)。尤其對(duì)于大幅圖像,計(jì)算量更大。故快速準(zhǔn)確地計(jì)算符號(hào)距離函數(shù)對(duì)提高水平集方法的效率和穩(wěn)定性至關(guān)重要。
上世紀(jì)90年代開(kāi)始研究人員提出了源點(diǎn)掃描法,快速步進(jìn)法和降維法。源點(diǎn)掃描法確認(rèn)與每個(gè)網(wǎng)格點(diǎn)同處一條特性線(輪廓線c的法線)上的輪廓線點(diǎn)(源點(diǎn)),基于源點(diǎn)來(lái)計(jì)算符號(hào)距離,其計(jì)算復(fù)雜度為o(k*n),其中k為迭代此處,n為圖像點(diǎn)數(shù)??焖俨竭M(jìn)法以封閉曲線為起點(diǎn),從法線方向進(jìn)行放射,采用快速匹配法計(jì)算符號(hào)距離,該方法的計(jì)算復(fù)雜度為o(nlnm)。降維法將2維或更高維符號(hào)距離計(jì)算轉(zhuǎn)換為兩次1維符號(hào)距離計(jì)算(見(jiàn)公式(2)),其中df|x'(y)為沿y方向每列1維符號(hào)距離計(jì)算結(jié)果,再沿x方向做一次1維符號(hào)距離計(jì)算即得到df(x,y)。每次1維符號(hào)距離計(jì)算(式3)可等效為求一系列圖像點(diǎn)對(duì)應(yīng)的拋物線組的下邊界得到(附圖1),其計(jì)算復(fù)雜度為o(2n)。雖然理論上在降維法計(jì)算中圖像的每行和每列的計(jì)算是獨(dú)立的,可以并行計(jì)算完成,計(jì)算復(fù)雜度為o(w+h),其中w為圖像寬度,h為圖像高度,但是所采用的拋物線下邊界法仍然是串行的。
其中
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種快速符號(hào)距離函數(shù)計(jì)算方法,該方法采用并行方法快速生成距離值,該計(jì)算方法與傳統(tǒng)計(jì)算方法相比,具有很高的實(shí)時(shí)性。符號(hào)距離函數(shù)計(jì)算是水平集圖像分割技術(shù)中的關(guān)鍵步驟,常規(guī)計(jì)算方法非常耗時(shí),影響圖像分割效率。本發(fā)明采用并行計(jì)算實(shí)現(xiàn)符號(hào)距離函數(shù)的快速計(jì)算,進(jìn)而大大提高分割速度。
本發(fā)明的上述目的通過(guò)如下技術(shù)方案來(lái)實(shí)現(xiàn)的:一種并行快速符號(hào)距離函數(shù)計(jì)算方法,它包括如下步驟:它包括如下步驟:
1)符號(hào)計(jì)算步驟,采用區(qū)域生長(zhǎng)法確定區(qū)域內(nèi)部和外部,從而得到距離符號(hào)值;
2)y方向計(jì)算步驟,該步驟通過(guò)并行方法得到圖像上各點(diǎn)在y方向上到封閉曲線距離值df|x'(y);
3)x方向計(jì)算步驟,該步驟通過(guò)并行拋物線下界方法得到圖像上各點(diǎn)到封閉曲線最短距離值df(x,y)。
本發(fā)明對(duì)于寬度為w,高度為h的圖像,分配w*h個(gè)線程,每個(gè)線程負(fù)責(zé)圖像中一個(gè)點(diǎn)的計(jì)算。具體計(jì)算時(shí)采用了并行降維法,即將二維圖像的符號(hào)距離計(jì)算變成兩個(gè)1維并行符號(hào)距離的計(jì)算。
本發(fā)明每個(gè)點(diǎn)并行計(jì)算時(shí)先向右計(jì)算,刪除拋物線下界以上的拋物線,再向左計(jì)算刪除拋物線下界以上的拋物線。
與現(xiàn)有技術(shù)相比,具有以下有益效果:
(1)本發(fā)明所涉及的符號(hào)距離是通過(guò)并行計(jì)算得到的,故計(jì)相對(duì)于串行計(jì)算
方法速度要快很多。
(2)本發(fā)明主要解決了拋物線下界法的并行計(jì)算問(wèn)題。常規(guī)串行拋物線下界
法尋找拋物線下界時(shí),需要通過(guò)各拋物線的交點(diǎn)進(jìn)行動(dòng)態(tài)排序調(diào)整,即當(dāng)次的
排序結(jié)果需用到上次的排序,是一個(gè)典型的串行問(wèn)題。本發(fā)明巧妙地將該串行
問(wèn)題轉(zhuǎn)化成少量并行問(wèn)題的迭代計(jì)算,即每次迭代時(shí),每個(gè)點(diǎn)均向前向后進(jìn)行
拋物線下界計(jì)算,最多經(jīng)過(guò)3次迭代計(jì)算即能完成所有點(diǎn)的距離計(jì)算,即計(jì)算
復(fù)雜度為o(3),遠(yuǎn)遠(yuǎn)低于o(w+h)。
附圖說(shuō)明
圖1為拋物線下界法求符號(hào)距離示意圖。從圖中可以看出拋物線y1的左邊和拋物線y4的右邊構(gòu)成這組拋物線的下界,拋物線y2和y3被刪除,而這個(gè)下界就是每個(gè)點(diǎn)的符號(hào)距離,即y1的左邊曲線和y4的右邊曲線就是各點(diǎn)的符號(hào)距離值。
圖2為并行拋物線下界法流程圖。
具體實(shí)施方式
實(shí)施例一:
一種并行快速符號(hào)距離函數(shù)計(jì)算方法,它包括如下步驟:
1)采用區(qū)域生長(zhǎng)法得到一個(gè)封閉曲線的內(nèi)部和外部,內(nèi)部距離符號(hào)置負(fù),外部距離符號(hào)置正;
2)對(duì)于寬度為w,高度為h的圖像,分配w*h個(gè)線程,每個(gè)線程負(fù)責(zé)圖像中一個(gè)點(diǎn)的符號(hào)距離計(jì)算;
3)并行掃描圖像中的每列,計(jì)算每個(gè)點(diǎn)離邊界點(diǎn)垂直方向上的最近一維距離df|x'(y)。
4)并行掃描圖像中的每行,采用并行拋物線下界法計(jì)算得到二維df(x,y)。
實(shí)施例二:
一種并行快速符號(hào)距離函數(shù)計(jì)算方法,它包括如下步驟:
步驟1,從計(jì)算機(jī)硬盤中讀入包含封閉曲線的寬度為w,高度為h的圖像,其中封閉曲線的點(diǎn)的像素值為1,其他點(diǎn)的像素值為0。
步驟2,計(jì)算符號(hào)。采用區(qū)域生長(zhǎng)法得到一個(gè)封閉曲線的內(nèi)部和外部,內(nèi)部距離符號(hào)置負(fù),外部距離符號(hào)置正。
步驟3,計(jì)算df|x'(y)。分配w*h個(gè)線程,每個(gè)線程對(duì)應(yīng)圖像中的一個(gè)點(diǎn),對(duì)于每個(gè)封閉曲線上的點(diǎn)(源點(diǎn))以步長(zhǎng)1分別向上和向下延伸到圖像邊界,經(jīng)過(guò)的點(diǎn)的df|x'(y)即為延伸的步長(zhǎng)數(shù),記錄其相應(yīng)的源點(diǎn);在進(jìn)行延伸時(shí),如果經(jīng)過(guò)的點(diǎn)已有源點(diǎn)存在,則其存在多個(gè)源點(diǎn),那么取離它距離最近的源點(diǎn)的距離作為df|x'(y)。
步驟4,計(jì)算df(x,y)。分配w*h個(gè)線程,每個(gè)線程對(duì)應(yīng)圖像中的一個(gè)點(diǎn)。計(jì)算分兩步,第一步向右計(jì)算階段,并行計(jì)算每個(gè)點(diǎn)對(duì)應(yīng)的拋物線和右邊相鄰點(diǎn)對(duì)應(yīng)拋物線的交點(diǎn),如果交點(diǎn)在前一個(gè)交點(diǎn)左邊,則刪除前一個(gè)拋物線,并做刪除標(biāo)志,刪除掉的拋物線不再參與后續(xù)計(jì)算,繼續(xù)與后面一個(gè)點(diǎn)的拋物線求交點(diǎn),直到?jīng)]有拋物線被刪除或者后一個(gè)拋物線是被刪除的為止;第二步向左計(jì)算階段,并行計(jì)算每個(gè)點(diǎn)對(duì)應(yīng)的拋物線和左邊相鄰點(diǎn)(且沒(méi)有刪除標(biāo)志)對(duì)應(yīng)拋物線的交點(diǎn),如果交點(diǎn)在后一個(gè)交點(diǎn)右邊,則刪除當(dāng)前拋物線,繼續(xù)與前面一個(gè)沒(méi)有刪除標(biāo)志的拋物線求交點(diǎn),直到?jīng)]有拋物線被刪除為止。具體計(jì)算流程圖見(jiàn)附圖2。