《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 聲納圖像對比度增強(qiáng)的并行算法研究
聲納圖像對比度增強(qiáng)的并行算法研究
來源:微型機(jī)與應(yīng)用2013年第8期
王石成1, 袁昌斌2
(1. 江蘇省連云港市氣象局, 江蘇 連云港222000; 2. 中國海洋大學(xué) 信息科學(xué)與工程學(xué)院,
摘要: 分析了MATLAB并行計算工具箱中各部件的關(guān)系,在Windows環(huán)境下搭建了并行計算集群;采用滑動鄰域操作對聲納圖像進(jìn)行了對比度增強(qiáng)處理;重點介紹了MATLAB下的數(shù)據(jù)并行編程,利用分布式數(shù)組設(shè)計了集群環(huán)境下的圖像增強(qiáng)并行算法。實驗結(jié)果表明,MATLAB強(qiáng)大的內(nèi)部函數(shù)使得并行計算易于實現(xiàn),有效地提高了圖像處理的實時性。
Abstract:
Key words :

摘  要: 分析了MATLAB并行計算工具箱中各部件的關(guān)系,在Windows環(huán)境下搭建了并行計算集群;采用滑動鄰域操作對聲納圖像進(jìn)行了對比度增強(qiáng)處理;重點介紹了MATLAB下的數(shù)據(jù)并行編程,利用分布式數(shù)組設(shè)計了集群環(huán)境下的圖像增強(qiáng)并行算法。實驗結(jié)果表明,MATLAB強(qiáng)大的內(nèi)部函數(shù)使得并行計算易于實現(xiàn),有效地提高了圖像處理的實時性。
關(guān)鍵詞: 對比度增強(qiáng);并行計算工具箱;滑動鄰域;聲納圖像;數(shù)據(jù)并行編程;分布式數(shù)組

     隨著聲成像技術(shù)的發(fā)展,聲圖像在海洋開發(fā)領(lǐng)域的應(yīng)用日益廣泛,利用聲圖像進(jìn)行目標(biāo)識別已經(jīng)成為數(shù)字圖像處理領(lǐng)域的一個重要課題。聲納圖像的增強(qiáng)應(yīng)在保持圖像邊緣的前提下提取特征信息,增強(qiáng)處理的目的是改善原圖像的“視覺效果”。智能水下機(jī)器人通過對聲納圖像的不斷濾波、平滑和分割等處理,提取出目標(biāo)點特征和線特征,構(gòu)建基于環(huán)境特征的特征地圖仿真平臺,使用同時定位與地圖創(chuàng)建(SLAM)算法實現(xiàn)機(jī)器人的自主定位和導(dǎo)航[1]。隨著聲納圖像尺寸和數(shù)量的不斷增加,矩陣計算需要消耗更多的時間,從而很難滿足圖像處理的實時性要求,嚴(yán)重影響了機(jī)器人導(dǎo)航定位的精度。而并行處理技術(shù)的發(fā)展和多核計算機(jī)的普及,加快了數(shù)據(jù)處理的速度,能有效處理大量數(shù)據(jù),克服了上述問題。
    并行計算是指將一個應(yīng)用分解成多個子任務(wù),分配給不同的處理器,各個處理器之間相互協(xié)同,并行地執(zhí)行子任務(wù),從而達(dá)到加快求解速度[2]或者提高求解應(yīng)用問題規(guī)模的目的。基于集群的并行圖像處理系統(tǒng)價格低廉、性能較高、可擴(kuò)展性好,具有廣闊的前景和重要的實用價值。
1 MATLAB集群的搭建
  MATLAB并行計算就是把一個大規(guī)模的工作分解為若干小任務(wù)讓不同的計算機(jī)去處理,最后把計算結(jié)果回收,從而提高計算效率。
1.1 PCT和MDCS
    在集群中利用MATLAB進(jìn)行并行計算需要并行計算工具箱PCT (Parallel Computing Toolbox)和MATLAB分布式計算服務(wù)器MDCS(MATLAB Distributed Computing Service)兩個必備的產(chǎn)品。PCT保證用戶利用MATLAB進(jìn)行應(yīng)用程序編寫并與MATLAB進(jìn)行交互,給用戶提供了一個平臺。PCT支持全部MATLAB的M語言特性,同時支持大多數(shù)的工具箱語法。MDCS是在集群環(huán)境中實現(xiàn)并行計算的前提條件,使PCT的應(yīng)用程序得到擴(kuò)展,使其可以運(yùn)行在任意數(shù)量計算機(jī)的任意數(shù)量節(jié)點上。只要保證MDCS正確安裝,在使用過程中用戶不需要再對MDCS進(jìn)行任何操作。這對用戶是透明的,它可以看作是在后臺為機(jī)群中的PC提供一種連接通信支持。
1.2 MATLAB并行集群的搭建和配置
    一個簡單的MATLAB集群模型如圖1所示,集群中所有PC存在于一個局域網(wǎng)中。

    圖1中,每個方框代表一臺PC,節(jié)點機(jī)1作為客戶機(jī)負(fù)責(zé)把一個大的工作分解成若干小任務(wù)分配給節(jié)點機(jī)2、3、4來處理。Schedule和Job Manager起著資源調(diào)度和管理作用,可以指定集群中的任意一臺PC來完成這個角色。
    License Manager是一個許可管理服務(wù)[3],裝有License Manager的PC為頭節(jié)點機(jī)(即Client),機(jī)群中其他利用License Manager生產(chǎn)的License許可的PC為Worker節(jié)點機(jī)。MATLAB的安裝分為頭節(jié)點的安裝和Worker節(jié)點的安裝,為保證配置的穩(wěn)定性,所有節(jié)點都安裝MATLAB(R2010b)。各個Worker節(jié)點激活時需選擇頭節(jié)點機(jī)生成的license.dat許可文件,該文件位于頭節(jié)點機(jī)MATLAB安裝路徑的etc文件中。
2 滑動鄰域操作
    鄰域運(yùn)算是一種重要的空間域圖像增強(qiáng)方法?;瑒余徲虿僮髅看翁幚硪粋€像素,輸出圖像中任何給定像素的值,都通過給輸入圖像中對應(yīng)像素鄰域內(nèi)像素值應(yīng)用一個算法來確定。鄰域是一個矩形塊,當(dāng)圖像矩陣中從一個元素向下一個元素移動時,鄰域塊向相同方向滑動。采用滑動鄰域操作來增強(qiáng)灰度圖像的對比度,即輸入圖像將以像素為單位進(jìn)行處理, 鄰域塊空白的地方補(bǔ)0,對輸入圖形的每一個像素, 指定的滑動鄰域操作將決定輸出圖像相應(yīng)的像素值。
    本文使用雙頻數(shù)字機(jī)械掃描式前視聲納作為水下探測工具,根據(jù)回波強(qiáng)度的不同生成聲納圖像。聲納圖像中強(qiáng)度比較大的回波形成圖像的白色區(qū)域,弱的回波形成圖像的黑色區(qū)域。根據(jù)聲納圖像的特點,選擇非線性變換來增強(qiáng)灰度圖像的對比度。MATLAB中nlfilter( )函數(shù)可實現(xiàn)多種滑動鄰域操作,其用法為:
     x=nlfilter(x, [3,3], @enhance);
    3個輸入?yún)?shù)分別為待處理的圖像、鄰域大小和一個返回標(biāo)量的圖像處理函數(shù),輸出為一幅大小與輸入圖像相同的圖像。輸出圖像中的每個像素的值通過將對應(yīng)輸入像素的鄰域傳遞給返回標(biāo)量的那個函數(shù)來進(jìn)行計算。
