趙進(jìn)超,朱顥東,申 圳,李紅嬋
(鄭州輕工業(yè)學(xué)院 計(jì)算機(jī)與通信工程學(xué)院,河南 鄭州450002)
基于人類對(duì)紋理視覺感知的心理學(xué)研究,Tamura 等[1]提出了一種新的紋理特征表達(dá)方法.該方法包含6 個(gè)分量,分別與心理學(xué)上對(duì)紋理特征定義的6 種屬性相對(duì)應(yīng),它們依次是粗糙度(Coarseness)、對(duì)比度(Contrast)、方向度(Directionality)、線像度(Linelikeness)、規(guī)整度(Regularity)和粗略度(Roughness). 這些特征中最重要的是粗糙度(Coarseness)、對(duì)比度(Contrast)、方向度(Directionality).圖像分辨率越高,圖像細(xì)節(jié)部分的信息就會(huì)得到更好的體現(xiàn),我們就能得到更好的紋理特征,但是隨之而來的是計(jì)算量和計(jì)算時(shí)間的增加.為了縮短紋理特征提取時(shí)間,筆者擬將Tamura 算法和Hadoop 相結(jié)合,提出一種基于云計(jì)算Hadoop 的Tamura 算法,以實(shí)現(xiàn)紋理特征快速提?。?/p>
Hadoop[2]是一個(gè)并行計(jì)算平臺(tái),在與圖像相關(guān)的領(lǐng)域有廣泛應(yīng)用. 例如朱義明[3]在Hadoop上實(shí)現(xiàn)的圖像分類系統(tǒng);張良將等[4]在Hadoop平臺(tái)下實(shí)現(xiàn)的canny 邊緣檢測、尺寸調(diào)整運(yùn)算;陳廣釗[5]以Hadoop 為基礎(chǔ)開發(fā)出海量圖像檢索平臺(tái);李倩等[6]根據(jù)Hadoop 平臺(tái)對(duì)內(nèi)部數(shù)據(jù)類型的設(shè)計(jì)要求,實(shí)現(xiàn)了一種功能可擴(kuò)展的支持圖像文件的Hadoop 數(shù)據(jù)類型;Ranajoy Malakar 等[7]將NVIDIA 開發(fā)的CUDA 技術(shù)與Hadoop 相結(jié)合實(shí)現(xiàn)了一個(gè)高性能圖像處理系統(tǒng);Liu 等[8]實(shí)現(xiàn)了一個(gè)基于HBase 和Hadoop 的海量圖像管理系統(tǒng).
MapReduce[9]是谷歌開發(fā)的并行數(shù)據(jù)處理框架,該框架具備高可靠性和良好的容錯(cuò)能力,基于它編寫的Hadoop 程序可以在由數(shù)千臺(tái)計(jì)算機(jī)構(gòu)成的大型集群上安全高效的運(yùn)行,對(duì)海量數(shù)據(jù)進(jìn)行并行處理.Hadoop 能夠?qū)崿F(xiàn)對(duì)多種類型文件的處理,比如文本、圖像、視頻等.我們可以以特定需求為依據(jù)來編寫特定的應(yīng)用程序完成任務(wù)目標(biāo).下面以Hadoop 自帶的WordCount 程序?yàn)槔齺碚f明MapReduce 執(zhí)行流程,如圖1 所示.
首先,由TextInputFormat 把目標(biāo)文件分割為邏輯上的split,每個(gè)split 會(huì)被應(yīng)用到一個(gè)單獨(dú)的Mapper 上;同時(shí)提供RecorderReader 的實(shí)現(xiàn),用來對(duì)邏輯分片中的數(shù)據(jù)進(jìn)行處理并形成鍵值對(duì)<key,value >,作為Mapper 任務(wù)的輸入.
其次,Map 接收RecorderReader 形成的<key,value >對(duì),根據(jù)程序設(shè)定的處理邏輯對(duì)數(shù)據(jù)進(jìn)行處理,生成新的<key,value >對(duì). 獲得map計(jì)算所得的<key,value >對(duì)后,Mapper 會(huì)以key值大小為基礎(chǔ),按照字典排序的方法對(duì)上述<key,value >對(duì)進(jìn)行排序,并執(zhí)行Combine 過程,將key 值相同的value 值累加,從而得到Mapper的最終輸出結(jié)果Intermediate Files.
最后,Reducer 會(huì)先將接收到的Intermediate Files 進(jìn)行排序,再交由用戶自定義的reduce 方法進(jìn)行處理,得到新的<key,value >對(duì),并作為程序的處理結(jié)果,按照程序設(shè)計(jì)者設(shè)定的輸出格式,由RecordWriter 寫入指定位置.
圖1 MapReduce 執(zhí)行流程圖Fig.1 MapReduce Execution Process
Hadoop 是一個(gè)能夠讓用戶輕松構(gòu)建和運(yùn)行的開源并行云計(jì)算平臺(tái),用戶可以在Hadoop 上實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的高效處理,其中,Hadoop 分布式文件系統(tǒng)(HDFS)[3]扮演了非?;A(chǔ)的作用,它以文件系統(tǒng)的形式為應(yīng)用提供海量數(shù)據(jù)存儲(chǔ)服務(wù).HDFS 具備現(xiàn)有的分布式文件系統(tǒng)的很多共同點(diǎn),例如高可用性、高安全性和負(fù)載均衡等,但是它也存在一些新的特點(diǎn),例如支持超大文件、流式數(shù)據(jù)訪問等. 因此,HDFS 在高并發(fā)、高吞吐量的環(huán)境下得到了廣泛的應(yīng)用.
HDFS 的架構(gòu)如圖2 所示,整體上是以Master/Slave 架構(gòu)為主,主要包括包括4 個(gè)功能模塊:Client,NameNode,Secondary NameNode 和DataNode.
(1)Client:用戶與NameNode、DataNode 進(jìn)行信息交換,實(shí)現(xiàn)對(duì)HDFS 中文件的存?。?/p>
(2)NameNode:HDFS 文件系統(tǒng)的控制核心,負(fù)責(zé)對(duì)系統(tǒng)中文件目錄信息、元數(shù)據(jù)信息等進(jìn)行管理維護(hù),隨時(shí)監(jiān)控各個(gè)DataNode 的健康狀態(tài).
土墻日光溫室主要是指以板打墻和機(jī)械碾壓土墻為溫室墻體的日光溫室,我省目前數(shù)量為13萬棟以上,其中,機(jī)械碾壓土墻是現(xiàn)存量最大的日光溫室類型,占土墻溫室90%以上,占全省日光溫室數(shù)量總量的55%以上,主要分布在湟水谷地的大通、湟中、湟源、互助、樂都、平安、民和等縣,其次是黃河谷地貴德、共和、尖扎、同仁縣。土墻日光溫室(本文主要指機(jī)械碾壓土墻溫室)的好壞直接關(guān)系到冬季蔬菜生產(chǎn)狀況,維護(hù)保養(yǎng)和升級(jí)改造土墻日光溫室對(duì)高效利用該蔬菜生產(chǎn)設(shè)施具有重要作用。
(3)Secondary NameNode:定期合并fsimage和edits 日志,并傳輸給NameNode.
(4)DataNode:每個(gè)節(jié)點(diǎn)配置一個(gè)DataNode,數(shù)據(jù)以若干個(gè)大小固定的block 塊的形式在其上存儲(chǔ),在規(guī)定時(shí)間內(nèi)與NameNode 進(jìn)行通信,匯報(bào)本節(jié)點(diǎn)內(nèi)的空間利用和數(shù)據(jù)存儲(chǔ)情況.
圖2 HDFS 架構(gòu)圖Fig.2 HDFS Framework
粗糙度[1]是紋理最基本的特征之一,是反映紋理中顆粒度一個(gè)量.當(dāng)窗口大小不同時(shí),具有較大窗口的紋理模式讓人覺得更為粗糙. 粗糙度的具體計(jì)算步驟如下:
首先,設(shè)定窗口大小為2k×2k,用公式(1)計(jì)算目標(biāo)圖像中窗口范圍內(nèi)像素的平均灰度值.
其中,k = 0,1,…,5;f(i,j)是坐標(biāo)(i,j)處像素的灰度值.
其次,分別計(jì)算當(dāng)前位置像素在水平和垂直方向上互不相交的窗口之間的平均灰度差值,如公式(2)所示.
Ek,h(x,y)=| Ak(x +2k-1,y)- Ak(x -2k-1,y)|;Ek,v(x,y)=| Ak(x,y +2k-1)-Ak(x,y -2k-1)|. (2)
最佳尺寸計(jì)算公式為Sbest(i,j)= 2k,若當(dāng)前k 值可以使差值E 達(dá)到最大,即為最佳尺寸.
其中m 和n 分別為圖像的長和寬.
對(duì)比度[1]是對(duì)目標(biāo)圖像的灰度值分布進(jìn)行統(tǒng)計(jì)得到的.一般情況下,可以通過α4= μ4/σ4來定義.對(duì)比度是通過公式(4)衡量的.
式中:μ4是四次矩;σ2是方差.Fcon給出整個(gè)圖像或區(qū)域內(nèi)對(duì)比度全局度量.
由于不同的紋理圖像具有不同的方向性,因此Tamura 用方向度[1]來描述紋理在某些方向上發(fā)散或者集中.首先,計(jì)算當(dāng)前像素位置的梯度向量.該向量的模和方向定義如公式(5)所示.
| ΔG| = (| ΔH| +| ΔV|)/2;
θ = tan-1(ΔV/ΔH)+ π/2. (5)
其中ΔH和ΔV是使用圖3 所示兩個(gè)3 ×3 算子與圖像做卷積得到的.
圖3 3 ×3 算子示意圖Fig.3 3 ×3Schematic diagram of operator
其次,利用公式(6)來獲得θ 的直方圖.
式中:n 為方向角度的量化等級(jí);t 為閾值.Nθ(k)是當(dāng)| ΔG |≥t,(2k - 1)π/2n ≤θ ≤(2k +1)π/2n 時(shí)像素的數(shù)量.若當(dāng)前圖像的方向性并不突出,則直方圖HD比較平緩,反之會(huì)出現(xiàn)較為明顯的峰值.
最后,使用公式(7)來計(jì)算方向度.
式中:np是對(duì)直方圖HD中峰值數(shù)量的統(tǒng)計(jì)值;p為直方圖HD中的峰值,對(duì)于任意一個(gè)峰值p,wp為圖像中達(dá)到該峰值的所有區(qū)域;φp是wp中最大直方圖值中的波峰中心位置.
筆者把一個(gè)圖像文件作為一個(gè)split,把整個(gè)圖像集合視為一個(gè)作業(yè)進(jìn)行處理,每個(gè)Map 任務(wù)對(duì)應(yīng)一個(gè)圖像文件,進(jìn)而可以同時(shí)提取集合內(nèi)圖像的紋理特征.還使用單獨(dú)一個(gè)Reduce 任務(wù)將計(jì)算結(jié)果按照設(shè)定格式寫入到指定輸出位置. 為了實(shí)現(xiàn)上述功能,首先,需要實(shí)現(xiàn)一個(gè)新的數(shù)據(jù)類型Image,用來存儲(chǔ)圖像像素信息;其次,與文件輸入相關(guān)的InputFormat 和RecordReader 也需要重定義,用于圖像文件和特定數(shù)據(jù)類型之間的轉(zhuǎn)化;最后,在Map 處理階段實(shí)現(xiàn)圖像紋理特征提?。?/p>
Hadoop 本身沒有定義和圖像相關(guān)的類作為Key 和Value 的備選類型.Hadoop 規(guī)定,用戶自定義的類型只有通過實(shí)現(xiàn)Writable 接口才能使用.為解決上述問題,筆者自定義了數(shù)據(jù)類型Image,該數(shù)據(jù)類型是以Bufferimage 為基礎(chǔ)進(jìn)行擴(kuò)展,對(duì)Hadoop 中Writable 所定義的用于輸入輸出的基本方法進(jìn)行了重寫.與其他類型相比,該類型在實(shí)現(xiàn)讀取圖像尺寸、圖像路徑等功能的基礎(chǔ)時(shí),又根據(jù)實(shí)際需要增加了相應(yīng)的功能模塊,例如灰度變換、顏色空間變換等功能. 部分?jǐn)U展內(nèi)容如圖4所示.
圖4 Image 類型內(nèi)容縮略圖Fig.4 Image content thumbnail
InputFormat 描述了Hadoop 作業(yè)輸入的細(xì)節(jié)規(guī)范,而FileInputFormat 則是所有以文件作為其數(shù)據(jù)來源的InputFormat 實(shí)現(xiàn)的基礎(chǔ)類型.Hadoop提供的API 實(shí)現(xiàn)了下面兩個(gè)類:
(1)ImageFileInputFormat:繼承自ImageFileInputForma 類的實(shí)現(xiàn),將一個(gè)圖像文件視為一個(gè)split,不再對(duì)圖像進(jìn)行分割.
(2)ImageRecordReader:繼承自RecordReader 類的實(shí)現(xiàn),把輸入分片轉(zhuǎn)化為一個(gè)<key,value>對(duì).
Tamura 對(duì)粗糙度計(jì)算中k 值設(shè)定描述為兩種情況:①k =0,1,2,3:圖像無噪聲,在該范圍內(nèi)Sbest恒定Max,計(jì)算量小;②k =0,1,…,5:圖像存在噪聲,Sbest結(jié)果表現(xiàn)不穩(wěn)定,不僅對(duì)計(jì)算結(jié)果造成影響,而且計(jì)算量與無噪聲情況下相比要大.因此在提取紋理特征前需要對(duì)輸入圖像進(jìn)行預(yù)處理以祛除噪聲,保證結(jié)果質(zhì)量的同時(shí)還可以減少計(jì)算.
本Hadoop 實(shí)驗(yàn)平臺(tái)由5 臺(tái)計(jì)算機(jī)組成,操作系統(tǒng)均為CentOS-6.4 64bit,配置均為八核Intel-Corei7 處理器,4GB 內(nèi)存,1TB 硬盤,Hadoop 版本為1.1.2,Java 版本為1.7.25,每個(gè)節(jié)點(diǎn)通過100 Mb/s 的局域網(wǎng)連接.
為了驗(yàn)證該算法在不同圖像分辨率、不同圖像數(shù)量和不同節(jié)點(diǎn)數(shù)目情況下Hadoop 平臺(tái)的提取效率,筆者選用3 個(gè)數(shù)據(jù)集:Flavia,ICL 和ImageClef,下載網(wǎng)址如表1 所示.從3 個(gè)數(shù)據(jù)集中抽取2 000 張圖片,分100 張、200 張、500 張、1 000張、2 000 張5 組,分別使用3 節(jié)點(diǎn)和4 節(jié)點(diǎn)進(jìn)行紋理特征提取結(jié)果對(duì)比.所用時(shí)間如圖5、圖6 所示,算法加速比如圖7 和圖8 所示.
表1 數(shù)據(jù)集網(wǎng)址Tab.1 Data set website
圖5、圖6 說明隨著圖像數(shù)量的增加,Hadoop平臺(tái)的特征計(jì)算時(shí)間基本呈倍數(shù)級(jí)增長. 原因有如下兩點(diǎn):①Flavia 庫中圖像分辨率均為800 ×600,ImageClef 的為500 ×800 左右,ICL 的為300×400 左右,Tamura 紋理特征中粗糙度的計(jì)算量和圖像分辨率密切相關(guān),因此計(jì)算時(shí)間增長較為明顯;②計(jì)算特征時(shí)采用的是Hadoop 的默認(rèn)調(diào)度策略,并未針對(duì)并行圖像處理的特點(diǎn)對(duì)調(diào)度策略進(jìn)行調(diào)整.
圖5 3 節(jié)點(diǎn)時(shí)Hadoop 平臺(tái)計(jì)算時(shí)間Fig.5 Consumed Time of Hadoop Platform with Three Nodes
圖6 4 節(jié)點(diǎn)時(shí)Hadoop 平臺(tái)計(jì)算時(shí)間Fig.6 Consumed Time of Hadoop Platform with Four Nodes
圖7 3 節(jié)點(diǎn)時(shí)加速比Fig.7 Speedup ratio of hadoop platform with three nodes
將圖5 和圖6 對(duì)比,結(jié)合圖7、圖8 可以看出:在圖像數(shù)量較少和分辨率較低的情況下,不同的節(jié)點(diǎn)數(shù)量對(duì)處理時(shí)間的影響并未呈現(xiàn)出明顯的差異,加速比則表現(xiàn)出一定的差異;隨著圖像數(shù)量的增加和圖像分辨率的提高,不同節(jié)點(diǎn)數(shù)量的處理時(shí)間和加速比的差異尤為明顯. 實(shí)驗(yàn)表明基于Hadoop 平臺(tái)的Tamura 算法可以有效地運(yùn)用于大規(guī)模圖像數(shù)據(jù)集的特征提?。?/p>
圖8 4 節(jié)點(diǎn)時(shí)加速比Fig.8 Speedup ratio of hadoop platform with four nodes
筆者主要基于Hadoop 平臺(tái),利用Tamura 算法實(shí)現(xiàn)圖像紋理特征的快速提取,針對(duì)Hadoop 平臺(tái)無法直接讀取圖像文件的實(shí)際情況,設(shè)計(jì)實(shí)現(xiàn)了一種新的輸入格式ImageInputFormat 和數(shù)據(jù)類型Image 來滿足圖像輸入、數(shù)據(jù)處理的需要.該方法充分發(fā)揮了Hadoop 平臺(tái)對(duì)大數(shù)據(jù)并行處理的能力,在保證數(shù)據(jù)精度的同時(shí)也縮短了計(jì)算時(shí)間,對(duì)比實(shí)驗(yàn)表明了該方法的有效性.然而,在實(shí)驗(yàn)過程中,由于Hadoop 的Block 塊大小為64 MB,而實(shí)驗(yàn)所用圖像大小不超過1 MB,浪費(fèi)了大量的存儲(chǔ)空間.同時(shí),受限于Hadoop 平臺(tái)的調(diào)度策略,使得算法的時(shí)效性受到影響.如何提高系統(tǒng)在存儲(chǔ)大量小尺寸文件時(shí)的存儲(chǔ)空間利用率,設(shè)計(jì)出更好的調(diào)度策略,是筆者下一步的研究重點(diǎn).
[1] TAMURA H,MORI S,YAMAWAKI T. Textural features corresponding to visual perception [J]. IEEE Transactions on Systems,Man and Cybernetics,1978,8(6):460 -473.
[2] ARMBRUST M,F(xiàn)OX A,GRIFFITH R,etal. A view of cloud computing[J]. Communications of the ACM,2010,53(4):50 -58.
[3] 朱義明.基于Hadoop 平臺(tái)的圖像分類[J]. 西南科技大學(xué)學(xué)報(bào),2011,26(2):70 -73.
[4] 張良將,宦飛,王楊德.Hadoop 云平臺(tái)下的并行化圖像處理實(shí)現(xiàn)[J]. 信息安全與通信保密,2012,20(10):59 -62.
[5] 陳廣釗. 基于MapReduce 的海量圖像檢索技術(shù)研究[D]. 西安:西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,2012.
[6] 李倩,施霞萍.基于Hadoop MapReduce 圖像處理的數(shù)據(jù)類型設(shè)計(jì)[J]. 軟件導(dǎo)刊,2012,11(4):182-183.
[7] MALAKAR R,VYDYANATHAN N. A CUDA-enabled hadoop cluster for fast distributed image processing[C]//Proceedings of the 2013 National Conference on Parallel Computing Technologies. Bangalore,India:IEEE,2013:1 -5.
[8] LIU Yue-hu,CHEN Bin,HE Wen-xi,et al. Massive image data management using hBase and mapreduce[C]//Proceedings of the 2013 21st International Conference on Geoinformat ics. Kaifeng,China:IEEE,2013:1 -5.
[9] MARSTON S,LI Zhi,SUBHAJYOTI B,et al. Cloud computing the business perspective[J]. Decision Support Systems,2011,51(1):176 -189.