• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Hadoop+OpenCV的集群化圖像處理開發(fā)環(huán)境建設(shè)與測試研究

      2016-03-22 14:15:04李瑤羅福強范展源
      電腦知識與技術(shù) 2016年1期
      關(guān)鍵詞:圖像處理

      李瑤++羅福強++范展源

      摘要:隨著大數(shù)據(jù)時代的來臨,傳統(tǒng)的單機圖像處理遭遇瓶頸。為了適應(yīng)圖像處理數(shù)據(jù)量大、復(fù)雜度高等特點,集群化處理是一個較好的解決方案。該文主要介紹基于Hadoop+OpenCV的集群化圖像處理平臺的搭建,描述如何將Hadoop與OpenCV結(jié)合進行圖像處理,編寫測試程序驗證平臺的可用性。實驗結(jié)果表明此平臺能實現(xiàn)集群化的圖像處理。

      關(guān)鍵詞:Hadoop;OpenCV;集群化;圖像處理;環(huán)境搭建

      中圖分類號:TP18 文獻標志碼:A 文章編號:1009-3044(2016)01-0203-03

      Research on the Construction and Testing of the Cluster Image Processing Development Environment for Hadoop+OpenCV

      LI Yao, LUO Fu-qiang, FAN Zhan-yuan

      (Jincheng College of Sichuan University, Chengdu 611731, China)

      Abstract: With the advent of the era of big data, the traditional stand-alone image processing encountered bottlenecks. To accommodate the image processing of a large amount of data , high complexity and other characteristics, the clustering process is a better solution. This paper mainly introduces the construction of the cluster image processing platform based on Hadoop+OpenCV, describes how to combine Hadoop and OpenCV to image processing, and writes test program to verify the usability of the platform. The experimental results show that this platform can realize clustering image processing.

      Key words: Hadoop; OpenCV; clustering; image processing; environment construction

      隨著科技的發(fā)展,各個領(lǐng)域?qū)D像處理要求越來越高,算法也越來越復(fù)雜,處理時間也會延長。在大數(shù)據(jù)時代,圖片數(shù)量不可計數(shù),想在較短時間內(nèi)處理完相應(yīng)數(shù)量的圖片則需要使用大數(shù)據(jù)技術(shù)。本文則利用Hadoop與OpenCV搭建集群化的圖像處理平臺,使圖像的處理速度得到大幅度的提升。

      1 相關(guān)技術(shù)

      本文結(jié)合OpenCV與Hadoop在Linux系統(tǒng)下進行集群化圖像處理平臺的建設(shè)與測試研究。

      1.1 OpenCV

      OpenCV[1]是一種基于BSD許可證授權(quán)(開源)發(fā)行的跨平臺計算機視覺庫,它由一系列C函數(shù)和C++類構(gòu)成,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。

      作為開源軟件,OpenCV的優(yōu)勢就在于它有400多個免費的圖像處理函數(shù),而且涉及面很廣,覆蓋了機器視覺的大多應(yīng)用領(lǐng)域。它的許多算法,也做了很好的優(yōu)化,對其執(zhí)行速度帶來了可觀的提升。

      1.2 Hadoop

      Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細節(jié)的情況下,充分利用集群進行高速運算和存儲,開發(fā)分布式程序。

      Hadoop框架[2]最核心的設(shè)計就是:HDFS和MapReduce。HDFS提供存儲,MapReduce提供計算。

      Hadoop設(shè)計之初的目標就定位于高可靠性、高可拓展性和高效性,正是這些設(shè)計上的優(yōu)點,使得Hadoop一出現(xiàn)就受到眾多大公司的青睞,同時也引起了研究界的普遍關(guān)注。

      2 集群化圖像處理的必要性

      圖像處理[3]經(jīng)過幾十年的發(fā)展,雖然有很多研究人員都在不停地提高圖像處理算法的效率,但針對當(dāng)代圖像處理數(shù)據(jù)量大、復(fù)雜度高等特點,傳統(tǒng)的單機處理已達到瓶頸,特別是在Web和搜索引擎的應(yīng)用上猶為明顯。那如何在提高性能的同時,減少時間成本和功耗?并行化圖像處理[4]則是答案。

      海量的圖像都存儲在分布式文件系統(tǒng)中,通過分布式的資源進行并行處理[5],同傳統(tǒng)的單機環(huán)境下相比,能大大提高處理效率。Hadoop是一個非常流行的存儲、處理海量數(shù)據(jù)的平臺。將Hadoop與OpenCV結(jié)合起來,組成一個集群化的并行圖像處理環(huán)境,在時間性能上能夠獲得非常大的提升。

      3 環(huán)境搭建

      本集群環(huán)境由4個節(jié)點組成,其中1個主節(jié)點、3個從節(jié)點。4個節(jié)點均要安裝OpenCV,Hadoop集成環(huán)境。

      3.1 Linux操作系統(tǒng)

      Linux操作系統(tǒng)為Ubuntu14.04 LTS。

      3.2 JDK安裝配置

      JDK為jdk1.8。

      3.3 OpenCV安裝配置

      1)準備工作。

      更新環(huán)境:sudo apt-get update

      sudo apt-get upgrade

      搭建C/C++編譯環(huán)境:sudo apt-get install build-essential

      安裝關(guān)聯(lián)庫:sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

      sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev ant

      2)下載opencv-3.0.0壓縮包。

      3)解壓到指定路徑,進入opencv3文件夾。

      4)新建build文件夾,存放opencv的編譯文件。

      5)配置opencv文件。在build目錄下執(zhí)行以下命令。

      cmake –D CMAKE_BUILD_TYPE=Release –D CMAKE_INSTALL_PREFIX=/usr/local ..

      6)編譯。

      make

      7)安裝opencv庫到系統(tǒng)。

      sudo make install

      安裝過程中未出現(xiàn)錯誤,并在/usr/local/share/OpenCV目錄下出現(xiàn)java目錄則表示opencv安裝成功。

      3.4 Hadoop安裝配置

      1)準備工作

      設(shè)置網(wǎng)卡,修改IP解析文件,安裝配置ssh服務(wù)。

      2)下載hadoop2.7.1壓縮包。

      3)解壓到指定路徑。

      4)配置Hadoop環(huán)境變量。

      5)創(chuàng)建用于存放命名空間以及數(shù)據(jù)信息的文件夾。

      6)在主節(jié)點配置Hadoop。

      7)將主節(jié)點配置完成的hadoop傳送到各從節(jié)點。

      8)在主節(jié)點格式化文件系統(tǒng)。

      9)啟動hadoop集群

      3.5 eclipse安裝配置

      安裝的eclipse為Mars.1版本。

      3.6 eclipse配置Hadoop開發(fā)環(huán)境

      1)下載插件。

      2)將插件放到eclipse/plugins目錄下。

      3)重啟eclipse,打開Windows->Preferences,配置Hadoop安裝路徑。

      4)配置Map/Reduce Locations

      打開Windows->Open Perspective->Other,選擇Map/Reduce->OK。出現(xiàn)Map/Reduce Locations選項卡,點擊右邊小象圖標,打開Hadoop Location配置窗口。其中,Location name為用戶自定義的名字,Map/Reduce Master中的Host和Port對應(yīng)是master和9000。DFS Master對應(yīng)是master和9000。點擊完成后,若左側(cè)的Project Explorer出現(xiàn)如圖1所示內(nèi)容,表明配置成功。

      圖1 配置成功示例

      若HDFS中沒有內(nèi)容,則上圖中hadoop下的文件夾為空。

      4 集群化處理與測試

      4.1 MapReduce與OpenCV的結(jié)合

      OpenCV關(guān)注圖像處理,MapReduce關(guān)注分布式處理,將兩者結(jié)合便是分布式圖像處理。

      MapReduce的分布式處理分為map和reduce方法。

      在map方法中,可以對圖片進行預(yù)處理、灰度、邊緣檢測、特征值提取等一系列操作。每個map可以是一張圖片,在大型的集群上運行時,可以同時處理多張圖片,從而提高處理速度。

      在reduce方法中,可以對map的輸出進行處理,例如特征值匯總、比對、識別,從而實現(xiàn)預(yù)處理、特征值提取、圖像識別的并行處理。

      4.2 測試程序

      1)創(chuàng)建程序

      創(chuàng)建一個Map/Reduce Project,名為Test。

      2)配置OpenCV路徑

      右鍵單擊項目名稱,選擇Properties->Java Build Path->Add Library。

      選擇User Library->Next。選擇User Libraries->New,創(chuàng)建一個新的庫,命名為opencv3.0。點擊Add External JARs,選擇opencv-300.jar。

      選擇Native library location,點擊Edit進行編輯,選擇本地庫目錄:/usr/local/share/OpenCV/java。最后點擊OK,配置完成。

      3)編寫Map類

      創(chuàng)建MyMap.java

      public void map(Text key, BytesWritable value, Context context){

      BufferedImage img = ImageIO.read

      (new ByteArrayInputStream(value.getBytes()));

      Mat m = img2Mat(img);

      imgViewer.show(m,"Loaded image");

      context.write(key, value);

      }

      MyMap類實現(xiàn)讀取已轉(zhuǎn)換為SequenceFile類型的圖片文件,調(diào)用OpenCV類實現(xiàn)圖像顯示,其中img2Mat方法實現(xiàn)將BufferedImage類型轉(zhuǎn)換為Mat矩陣。

      4)編寫Reduce類

      創(chuàng)建MyReduce.java。

      public void reduce(Text key,Iterable values,Context context){

      for(BytesWritable value : values){

      FileOutputStream fos = new

      FileOutputStream("/home/jcxy/2.jpg");

      JPEGImageEncoder je =

      JPEGCodec.createJPEGEncoder(fos);

      je.encode(img);

      context.write(key, value);

      }}}

      MyReduce類主要實現(xiàn)將數(shù)據(jù)流轉(zhuǎn)換成圖片保存到本地,并輸出。

      5)編寫主函數(shù)類

      創(chuàng)建MyTest.java。

      static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}

      public static void main(String[] args) {

      Job job = new Job(conf," ");

      job.setMapperClass(MyMap.class);

      job.setReducerClass(MyReduce.class);

      job.setInputFormatClass(SequenceFileInputFormat.class);

      FileInputFormat.addInputPath(job,path);

      FileOutputFormat.setOutputPath(job, new Path("/result"));

      System.exit(job.waitForCompletion(true)?0:1);

      }}

      主函數(shù)實現(xiàn)Map、Reduce程序的調(diào)用。

      將Test項目打包成Test.jar(打包時選擇Runnable JAR file,否則運行時會找不到路徑),保存到主目錄下,并在命令行中執(zhí)行以下命令運行:

      hadoop jar Test.jar MyTest

      運行結(jié)果如圖2所示。

      圖2 運行效果圖

      本示例主要實現(xiàn)對二進制圖片文件的讀取,轉(zhuǎn)換,顯示,存儲。通過這幾個步驟的實現(xiàn)表明,本環(huán)境能實現(xiàn)在hadoop平臺上使用opencv進行圖像的處理。

      5 結(jié)束語

      為了提高圖像處理的速度,算法精度的提高是必不可少的,但集群化處理,對于大量的圖片來說也是必需的。本文介紹了集群化圖像處理平臺環(huán)境的搭建,經(jīng)過編碼測試,在此大數(shù)據(jù)平臺上可以實現(xiàn)opencv類的調(diào)用進行圖像處理。本文為集群化圖像處理的實現(xiàn)提供了平臺搭建的基礎(chǔ),具有參考價值。

      參考文獻:

      [1] 張林,吳振強.基于OpenCV的圖像特征智能識別系統(tǒng)設(shè)計[J].電子設(shè)計工程, 2015, 23(20): 189-192.

      [2] 霍樹民.基于Hadoop的海量影像數(shù)據(jù)管理關(guān)鍵技術(shù)研究[D].長沙: 國防科學(xué)技術(shù)大學(xué), 2010.

      [3] 英英.基于MATLAB的圖形圖像處理系統(tǒng)的實現(xiàn)[D].呼和浩特: 內(nèi)蒙古大學(xué), 2013.

      [4] 寇福東.基于多核DSP的數(shù)字圖像處理并行化方法研究[D].北京: 北京理工大學(xué), 2015.

      [5] 張良將,宦飛,王楊德. Hadoop云平臺下的并行化圖像處理實現(xiàn)[J]. 通信技術(shù), 2012(10): 59-62.

      猜你喜歡
      圖像處理
      機器學(xué)習(xí)在圖像處理中的應(yīng)用
      電子制作(2018年18期)2018-11-14 01:48:20
      模糊圖像處理,刑事偵查利器
      圖像處理技術(shù)的實戰(zhàn)應(yīng)用
      Photo Shop通道在圖像處理中的應(yīng)用
      河南科技(2014年1期)2014-02-27 14:04:06
      岫岩| 凤山县| 天镇县| 宁波市| 蒲城县| 平南县| 吕梁市| 民乐县| 图们市| 石阡县| 迁西县| 封丘县| 久治县| 准格尔旗| 济阳县| 夹江县| 喀喇| 吉安县| 米林县| 固阳县| 永康市| 台前县| 荔浦县| 息烽县| 临沧市| 安宁市| 纳雍县| 会理县| 古蔺县| 桃园市| 皮山县| 长武县| 璧山县| 罗定市| 鹿邑县| 丰宁| 大足县| 湖北省| 呼和浩特市| 内丘县| 阿拉善盟|