3 并行算法研究
3.1 數(shù)據(jù)并行編程

 MATLAB并行編程可分為任務(wù)并行和數(shù)據(jù)并行兩種方式。當(dāng)有大數(shù)據(jù)量需要同時處理,而單機(jī)又無法存儲大數(shù)據(jù)量時,可考慮使用數(shù)據(jù)并行編程方法。數(shù)據(jù)并行是將大量的數(shù)據(jù)包分割成小的數(shù)據(jù)片段,再將這些片段分配給計算節(jié)點進(jìn)行存儲和交互計算,提高了大數(shù)據(jù)量同時處理的能力。
    使用SPMD(Single Program Multiple Data)結(jié)構(gòu),可以指定代碼的區(qū)段以在所有參與并行計算的Worker間并行運(yùn)行。程序執(zhí)行過程中,該結(jié)構(gòu)會自動將在其內(nèi)部使用的數(shù)據(jù)和代碼傳輸給Worker,并在執(zhí)行完畢后將結(jié)果返回給MATLAB客戶端會話。SPMD結(jié)構(gòu)內(nèi)部可以是分布式數(shù)組、并行函數(shù)以及消息傳遞函數(shù)。其中,“Single Program”指的是同一段代碼運(yùn)行在多個Worker上,在MATLAB客戶端上運(yùn)行一段程序,被標(biāo)志為SPMD的模塊運(yùn)行在各自的Worker上。“Multiple Data”是指雖然SPMD語句在所有的Worker上運(yùn)行相同的代碼,但每一個Worker可以有獨有的數(shù)據(jù),所以多數(shù)據(jù)集可以在多個Worker上同時被容納。
