摘 要: 分析了MATLAB并行計算工具箱中各部件的關系,在Windows環(huán)境下搭建了并行計算集群;采用滑動鄰域操作對聲納圖像進行了對比度增強處理;重點介紹了MATLAB下的數(shù)據(jù)并行編程,,利用分布式數(shù)組設計了集群環(huán)境下的圖像增強并行算法,。實驗結果表明,MATLAB強大的內部函數(shù)使得并行計算易于實現(xiàn),有效地提高了圖像處理的實時性,。
關鍵詞: 對比度增強,;并行計算工具箱;滑動鄰域,;聲納圖像,;數(shù)據(jù)并行編程;分布式數(shù)組
隨著聲成像技術的發(fā)展,,聲圖像在海洋開發(fā)領域的應用日益廣泛,,利用聲圖像進行目標識別已經(jīng)成為數(shù)字圖像處理領域的一個重要課題。聲納圖像的增強應在保持圖像邊緣的前提下提取特征信息,,增強處理的目的是改善原圖像的“視覺效果”,。智能水下機器人通過對聲納圖像的不斷濾波、平滑和分割等處理,,提取出目標點特征和線特征,,構建基于環(huán)境特征的特征地圖仿真平臺,使用同時定位與地圖創(chuàng)建(SLAM)算法實現(xiàn)機器人的自主定位和導航[1]。隨著聲納圖像尺寸和數(shù)量的不斷增加,,矩陣計算需要消耗更多的時間,,從而很難滿足圖像處理的實時性要求,嚴重影響了機器人導航定位的精度,。而并行處理技術的發(fā)展和多核計算機的普及,,加快了數(shù)據(jù)處理的速度,能有效處理大量數(shù)據(jù),,克服了上述問題,。
并行計算是指將一個應用分解成多個子任務,分配給不同的處理器,,各個處理器之間相互協(xié)同,,并行地執(zhí)行子任務,從而達到加快求解速度[2]或者提高求解應用問題規(guī)模的目的,。基于集群的并行圖像處理系統(tǒng)價格低廉,、性能較高,、可擴展性好,具有廣闊的前景和重要的實用價值,。
1 MATLAB集群的搭建
MATLAB并行計算就是把一個大規(guī)模的工作分解為若干小任務讓不同的計算機去處理,,最后把計算結果回收,,從而提高計算效率。
1.1 PCT和MDCS
在集群中利用MATLAB進行并行計算需要并行計算工具箱PCT (Parallel Computing Toolbox)和MATLAB分布式計算服務器MDCS(MATLAB Distributed Computing Service)兩個必備的產品,。PCT保證用戶利用MATLAB進行應用程序編寫并與MATLAB進行交互,,給用戶提供了一個平臺。PCT支持全部MATLAB的M語言特性,,同時支持大多數(shù)的工具箱語法,。MDCS是在集群環(huán)境中實現(xiàn)并行計算的前提條件,使PCT的應用程序得到擴展,,使其可以運行在任意數(shù)量計算機的任意數(shù)量節(jié)點上,。只要保證MDCS正確安裝,在使用過程中用戶不需要再對MDCS進行任何操作,。這對用戶是透明的,,它可以看作是在后臺為機群中的PC提供一種連接通信支持。
1.2 MATLAB并行集群的搭建和配置
一個簡單的MATLAB集群模型如圖1所示,,集群中所有PC存在于一個局域網(wǎng)中,。
圖1中,每個方框代表一臺PC,,節(jié)點機1作為客戶機負責把一個大的工作分解成若干小任務分配給節(jié)點機2,、3、4來處理,。Schedule和Job Manager起著資源調度和管理作用,,可以指定集群中的任意一臺PC來完成這個角色。
License Manager是一個許可管理服務[3],,裝有License Manager的PC為頭節(jié)點機(即Client),,機群中其他利用License Manager生產的License許可的PC為Worker節(jié)點機。MATLAB的安裝分為頭節(jié)點的安裝和Worker節(jié)點的安裝,,為保證配置的穩(wěn)定性,,所有節(jié)點都安裝MATLAB(R2010b)。各個Worker節(jié)點激活時需選擇頭節(jié)點機生成的license.dat許可文件,,該文件位于頭節(jié)點機MATLAB安裝路徑的etc文件中,。
2 滑動鄰域操作
鄰域運算是一種重要的空間域圖像增強方法?;瑒余徲虿僮髅看翁幚硪粋€像素,,輸出圖像中任何給定像素的值,都通過給輸入圖像中對應像素鄰域內像素值應用一個算法來確定,。鄰域是一個矩形塊,,當圖像矩陣中從一個元素向下一個元素移動時,鄰域塊向相同方向滑動,。采用滑動鄰域操作來增強灰度圖像的對比度,,即輸入圖像將以像素為單位進行處理, 鄰域塊空白的地方補0,對輸入圖形的每一個像素, 指定的滑動鄰域操作將決定輸出圖像相應的像素值,。
本文使用雙頻數(shù)字機械掃描式前視聲納作為水下探測工具,根據(jù)回波強度的不同生成聲納圖像,。聲納圖像中強度比較大的回波形成圖像的白色區(qū)域,,弱的回波形成圖像的黑色區(qū)域。根據(jù)聲納圖像的特點,,選擇非線性變換來增強灰度圖像的對比度,。MATLAB中nlfilter( )函數(shù)可實現(xiàn)多種滑動鄰域操作,其用法為:
x=nlfilter(x, [3,3], @enhance);
3個輸入?yún)?shù)分別為待處理的圖像,、鄰域大小和一個返回標量的圖像處理函數(shù),,輸出為一幅大小與輸入圖像相同的圖像。輸出圖像中的每個像素的值通過將對應輸入像素的鄰域傳遞給返回標量的那個函數(shù)來進行計算,。
3 并行算法研究
3.1 數(shù)據(jù)并行編程
MATLAB并行編程可分為任務并行和數(shù)據(jù)并行兩種方式,。當有大數(shù)據(jù)量需要同時處理,而單機又無法存儲大數(shù)據(jù)量時,,可考慮使用數(shù)據(jù)并行編程方法,。數(shù)據(jù)并行是將大量的數(shù)據(jù)包分割成小的數(shù)據(jù)片段,再將這些片段分配給計算節(jié)點進行存儲和交互計算,,提高了大數(shù)據(jù)量同時處理的能力,。
使用SPMD(Single Program Multiple Data)結構,可以指定代碼的區(qū)段以在所有參與并行計算的Worker間并行運行,。程序執(zhí)行過程中,,該結構會自動將在其內部使用的數(shù)據(jù)和代碼傳輸給Worker,并在執(zhí)行完畢后將結果返回給MATLAB客戶端會話,。SPMD結構內部可以是分布式數(shù)組,、并行函數(shù)以及消息傳遞函數(shù)。其中,,“Single Program”指的是同一段代碼運行在多個Worker上,,在MATLAB客戶端上運行一段程序,被標志為SPMD的模塊運行在各自的Worker上,。“Multiple Data”是指雖然SPMD語句在所有的Worker上運行相同的代碼,,但每一個Worker可以有獨有的數(shù)據(jù),所以多數(shù)據(jù)集可以在多個Worker上同時被容納,。
3.2 并行算法的執(zhí)行步驟
實驗在客戶機(Client)上定義了作業(yè)管理器(Job Manager)和工作(Job),,通過分布式數(shù)組將Client內部使用的數(shù)據(jù)和代碼傳輸給Worker,程序執(zhí)行的流程圖如圖2所示。讀入原始圖像,,進行灰度處理,,先在Client機上進行串行計算,再判斷是否存在作業(yè)管理器,若沒有則創(chuàng)建,,然后打開MATLAB進程池,利用distributed函數(shù)生成分布式數(shù)組發(fā)送給4個Worker進行各自的滑動鄰域操作,再將處理結果返回到Client中,,合成一幅完整的圖像,。最后Client機串行處理圖像,4個SPMD Worker濾波后的圖像在一幅圖中顯示出來,,以便將處理結果進行比較,。
4 算法的實現(xiàn)及實驗結果
4.1 算法的編譯環(huán)境
實驗中操作系統(tǒng)為Windows 7,集群系統(tǒng)由兩臺計算機通過路由器來構建,可在DOS命令行下打開圖形用戶界面Admin Center 來管理集群機器,。兩臺計算機的CPU配置分別為:Intel Core i3 CPU 2100 3.10 GHz(四核)和Intel Core i5 CPU 2320 3.0 GHz(四核),內存都為4 GB,。
4.2 實驗結果與分析
根據(jù)配置的環(huán)境運行程序,經(jīng)過4個SMPD Worker濾波后的效果如圖3所示,。其中,,3條白線將圖像平均分為4部分,嚴重影響了圖像的完整性,。這是因為在圖像分割的過程中,,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命令重新修改程序后的運行效果如圖4所示。其中,,圖4(a)是經(jīng)Client主機串行濾波后的圖像,,右圖是改進算法后4個SMPD Worker濾波后的圖像。圖4(b)可見,,并行圖像增強算法和串行算法處理效果一樣,,但前者在處理大量數(shù)據(jù)時具有明顯的優(yōu)勢。
為了檢測并行優(yōu)化效果,,分別進行了串并行的時間測試,,實驗性能對比結果如表1 所示。從表1可看出,,算法由單線程改為不同數(shù)量的多線程并行執(zhí)行時,加速比隨著節(jié)點數(shù)的增加而上升,。隨著節(jié)點數(shù)的增加,并行加速比增加趨于緩慢,并行計算效率下降。這主要是由于隨著節(jié)點數(shù)量增加,,節(jié)點間通信開銷變大,工作機之間可能出現(xiàn)負載不平衡等因素引起的,。
本文搭建了MATLAB并行計算集群,詳細介紹了安裝步驟和編譯環(huán)境的配置,。根據(jù)滑動鄰域原理設計了前視聲納圖像對比度增強的并行算法,,總體達到了預期效果。MATLAB提供的分布式數(shù)組機制縮短了并行程序開發(fā)的周期,,為海量數(shù)據(jù)進行交互處理提供了可能[4],。本文對MATLAB并行算法做了一些嘗試性工作,獲得了很好的效果,,提出的方法對其他MATLAB并行相關問題的研究有實際的借鑒作用,。
參考文獻
[1] 張潔.基于聲納的水下機器人同時定位與地圖構建技術研究[D].青島:中國海洋大學,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] 錢巍,,呂晶,,李晗靜. 一種機群系統(tǒng)下的并行圖像處理環(huán)境[J].哈爾濱師范大學學報(自然科學版),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.