圖像連通域標記算法是從一幅柵格圖像(一般爲二值圖像)中,將互相鄰接(4鄰接或8鄰接)的具備非背景值的像素集合提取出來,爲不一樣的連通域填入數字標記,而且統計連通域的數目。經過對柵格圖像中進行連通域標記,可用於靜態地分析各連通域斑塊的分佈,或動態地分析這些斑塊隨時間的集聚或離散,是圖像處理很是基礎的算法。目前經常使用的連通域標記算法有1)掃描法(二次掃描法、單向反覆掃描法等)、2)線標記法、3)區域增加法。二次掃描法因爲簡單通用而被普遍使用!html
圖1 連通域標記示意圖算法
隨着所要處理的數據量愈來愈大,使用傳統的串行計算技術的連通域標記算法運行時間過長,難以知足實際應用的效率需求。隨着並行計算技術的發展,利用不一樣的編程模型,許多數據密集型的計算任務能夠被同時分配給單機多核或多機多處理器進行並行處理,從而有可能大幅度縮減計算時間。目前在集羣計算領域普遍使用MPI來進行並行化,在單機領域普遍使用OpenMP進行化,本文針對基於等價對的二值圖像連通域標記算法的進行了並行化設計,利用不一樣的並行編程模型分別實現了不一樣的並行算法,並經過實驗對利用不一樣並行編程模型所實現的連通域標記算法進行了性能對比分析。編程
顧名思義,二次掃描串行算法步驟包含兩部分。數組
a)標記post
b)等價關係創建性能
利用並查集鏈表進行標記更新。測試
二次掃描的串行算法中,非直接相鄰的各像元數據之間是無關的,將圖像分割爲數據塊後,對於各個數據塊之間的主體運算也是獨立無關的,可並行性較高,所以可經過對圖像進行分塊來加快計算時間、提升計算效率。大數據
a)各個進程分別使用串行算法計算 url
b)各個進程將各塊的標記值惟一化spa
將1到n-1進程中比較得到的等價對數組統一發送給0進程,0進程生成並查集鏈表。
e)廣播全局並查集鏈表,各進程更改標記值
主進程廣播全局並查集鏈表,各進程接收後更新標記值。
並行算法詳細流程圖。
MPI版本和OpenMP版本的並行算法。
CPU:兩顆Intel(R) Quad Core E5645 Xeon(R) CPU,共12核;
內存:80GB ;操做系統:Linux CentOS 64位。
CPU:兩顆Intel(R) Quad Core E5645 Xeon(R) CPU,共12核;
內存:32GB;操做系統:Linux CentOS 64位;
節點間文件系統:Network File System (NFS)。
緣由:並查集鏈表的影響。
連通域標記算法不少時間用於對並查集鏈表進行大量查詢和插入操做。
OpenMP編譯製導語句會影響編譯結果,這也能夠解釋單線程OpenMP程序比串行程序慢這一現象。
連通域標記算法的並行化研究,馬益杭、佔利軍、謝傳節、秦承志,《地理與地理信息科學》