基于cuda的大幅面遙感影像快速分割方法
【專利摘要】本發(fā)明公開了一種基于CUDA的大幅面遙感影像快速分割方法,該方法以“按像元處理”的并行策略設(shè)計了三個高效的GPU核函數(shù),實現(xiàn)了并行化的分形網(wǎng)絡分割方法,很大程度地提高了分割效率,同時針對大幅面遙感影像采取了“分塊分割?快速合并結(jié)果”的分割策略,解決了影像數(shù)據(jù)量過大而導致的顯存不足的問題。相比現(xiàn)有遙感影像分割技術(shù),本發(fā)明無論在分割效果、分割效率上均達到了較高的水準,尤其是針對大幅面遙感影像分割,本發(fā)明的效率優(yōu)勢更為明顯而且穩(wěn)定性更好,同時對計算機硬件條件要求不高,實用性強,有利于推廣使用。
【專利說明】
基于CUDA的大幅面遙感影像快速分割方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及遙感影像分割技術(shù),尤其涉及一種基于CUDA的大幅面遙感影像快速分 割方法。
【背景技術(shù)】
[0002] 面向?qū)ο蟮倪b感影像分析方法是針對高分辨率遙感影像自動化信息提取中被廣 泛使用的方法,其在國土資源管理、水土流失監(jiān)測、城市規(guī)劃等應用領(lǐng)域發(fā)揮著重要作用。 影像分割是面向?qū)ο筮b感影像分析的重要步驟,它將影像劃分為一系列互不重合、內(nèi)部像 素屬性一致、具有一定實體意義的對象。影像分割效果的好壞對面向?qū)ο筮b感影像信息提 取的精度有很大的影像。
[0003] 為了適應不同的需求,研究人員發(fā)展了大量的影像分割方法。然而在目前所發(fā)展 的影像分割方法中,很難保證同一方法在同一分割參數(shù)中對所有地物進行正確分割,因此 基于多尺度多層次的對象分析成為了當前面向?qū)ο笮畔⑻崛〉闹髁鞣椒āS葿aatz和 Schape提出分形網(wǎng)絡演化方法作為一種成熟的分割方法,其結(jié)合了對象的光譜特征和形狀 特征,分割精度高,同時易于輸出不同尺度的分割結(jié)果,而且不同尺度間上下層次關(guān)系清晰 明確,因此該方法在多尺度分析中相比其他方法中具有獨特的優(yōu)勢因而得到了廣泛應用。
[0004] 分形網(wǎng)絡演化方法的缺點是運算量較大,運行效率低下。隨著IKONCKQuickbird、 GeoEye,以及國產(chǎn)高分1號、高分2號等高分辨率觀測衛(wèi)星陸續(xù)發(fā)射以及傳感器技術(shù)的提升, 遙感影像在空間分辨率和時間分辨率不斷提高。隨之而來的是遙感影像數(shù)據(jù)量急劇增長, 這給運算量本身較大的影像分割算法效率帶來極大的挑戰(zhàn)。在這個背景下,如何有效改進 影像分割算法效率已成為迫切需要解決的問題。
[0005] 在另一方面,多核CHJ與GHJ作為現(xiàn)有計算機中所配置的兩種最常見的并行處理 器,成為了當前單機系統(tǒng)高性能計算中能夠被開發(fā)的最主要的計算資源。其中GPU目前在計 算性能、核心數(shù)目等方面發(fā)展極為迅速,遠遠超過多核CHJ的發(fā)展速度。在金融、工程、科學 計算等領(lǐng)域,GPU并行計算得到了廣泛應用。而且統(tǒng)一計算架構(gòu)(compute unified device architecture,CUDA的出現(xiàn)大大提高了GPU的可編程特性,降低了開發(fā)成本,許多遙感領(lǐng)域 工作者開始嘗試GPU并行計算來提高影像處理效率。而影像分割方法作為一類運算密集型 的任務,對其進行并行化設(shè)計具有很大可行性,可以充分發(fā)揮GPU大規(guī)模并行計算的優(yōu)勢。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明要解決的技術(shù)問題在于針對現(xiàn)有技術(shù)中大幅面遙感影像分割方法運行效 率過低的缺陷,提供一種基于CUDA的大幅面遙感影像快速分割方法。
[0007] 本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種基于CUDA的大幅面遙感影像快 速分割方法,包括以下步驟:
[0008] 1)對輸入的大幅面遙感影像進行分塊處理獲得影像子塊,所述分塊處理的分塊大 小以及分塊數(shù)量根據(jù)當前顯卡可用顯存容量以及影像數(shù)據(jù)量計算;
[0009] 2)采用基于CUDA的并行分割算法依次對各個影像子塊進行分割;
[0010] 2.1)為影像子塊中的每個像元分配內(nèi)存空間,所述內(nèi)存空間用于記錄像元以及其 所屬分割對象的必要信息以滿足運算需求;所述必要信息包括:像元所屬對象的ID;像元是 否在所屬對象的邊緣上;像元所屬對象的光譜信息,包括各波段的均值、方差;像元所屬對 象的形狀信息,包括對象面積、周長以及外包矩形區(qū)域;異質(zhì)度最小的相鄰對象ID以及異質(zhì) 度值;
[0011] 2.2)分割對象初始化,將每一個像元看作是一個初始分割對象,初始化對象的屬 性信息;所述對象的屬性信息包括:對象的屬性信息包括對象各個波段的光譜屬性信息以 及形狀屬性信息;
[0012] 2 ? 3)計算相鄰對象異質(zhì)度:
[0013]局部運算部分:取待處理像元,首先搜索相鄰對象,以線程所處理像元的"上下左 右"四鄰域進行搜索,若鄰域?qū)ο驣D與當前像元所屬對象ID不相同,則說明找到相鄰對象, 接下來根據(jù)兩對象的屬性信息計算其異質(zhì)度,最后將相鄰對象中與當前對象異質(zhì)度最小的 對象ID以及其異質(zhì)度值保存在GPU共享內(nèi)存中。這里需要說明的是,搜索相鄰對象是在對象 邊緣上的像元中進行的,如果不在對象邊界上面,則該像元的"上下左右"四個相鄰區(qū)域肯 定與其屬于同一個分割對象,因而搜索不到相鄰對象。因此,若線程處理的像元不在對象的 邊緣上,該線程將會直接結(jié)束。局部運算完成之后,調(diào)用jyncthreads ()函數(shù)使得各個線程 計算結(jié)果同步。
[0014] 全局運算部分:該部分基于局部運算的結(jié)果,將對象邊緣中每一個像元的計算結(jié) 果進行比較,得到對象最小異質(zhì)度的相鄰對象及其異質(zhì)度值;
[0015] 2.4)合并異質(zhì)度小于閾值的相鄰對象并計算新對象的屬性信息;然后,跳轉(zhuǎn)到步 驟2.3);
[0016] 在內(nèi)存中記錄了每一個像元所屬對象的ID值,若兩相鄰對象間異質(zhì)度小于閾值, 則將其中ID值較大的對象ID更新為ID值較小的對象的ID,這里的閾值是根據(jù)用戶經(jīng)驗設(shè)定 的。
[0017] 2.5)若步驟2.4)中沒有新對象合并,則當前影像子塊分割運算完成;
[0018] 3)對影像子塊拼接處的分割對象進行重新分割,消除影像分塊而導致的拼接線; 具體如下:
[0019]將分塊拼接線處的對象所包含的像元進行掩膜處理,利用步驟2)中的并行分割算 法以掩膜影像作為輸入?yún)?shù)進行掩膜分割。
[0020]按上述方案,所述步驟1)中采用按行均勻的數(shù)據(jù)分塊方式對輸入的大幅面遙感影 像進行分塊處理。
[0021 ] 按上述方案,所述步驟2.2)通過應用1]1;[1:13112601^6(^8核函數(shù)實現(xiàn)。
[0022] 按上述方案,所述步驟2.3)通過應用0&1〇11]^丨6116丨61'核函數(shù)實現(xiàn).
[0023] 按上述方案,所述步驟2.3)中局部運算部分完成之后,調(diào)用jyncthreads函數(shù)使 得各個線程計算結(jié)果同步。
[0024] 按上述方案,所述步驟2.4)通過應用|/[6坪6013」6(^8核函數(shù)來實現(xiàn)。
[0025]本發(fā)明產(chǎn)生的有益效果是:本發(fā)明方法對大幅面影像采取了分塊策略,充分利用 了系統(tǒng)資源,而高效的分塊結(jié)果合并策略保證了分塊分割結(jié)果的正確性,同時不會對整體 分割效率帶來過大的影響。因此本發(fā)明針對大幅面遙感影像分割方法運行效率相比傳統(tǒng)串 行方法具有絕對優(yōu)勢。
【附圖說明】
[0026] 下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,附圖中:
[0027] 圖1是本發(fā)明實施例的方法流程圖;
[0028] 圖2是本發(fā)明實施例方法對影像分塊示意圖。
[0029] 圖3是本發(fā)明實施例并行分割算法流程圖。
[0030] 圖4是本發(fā)明實施例分割算法內(nèi)存分配示意圖。
[0031] 圖5是本發(fā)明實施例分割過程中影像對象ID示意圖。
[0032] 圖6是本發(fā)明實施例方法影像分塊拼接線消除示意圖。
[0033] 圖7是本發(fā)明實施例方法的性能測試結(jié)果。
【具體實施方式】
[0034]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合實施例,對本發(fā)明 進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限 定本發(fā)明。
[0035] 如圖1所示,本發(fā)明所述的基于CUDA的大幅面遙感影像分割方法,其包括以下步 驟:
[0036] 步驟1:對輸入的大幅面遙感影像進行分塊處理,如圖2所示,為了便于影像數(shù)據(jù)讀 取以及分塊處理結(jié)果的合并,采用按行均勻的數(shù)據(jù)分塊方式。根據(jù)當前顯卡可用顯存容量 以及影像數(shù)據(jù)量計算分塊大小以及分塊數(shù)量。
[0037]設(shè)原始影像的大小為WXH,系統(tǒng)當前可用顯存為a,每個像元在分割運算中所占用 字節(jié)為P。其中P是根據(jù)影像像元類型以及分割所用的對象屬性特征而確定的。若其滿足下 式條件時,需要對輸入影像進行分塊處理。
[0038] W ? H ? p^;a
[0039]按照按行均勻的數(shù)據(jù)分塊方式,設(shè)影像子塊的列數(shù)、行數(shù)分別為w、h,其應當滿足 下式條件: (w = W
[0040] ^ 7
[h7*/?- p<a
[0041] 影像子塊的列數(shù)是確定的,接下來需要計算其行數(shù)。設(shè)分塊數(shù)目為n,前n-1個影像 子塊行數(shù)為ho,最后一個影像子塊行數(shù)為hi,其計算方法如下式: /?0.=.卜/.(柃'川
[0042] < h、= H ht、 ?4(好-輯〇」+1
[0043] 步驟2:采用基于CUDA的并行分割算法依次對各個影像子塊進行分割。如圖3所示, 本發(fā)明提供的并行分割算法需要三個不同的GHJ核函數(shù)相互配合,為了充分利用GPU大規(guī)模 并行計算的特性,核函數(shù)為影像子塊的每一個像元分配一個單獨的線程進行處理,每個核 函數(shù)具體特征將會在后續(xù)步驟中介紹。并行算法主要通過如下幾個步驟來實現(xiàn):
[0044] 2a)分配顯存和計算資源,如圖4所示,為影像子塊中的每個像元分配內(nèi)存空間,記 錄像元以及其所屬分割對象的必要信息以滿足運算需求。分割對象是影像中相似像元的聚 合而形成的具有一定實體意義的對象,比如建筑物、道路等;
[0045] 其信息包括:1.像元所屬對象的ID; 2.像元是否在所屬分割對象的邊緣上;
[0046] 3.像元所屬對象的光譜信息,包括各波段的均值、方差;4.像元所屬對象的形狀信 息,包括對象面積、周長以及外包矩形區(qū)域;5.異質(zhì)度最小的相鄰對象ID以及異質(zhì)度值。 [0047] 2b)分割對象初始化,這一步通過Initial izeObject s核函數(shù)實現(xiàn),將每一個像元 看作是一個初始分割對象,初始化對象的屬性信息。開始時一個像元就是一個分割對象,然 后逐層合并相似的對象,得到最終分割結(jié)果;對象的屬性信息包括對象各個波段的光譜屬 性信息(均值、方差)、以及形狀屬性信息(對象面積、外包矩形區(qū)域)
[0048] 2c)計算相鄰對象異質(zhì)度,這一步通過CalculateHeter核函數(shù)實現(xiàn),其分為局部運 算和全局運算兩個部分。
[0049] 局部運算部分:首先搜索相鄰對象,以線程所處理像元的"上下左右"四鄰域搜索 進行的,若鄰域?qū)ο驣D與當前像元所屬對象ID不相同,則說明找到相鄰對象,接下來根據(jù)兩 對象的屬性信息計算其異質(zhì)度,最后將相鄰對象中與當前對象異質(zhì)度最小的對象ID以及其 異質(zhì)度值保存在GPU共享內(nèi)存中。這里需要說明的是,搜索相鄰對象是在對象邊緣上的像元 中進行的,因此,若線程處理的像元不在對象的邊緣上,該線程將會直接結(jié)束。局部運算完 成之后,調(diào)用jyncthreads ()函數(shù)使得各個線程計算結(jié)果同步。
[0050] 全局運算部分:該部分基于局部運算的結(jié)果,將對象邊緣中每一個像元的計算結(jié) 果進行比較,得到對象最小異質(zhì)度的相鄰對象及其異質(zhì)度值。其具體做法是將共享內(nèi)存中 的局部運算結(jié)果與全局內(nèi)存中對應的值進行對比,如果共享內(nèi)存中異質(zhì)度小于全局內(nèi)存的 異質(zhì)度,則將全局內(nèi)存的異質(zhì)度替換為局部內(nèi)存的異質(zhì)度,同時更新其相鄰對象的ID值。為 了避免寫操作的沖突,這一部分的運算是在線程的臨界區(qū)中進行,即采用CUDA原子操作技 術(shù)進行數(shù)據(jù)比較以及改值的操作,使得全局內(nèi)存中數(shù)據(jù)的更改同一時刻只能在一個線程中 進行。
[0051] 2d)合并異質(zhì)度小于閾值的相鄰對象并計算新對象的屬性信息,這一步通過 MergeObjects核函數(shù)來實現(xiàn)。為了便于計算,規(guī)定將ID值更大的對象合并到ID較小的對象 中去,如圖5所示,這樣每一個對象的ID與對象像元在影像子塊中最小索引值相一致。如果 當前線程處理像元的索引與對象ID相同(圖5中綠色像元),則還需要計算合并后對象的屬 性信息,并在全局內(nèi)存中進行更新。
[0052] 2e)判斷前面步驟中是否有新對象合并,若沒有,則當前影像子塊分割運算完成, 否則回到步驟2c。
[0053]步驟3:對影像子塊拼接處的分割對象進行重新分割,用以消除影像分塊而導致的 拼接線,保證分割結(jié)果的正確性(如圖6所示)。該步驟將分塊拼接線處的對象所包含的像元 進行掩膜處理,利用步驟2中的并行分割算法進行掩膜分割,與步驟2不同,該步驟增加掩膜 影像作為輸入?yún)?shù),只處理掩膜部分的像元。
[0054] 本發(fā)明相比傳統(tǒng)串行算法的性能提升效果如圖7所示,測試平臺為:
[0055] Intel Core I7CPU,4GB;NVIDIA GeForce GTX770,4GB,1294個CUDA核心數(shù)。
[0056] 從測試結(jié)果中可以看出,影像幅面越大越能發(fā)揮并行計算的優(yōu)勢,加速比也越高。 本發(fā)明所采用的測試數(shù)據(jù)在不同分割尺度下加速比最高可以57。在更大幅面的影像分割 中,傳統(tǒng)串行算法的性能開始急劇下降,這是由于對象屬性信息需要占用大量內(nèi)存空間,需 要將數(shù)據(jù)緩存在計算機硬盤中,從而導致分割過程中頻繁地進行內(nèi)存I/O造成龐大的額外 開銷,而本發(fā)明對大幅面影像采取了分塊策略,充分利用了系統(tǒng)資源,而高效的分塊結(jié)果合 并策略保證了分塊分割結(jié)果的正確性,同時不會對整體分割效率帶來過大的影響。因此本 發(fā)明針對大幅面遙感影像分割方法運行效率相比傳統(tǒng)串行方法具有絕對優(yōu)勢。
[0057] 應當理解的是,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進或變換, 而所有這些改進和變換都應屬于本發(fā)明所附權(quán)利要求的保護范圍。
【主權(quán)項】
1. 一種基于CUDA的大幅面遙感影像快速分割方法,其特征在于,包括以下步驟: 1) 對輸入的大幅面遙感影像進行分塊處理獲得影像子塊,所述分塊處理的分塊大小以 及分塊數(shù)量根據(jù)當前顯卡可用顯存容量以及影像數(shù)據(jù)量計算; 2) 采用基于CUDA的并行分割算法依次對各個影像子塊進行分割; 2.1) 為影像子塊中的每個像元分配內(nèi)存空間,所述內(nèi)存空間用于記錄像元以及其所屬 分割對象的必要信息以滿足運算需求;所述必要信息包括:像元所屬對象的ID;像元是否在 所屬對象的邊緣上;像元所屬對象的光譜信息,包括各波段的均值、方差;像元所屬對象的 形狀信息,包括對象面積、周長以及外包矩形區(qū)域;異質(zhì)度最小的相鄰對象ID以及異質(zhì)度 值; 2.2) 分割對象初始化:將每一個像元看作是一個初始分割對象,初始化對象的屬性信 息;所述對象的屬性信息包括:對象的屬性信息包括對象各個波段的光譜屬性信息以及形 狀屬性信息; 2.3) 計算相鄰對象異質(zhì)度: 局部運算部分:取待處理像元,首先搜索相鄰對象,以線程所處理像元的"上下左右"四 鄰域進行搜索,若鄰域?qū)ο驣D與當前像元所屬對象ID不相同,則說明找到相鄰對象,接下來 根據(jù)兩對象的屬性信息計算其異質(zhì)度,最后將相鄰對象中與當前對象異質(zhì)度最小的對象ID 以及其異質(zhì)度值保存在GHJ共享內(nèi)存中; 全局運算部分:基于局部運算的結(jié)果,將對象邊緣中每一個像元的計算結(jié)果進行比較, 得到對象最小異質(zhì)度的相鄰對象及其異質(zhì)度值; 2.4) 合并異質(zhì)度小于閾值的相鄰對象并計算新對象的屬性信息;然后,跳轉(zhuǎn)到步驟 2.3); 2.5) 若步驟2.4)中沒有新對象合并,則當前影像子塊分割運算完成; 3) 對影像子塊拼接處的分割對象進行重新分割,消除影像分塊而導致的拼接線;具體 如下: 將分塊拼接線處的對象所包含的像元進行掩膜處理,利用步驟2)中的并行分割算法以 掩膜影像作為輸入?yún)?shù)進行掩膜分割。2. 根據(jù)權(quán)利要求1所述的大幅面遙感影像快速分割方法,其特征在于,所述步驟1)中采 用按行均勻的數(shù)據(jù)分塊方式對輸入的大幅面遙感影像進行分塊處理。3. 根據(jù)權(quán)利要求1所述的大幅面遙感影像快速分割方法,其特征在于,所述步驟2.2)通 過應用InitializeObjects核函數(shù)實現(xiàn)。4. 根據(jù)權(quán)利要求1所述的大幅面遙感影像快速分割方法,其特征在于,所述步驟2.3)通 過應用CalculateHeter核函數(shù)實現(xiàn)。5. 根據(jù)權(quán)利要求1所述的大幅面遙感影像快速分割方法,其特征在于,所述步驟2.3)中 局部運算部分完成之后,調(diào)用_syncth readS函數(shù)使得各個線程計算結(jié)果同步。6. 根據(jù)權(quán)利要求1所述的大幅面遙感影像快速分割方法,其特征在于,所述步驟2.4)通 過應用MergeObjects核函數(shù)來實現(xiàn)。
【文檔編號】G06T7/00GK105931256SQ201610390844
【公開日】2016年9月7日
【申請日】2016年6月3日
【發(fā)明人】王曉威, 劉修國, 陳啟浩
【申請人】中國地質(zhì)大學(武漢)