3.2 并行算法的執(zhí)行步驟
    實驗在客戶機(jī)(Client)上定義了作業(yè)管理器(Job Manager)和工作(Job),通過分布式數(shù)組將Client內(nèi)部使用的數(shù)據(jù)和代碼傳輸給Worker,程序執(zhí)行的流程圖如圖2所示。讀入原始圖像,進(jìn)行灰度處理,先在Client機(jī)上進(jìn)行串行計算,再判斷是否存在作業(yè)管理器,若沒有則創(chuàng)建,然后打開MATLAB進(jìn)程池,利用distributed函數(shù)生成分布式數(shù)組發(fā)送給4個Worker進(jìn)行各自的滑動鄰域操作,再將處理結(jié)果返回到Client中,合成一幅完整的圖像。最后Client機(jī)串行處理圖像,4個SPMD Worker濾波后的圖像在一幅圖中顯示出來,以便將處理結(jié)果進(jìn)行比較。

4 算法的實現(xiàn)及實驗結(jié)果
4.1 算法的編譯環(huán)境

 實驗中操作系統(tǒng)為Windows 7,集群系統(tǒng)由兩臺計算機(jī)通過路由器來構(gòu)建,可在DOS命令行下打開圖形用戶界面Admin Center 來管理集群機(jī)器。兩臺計算機(jī)的CPU配置分別為:Intel Core i3 CPU 2100 3.10 GHz(四核)和Intel Core i5 CPU 2320 3.0 GHz(四核),內(nèi)存都為4 GB。
4.2 實驗結(jié)果與分析
    根據(jù)配置的環(huán)境運(yùn)行程序,經(jīng)過4個SMPD Worker濾波后的效果如圖3所示。其中,3條白線將圖像平均分為4部分,嚴(yán)重影響了圖像的完整性。這是因為在圖像分割的過程中,distributed函數(shù)向4個Worker發(fā)送分布式數(shù)組時,各個Worker間的數(shù)據(jù)相互獨立,因而沒有捕捉到前一個Worker數(shù)據(jù)的最后1列和下一個Worker數(shù)據(jù)的第1列。

    為解決上述問題,MATLAB通過labSend-Receive命令來實現(xiàn)各個Worker間的通信,從而實現(xiàn)數(shù)據(jù)的交換。labSendReceive的用法為:
    Received = labSendReceive (labto, labfrom, data);
    其中,data為發(fā)送lab中將要發(fā)送的數(shù)據(jù),received為接收lab中保存的數(shù)據(jù)。利用labSendReceive命令重新修改程序后的運(yùn)行效果如圖4所示。其中,圖4(a)是經(jīng)Client主機(jī)串行濾波后的圖像,右圖是改進(jìn)算法后4個SMPD Worker濾波后的圖像。圖4(b)可見,并行圖像增強(qiáng)算法和串行算法處理效果一樣,但前者在處理大量數(shù)據(jù)時具有明顯的優(yōu)勢。

    為了檢測并行優(yōu)化效果,分別進(jìn)行了串并行的時間測試,實驗性能對比結(jié)果如表1 所示。從表1可看出,算法由單線程改為不同數(shù)量的多線程并行執(zhí)行時,加速比隨著節(jié)點數(shù)的增加而上升。隨著節(jié)點數(shù)的增加,并行加速比增加趨于緩慢,并行計算效率下降。這主要是由于隨著節(jié)點數(shù)量增加,節(jié)點間通信開銷變大,工作機(jī)之間可能出現(xiàn)負(fù)載不平衡等因素引起的。
    本文搭建了MATLAB并行計算集群,詳細(xì)介紹了安裝步驟和編譯環(huán)境的配置。根據(jù)滑動鄰域原理設(shè)計了前視聲納圖像對比度增強(qiáng)的并行算法,總體達(dá)到了預(yù)期效果。MATLAB提供的分布式數(shù)組機(jī)制縮短了并行程序開發(fā)的周期,為海量數(shù)據(jù)進(jìn)行交互處理提供了可能[4]。本文對MATLAB并行算法做了一些嘗試性工作,獲得了很好的效果,提出的方法對其他MATLAB并行相關(guān)問題的研究有實際的借鑒作用。
參考文獻(xiàn)
[1] 張潔.基于聲納的水下機(jī)器人同時定位與地圖構(gòu)建技術(shù)研究[D].青島:中國海洋大學(xué),2008.
[2] Gao Wenjing, Qian Kemao, Wang Haixia, et al. Parallel computing for fringe pattern processing: a multicore CPU approach in MATLAB environment[J].Optics And Lasers In Engineering,2009,47(11):1286-1292.
[3] 錢巍,呂晶,李晗靜. 一種機(jī)群系統(tǒng)下的并行圖像處理環(huán)境[J].哈爾濱師范大學(xué)學(xué)報(自然科學(xué)版),2005,21(2):61-65.
[4] GORYAWALA M, GUILLEN M R. A comparative study on the performance of the parallel and distributing computing operation in Matlab[C]. Proceedings of 24th IEEE International Conference on Advanced Information Networking and Applications,2010:150-157.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。