專利名稱:一種均值漂移圖像分割算法的并行化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像分割技術(shù)領(lǐng)域,尤其涉及一種均值漂移圖像分割算法的并行化方法。
背景技術(shù):
圖像分割算法是圖像處理技術(shù)應(yīng)用的重要內(nèi)容之一,而均值漂移分割算法是目前 實(shí)際應(yīng)用較多、比較成熟的圖像分割算法之一。此外由于均值漂移分割算法在運(yùn)行中需要 將圖像數(shù)據(jù)一次性全部讀入內(nèi)存,同時(shí)需要保存圖像的濾波、聚類等中間結(jié)果,在此過(guò)程中 需要占用大量的內(nèi)存資源。另外,由于此算法需要通過(guò)迭代查找樣本點(diǎn)中的局部密度極大 值點(diǎn),計(jì)算量巨大,影響了算法在實(shí)用中的效率??朔@兩種困難的一個(gè)手段就是對(duì)均值漂 移分割算法以并行計(jì)算方式實(shí)現(xiàn)。參考文獻(xiàn)1提供了一個(gè)實(shí)例來(lái)實(shí)現(xiàn)對(duì)均值漂移分割算法 以并行計(jì)算方式。但是,由于均值漂移分割中是通過(guò)迭代的方式查找局部密度極大值點(diǎn)直到收斂, 最后找到的收斂點(diǎn)可能遠(yuǎn)離查找的起始點(diǎn)。如果像通常并行化圖像處理算法時(shí)那樣并行 化均值漂移分割算法,簡(jiǎn)單的將圖像分成數(shù)塊后對(duì)每一塊分別處理并在最后將處理結(jié)果合 并,會(huì)造成分割區(qū)域的不完整。參考文獻(xiàn)1 吳煒,沈占鋒等.《均值漂移高分辨率遙感影像多尺度分割的集群實(shí) 現(xiàn)》[J]·計(jì)算機(jī)工程與應(yīng)用,2009. 45 (034) :ρ· 7-9
發(fā)明內(nèi)容
針對(duì)上述存在的技術(shù)問(wèn)題,本發(fā)明的目的是提供一種均值漂移圖像分割算法的并 行化方法,以解決直接對(duì)圖像分塊后進(jìn)行均值漂移分割后再合并結(jié)果的并行化計(jì)算方式造 成的分割結(jié)果不正確的技術(shù)問(wèn)題。為達(dá)到上述目的,本發(fā)明采用如下的技術(shù)方案①根據(jù)圖像的大小自動(dòng)或手動(dòng)劃分成N個(gè)子區(qū)域,其中N > 2 ;②分別對(duì)劃分得到的所述子區(qū)域內(nèi)的像素逐個(gè)進(jìn)行均值漂移濾波處理,記錄每個(gè) 像素的收斂模態(tài)點(diǎn)坐標(biāo)位置;③將步驟②得到的結(jié)果合并為一個(gè)表結(jié)構(gòu),其中表的關(guān)鍵字為像素的坐標(biāo)位置, 數(shù)據(jù)項(xiàng)為像素的收斂模態(tài)點(diǎn)的坐標(biāo)位置;④建立一個(gè)空的記錄R,在第3步得到的表結(jié)構(gòu)的基礎(chǔ)上,對(duì)圖像上的一個(gè)像素 點(diǎn),以其坐標(biāo)位置P1,在表中查找其收斂模態(tài)點(diǎn)的坐標(biāo)位置P2,記錄下P1的值到R中,將P2 的值賦給P1,并重復(fù)查找與記錄過(guò)程,直至查找到的像素點(diǎn)的坐標(biāo)位置和其收斂模態(tài)點(diǎn)的 坐標(biāo)位置相等,記這個(gè)坐標(biāo)位置的值為PEnd ;⑤更新表中的數(shù)據(jù),將表中所有關(guān)鍵字在R中的記錄項(xiàng)的收斂模態(tài)點(diǎn)坐標(biāo)位置賦 予值PEnd ;⑥對(duì)圖像上所有像素都進(jìn)行第④、⑤步操作;
4
⑦使用區(qū)域生長(zhǎng)算法將具有相同收斂模態(tài)點(diǎn)的像素合并為區(qū)域,完成分割。所述步驟①劃分之后得到的子區(qū)域之間沒(méi)有交集,所有子區(qū)域的并集等于圖像的 區(qū)域。所述步驟②中的均值漂移濾波處理,通過(guò)緩沖區(qū)方式讀取圖像數(shù)據(jù)進(jìn)行處理。所述緩沖區(qū)方式讀取圖像數(shù)據(jù)包括以下子步驟A.申請(qǐng)一塊內(nèi)存作為內(nèi)存緩沖區(qū),用于讀取一定范圍的圖像數(shù)據(jù)將范圍的長(zhǎng) 寬分別記為BufferWi dth和BufferHe i ght,圖像的波段數(shù)記為BandNum,像素的一個(gè)波 段的值占用的字節(jié)數(shù)為ByteNum ;那么申請(qǐng)的內(nèi)存的大小就為BufferSize個(gè)字節(jié),其中 BufferSize = BufferffidthXBufferHeight XBandNumXByteNum ;B.將圖像區(qū)域的寬度、高度分別記為imgWidth和imgHeight,當(dāng)前均值漂移濾波 所要處理的數(shù)據(jù)點(diǎn)或模態(tài)點(diǎn)的位置坐標(biāo)為(Px,Py),在均值漂移濾波的過(guò)程中根據(jù)當(dāng)前查 找局部密度極大值點(diǎn)所需要讀入的像素范圍調(diào)整緩沖區(qū)中讀入的圖像數(shù)據(jù)。所述步驟B進(jìn)一步包括以下子步驟-記均值漂移分割算法中空間帶寬的大小為SpaBandWid,判斷當(dāng)前查找密度極大 值點(diǎn)所需讀取的像素的覆蓋范圍SpatialExtent 若Px-SpaBandffid/2 彡 0,記 Left = Px-SpaBandffid/2,否則記 Left = 0 ;若Px+SpaBandWid/2 彡 imgffidth,記 Right = Px+SpaBandffid/2,否則記 Right = imgWidth ;若Py-SpaBandWid/2 彡 0,記 Top = Py-SpaBandffid/2,否則記 Top = 0 ;^Py+SpaBandffid/2 ( imgHeight, id Bottom = Py+SpaBandffid/2, ^PJid Bottom =imgHeight ;其中Left,Right, Top, Bottom分別是像素覆蓋范圍的左、右、上、下邊界;-判斷圖像上在范圍SpatialExtent內(nèi)的數(shù)據(jù)是否已被讀入緩沖區(qū)中如果數(shù)據(jù)已經(jīng)讀入,則不做處理,如果數(shù)據(jù)不在緩沖區(qū)中,則以坐標(biāo)(Px,Py)為中 心讀入圖像上BufferWidthXBufferHeight大小的矩形范圍內(nèi)的數(shù)據(jù)。所述步驟⑦進(jìn)一步包括以下子步驟(a)新建一個(gè)與圖像大小相同的標(biāo)記圖像用于記錄合并后的區(qū)域,首先將所有的 像素標(biāo)記為未處理;(b)在標(biāo)記圖像上按由左向右,由上之下的順序查找像素的標(biāo)記值,記錄找到的第 一個(gè)標(biāo)記為未處理的像素,將此像素標(biāo)記為一個(gè)新的區(qū)域索引值,記為RegIndx ;(c)由這個(gè)像素開(kāi)始查找其領(lǐng)域像素,記錄下收斂模態(tài)點(diǎn)與此像素的收斂模態(tài)點(diǎn) 相同的領(lǐng)域像素;(d)對(duì)步驟(c)中記錄下的領(lǐng)域像素都標(biāo)記為Reglndx,而后對(duì)這些像素重復(fù)步驟 (c);(e)重復(fù)步驟(c)、(d),直到找不到具有相同模態(tài)點(diǎn)的領(lǐng)域像素為止;(f)如果標(biāo)記圖像上仍然存在標(biāo)記為未處理的像素,則返回步驟(b);否則,結(jié)束。本發(fā)明具有以下優(yōu)點(diǎn)和積極效果1)使均值漂移分割算法適用于并行環(huán)境,提高了結(jié)果的正確性;2)方法簡(jiǎn)單、實(shí)現(xiàn)容易均值漂移分割算法的并行化;
3)增強(qiáng)了處理效率,降低了對(duì)運(yùn)行所需硬件設(shè)備的要求,提高了算法的實(shí)用性。
圖1是本發(fā)明提供的均值漂移圖像分割算法的并行化方法的流程圖。
具體實(shí)施例方式均值漂移方法是一種基于密度梯度上升的非參數(shù)統(tǒng)計(jì)迭代方法,它使數(shù)據(jù)空間內(nèi) 的每一個(gè)點(diǎn)“漂移”到密度函數(shù)的局部極大值點(diǎn),通過(guò)不斷迭代這個(gè)漂移的過(guò)程找到密度函 數(shù)的最大值點(diǎn)。本發(fā)明提供的均值漂移圖像分割算法的并行化方法,包括以下步驟,參見(jiàn)圖1所 示1、根據(jù)圖像的大小自動(dòng)或手動(dòng)劃分為N個(gè)子區(qū)域,N彡2 ;該步驟劃分之后得到的子區(qū)域之間沒(méi)有交集,所有子區(qū)域的并集等于圖像的區(qū) 域。2、利用緩沖區(qū)方式讀取圖像數(shù)據(jù),分別對(duì)劃分得到的每一個(gè)子區(qū)域內(nèi)的像素逐個(gè) 進(jìn)行均值漂移濾波處理,記錄每個(gè)像素的收斂模態(tài)點(diǎn)坐標(biāo)位置,此處進(jìn)行并行計(jì)算處理,每 一個(gè)子任務(wù)處理一個(gè)子區(qū)域內(nèi)的像素。收斂模態(tài)點(diǎn)也即數(shù)據(jù)空間內(nèi)密度函數(shù)的最大值點(diǎn)。將數(shù)據(jù)點(diǎn)的坐標(biāo)也作為數(shù)據(jù)空 間的兩個(gè)維度,分別記為H、V維;通過(guò)不斷迭代均值漂移過(guò)程直至收斂就得到了收斂模態(tài) 點(diǎn),收斂模態(tài)點(diǎn)在H、V維上的數(shù)值就是收斂模態(tài)點(diǎn)的坐標(biāo)。子任務(wù)獲取圖像數(shù)據(jù)的方式采用緩沖區(qū)讀取,具體步驟如下(1)申請(qǐng)一塊內(nèi)存作為內(nèi)存緩沖區(qū),用于讀取一定范圍的圖像數(shù)據(jù)這個(gè)范圍可以自己定義,將范圍的長(zhǎng)寬分別記為BufferWidth和BufferHeight, 圖像的波段數(shù)記為BandNum,像素的一個(gè)波段的值占用的字節(jié)數(shù)為ByteNum ;那么申請(qǐng)的內(nèi) 存的大小就為 BufferSize 個(gè)字節(jié),其中 BufferSize = BufferffidthXBufferHeight XBan dNumXByteNum ;(2)將圖像區(qū)域的寬度、高度分別記為imgWidth和imgHeight,當(dāng)前均值漂移濾波 所要處理的數(shù)據(jù)點(diǎn)或模態(tài)點(diǎn)的位置坐標(biāo)為(Px,Py),在均值漂移濾波的過(guò)程中根據(jù)當(dāng)前查 找局部密度極大值點(diǎn)所需要讀入的像素范圍調(diào)整緩沖區(qū)中讀入的圖像數(shù)據(jù)。該步驟進(jìn)一步 包括以下子步驟①記均值漂移分割算法中空間帶寬的大小為SpaBandWid,判斷當(dāng)前查找密度極大 值點(diǎn)所需讀取的像素的覆蓋范圍SpatialExtent 若Px-SpaBandffid/2 彡 0,記 Left = Px-SpaBandffid/2,否則記 Left = 0 ;若Px+SpaBandWid/2 彡 imgffidth,記 Right = Px+SpaBandffid/2,否則記 Right = imgWidth ;若Py-SpaBandWid/2 彡 0,記 Top = Py-SpaBandffid/2,否則記 Top = 0 ;^Py+SpaBandffid/2 ( imgHeight, id Bottom = Py+SpaBandffid/2, ^PJid Bottom =imgHeight ;其中Left,Right, Top, Bottom分別表示像素覆蓋范圍的左、右、上、下邊界。
6
②判斷圖像上在范圍SpatialExtent內(nèi)的數(shù)據(jù)是否已被讀入緩沖區(qū)中如果數(shù)據(jù)已經(jīng)讀入,則不做處理,如果數(shù)據(jù)不在緩沖區(qū)中,則以坐標(biāo)(Px,Py)為中 心讀入圖像上BufferWidthXBufferHeight大小的矩形范圍內(nèi)的數(shù)據(jù)。3、將第2步得到的結(jié)果合并為一個(gè)表結(jié)構(gòu),其中表的關(guān)鍵字為像素的坐標(biāo)位置, 數(shù)據(jù)項(xiàng)為像素的收斂模態(tài)點(diǎn)的坐標(biāo)位置;4、建立一個(gè)空的記錄R,在第3步得到的表結(jié)構(gòu)的基礎(chǔ)上,對(duì)圖像上的一個(gè)像素 點(diǎn),以其坐標(biāo)位置P1,在表中查找其收斂模態(tài)點(diǎn)的坐標(biāo)位置P2,記錄下P1的值到R中,將P2 的值賦給P1,并重復(fù)查找與記錄過(guò)程,直至查找到的像素點(diǎn)的坐標(biāo)位置和其收斂模態(tài)點(diǎn)的 坐標(biāo)位置相等,記這個(gè)坐標(biāo)位置的值為PEnd ;5、更新表中的數(shù)據(jù),將表中所有關(guān)鍵字在R中的記錄項(xiàng)的收斂模態(tài)點(diǎn)坐標(biāo)位置賦 予值PEnd;6、對(duì)圖像上所有像素都進(jìn)行第4、5步操作;7、使用區(qū)域生長(zhǎng)算法將具有相同收斂模態(tài)點(diǎn)的像素合并為區(qū)域,完成分割。區(qū)域生長(zhǎng)算法的基本思想是將具有相同性質(zhì)的像素集合起來(lái)構(gòu)成區(qū)域。此步驟中 用區(qū)域生長(zhǎng)算法將具有相同收斂模態(tài)點(diǎn)的像素合并為區(qū)域,具體步驟為①新建一個(gè)與圖像大小相同的標(biāo)記圖像用于記錄合并后的區(qū)域,首先將所有的像 素標(biāo)記為未處理;②在標(biāo)記圖像上按由左向右,由上之下的順序查找像素的標(biāo)記值,記錄找到的第 一個(gè)標(biāo)記為未處理的像素,將此像素標(biāo)記為一個(gè)新的區(qū)域索引值,記為RegIndx ;③由這個(gè)像素開(kāi)始查找其領(lǐng)域像素,記錄下收斂模態(tài)點(diǎn)與此像素的收斂模態(tài)點(diǎn)相 同的領(lǐng)域像素;④對(duì)步驟③中記錄下的領(lǐng)域像素都標(biāo)記為Reglndx,而后對(duì)這些像素重復(fù)步驟 ③;⑤重復(fù)步驟③、④直到找不到具有相同模態(tài)點(diǎn)的領(lǐng)域像素為止;⑥步驟②后依次執(zhí)行其后步驟,直至標(biāo)記圖像上不存在標(biāo)記為未處理的像素為止。上述實(shí)例用來(lái)解釋說(shuō)明本發(fā)明,而不是對(duì)本發(fā)明進(jìn)行限制,在本發(fā)明的精神和權(quán) 利要求的保護(hù)范圍內(nèi),對(duì)本發(fā)明做出任何的修改和改變,都落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種均值漂移圖像分割算法的并行化方法,其特征在于,包括以下步驟①根據(jù)圖像的大小自動(dòng)或手動(dòng)劃分成N個(gè)子區(qū)域,其中N≥2;②分別對(duì)劃分得到的所述子區(qū)域內(nèi)的像素逐個(gè)進(jìn)行均值漂移濾波處理,記錄每個(gè)像素的收斂模態(tài)點(diǎn)坐標(biāo)位置;③將步驟②得到的結(jié)果合并為一個(gè)表結(jié)構(gòu),其中表的關(guān)鍵字為像素的坐標(biāo)位置,數(shù)據(jù)項(xiàng)為像素的收斂模態(tài)點(diǎn)的坐標(biāo)位置;④建立一個(gè)空的記錄R,在第3步得到的表結(jié)構(gòu)的基礎(chǔ)上,對(duì)圖像上的一個(gè)像素點(diǎn),以其坐標(biāo)位置P1,在表中查找其收斂模態(tài)點(diǎn)的坐標(biāo)位置P2,記錄下P1的值到R中,將P2的值賦給P1,并重復(fù)查找與記錄過(guò)程,直至查找到的像素點(diǎn)的坐標(biāo)位置和其收斂模態(tài)點(diǎn)的坐標(biāo)位置相等,記這個(gè)坐標(biāo)位置的值為PEnd;⑤更新表中的數(shù)據(jù),將表中所有關(guān)鍵字在R中的記錄項(xiàng)的收斂模態(tài)點(diǎn)坐標(biāo)位置賦予值PEnd;⑥對(duì)圖像上所有像素都進(jìn)行第④、⑤步操作;⑦使用區(qū)域生長(zhǎng)算法將具有相同收斂模態(tài)點(diǎn)的像素合并為區(qū)域,完成分割。
2.根據(jù)權(quán)利要求1所述的均值漂移圖像分割算法的并行化方法,其特征在于 所述步驟①劃分之后得到的子區(qū)域之間沒(méi)有交集,所有子區(qū)域的并集等于圖像的區(qū)域。
3.根據(jù)權(quán)利要求1所述的均值漂移圖像分割算法的并行化方法,其特征在于 所述步驟②中的均值漂移濾波處理,通過(guò)緩沖區(qū)方式讀取圖像數(shù)據(jù)進(jìn)行處理。
4.根據(jù)權(quán)利要求3所述的均值漂移圖像分割算法的并行化方法,其特征在于 所述緩沖區(qū)方式讀取圖像數(shù)據(jù)包括以下子步驟A.申請(qǐng)一塊內(nèi)存作為內(nèi)存緩沖區(qū),用于讀取一定范圍的圖像數(shù)據(jù)將范圍的長(zhǎng)寬分別 記為BufferWidth和BufferHeight,圖像的波段數(shù)記為BandNum,像素的一個(gè)波段的值占用 的字節(jié)數(shù)為ByteNum;那么申請(qǐng)的內(nèi)存的大小就為BufferSize個(gè)字節(jié),其中BufferSize = BufferffidthXBufferHeightXBandNumXByteNum ;B.將圖像區(qū)域的寬度、高度分別記為imgWidth和imgHeight,當(dāng)前均值漂移濾波所要 處理的數(shù)據(jù)點(diǎn)或模態(tài)點(diǎn)的位置坐標(biāo)為(Px,Py),在均值漂移濾波的過(guò)程中根據(jù)當(dāng)前查找局 部密度極大值點(diǎn)所需要讀入的像素范圍調(diào)整緩沖區(qū)中讀入的圖像數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的均值漂移圖像分割算法的并行化方法,其特征在于 所述步驟B進(jìn)一步包括以下子步驟-記均值漂移分割算法中空間帶寬的大小為SpaBandWid,判斷當(dāng)前查找密度極大值點(diǎn) 所需讀取的像素的覆蓋范圍SpatialExtent 若 Px-SpaBandWid/2 彡 0,記 Left = Px-SpaBandWid/2,否則記 Left = 0 ; 若 Px+SpaBandffid/2 ( imgffidth,記 Right = Px+SpaBandffid/2,否則記 Right = imgWidth ;若 Py-SpaBandWid/2 彡 0,記 Top = Py-SpaBandWid/2,否則記 Top = 0 ; ^f Py+SpaBandffid/2 ( imgHeight, i己 Bottom = Py+SpaBandffid/2, ^pJid Bottom = imgHeight ;其中Left,Right, Top, Bottom分別是像素覆蓋范圍的左、右、上、下邊界;-判斷圖像上在范圍SpatialExtent內(nèi)的數(shù)據(jù)是否已被讀入緩沖區(qū)中 如果數(shù)據(jù)已經(jīng)讀入,則不做處理,如果數(shù)據(jù)不在緩沖區(qū)中,則以坐標(biāo)(Px,Py)為中心讀 入圖像上BufferWidthXBufferHeight大小的矩形范圍內(nèi)的數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的均值漂移圖像分割算法的并行化方法,其特征在于 所述步驟⑦進(jìn)一步包括以下子步驟(a)新建一個(gè)與圖像大小相同的標(biāo)記圖像用于記錄合并后的區(qū)域,首先將所有的像素 標(biāo)記為未處理;(b)在標(biāo)記圖像上按由左向右,由上之下的順序查找像素的標(biāo)記值,記錄找到的第一個(gè) 標(biāo)記為未處理的像素,將此像素標(biāo)記為一個(gè)新的區(qū)域索引值,記為RegIndx ;(c)由這個(gè)像素開(kāi)始查找其領(lǐng)域像素,記錄下收斂模態(tài)點(diǎn)與此像素的收斂模態(tài)點(diǎn)相同 的領(lǐng)域像素;(d)對(duì)步驟(c)中記錄下的領(lǐng)域像素都標(biāo)記為Reglndx,而后對(duì)這些像素重復(fù)步驟(c);(e)重復(fù)步驟(c)、(d),直到找不到具有相同模態(tài)點(diǎn)的領(lǐng)域像素為止;(f)如果標(biāo)記圖像上仍然存在標(biāo)記為未處理的像素,則返回步驟(b);否則,結(jié)束。
全文摘要
本發(fā)明涉及圖像分割技術(shù)領(lǐng)域,尤其涉及一種均值漂移圖像分割算法的并行化方法。本發(fā)明包括將圖像的區(qū)域自動(dòng)或手動(dòng)劃分成多個(gè)子區(qū)域,通過(guò)緩沖區(qū)存取數(shù)據(jù)分別對(duì)每個(gè)子區(qū)域內(nèi)的像素進(jìn)行均值漂移濾波,記錄每個(gè)像素的收斂模態(tài)點(diǎn)坐標(biāo)位置,對(duì)每個(gè)像素點(diǎn)P1根據(jù)其收斂模態(tài)點(diǎn)坐標(biāo)位置查找位于此坐標(biāo)位置上的像素點(diǎn)P2并記錄下P1,而后從P2開(kāi)始重復(fù)查找和記錄過(guò)程,直至查找到的像素點(diǎn)的坐標(biāo)位置和其收斂模態(tài)點(diǎn)的位置相等,將這個(gè)位置的值賦給所有記錄下的像素點(diǎn),使用區(qū)域生長(zhǎng)與合并算法得到最終的圖像分割結(jié)果。本發(fā)明對(duì)均值漂移分割算法進(jìn)行并行化處理,增強(qiáng)了處理效率,降低了對(duì)運(yùn)行所需硬件設(shè)備的要求,提高了算法的實(shí)用性。
文檔編號(hào)G06T5/00GK101916432SQ20101024197
公開(kāi)日2010年12月15日 申請(qǐng)日期2010年7月29日 優(yōu)先權(quán)日2010年7月29日
發(fā)明者姚璜, 江萬(wàn)壽 申請(qǐng)人:武漢大學(xué)