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