[原]Hadoop海量視頻、圖像分析分佈式處理總結

      在剛剛入手視頻圖像分析時,有點不知所措,後來通過查找了不少資料。本篇文章主要敘述圖像的分析處理,至於視頻,實際上視頻自己就是一個大文件,hadoop對於大文件處理是高效的,因此在MapReduce的處理上須要使用ffmepg將視頻切割爲圖像後再將圖像轉換爲javacv可識別的流數據便可。在其餘的環節處理視頻和圖像整體來講都是同樣的。html

有關圖像分析的處理總結以下:java

一、視頻與圖像文件在HDFS的存儲,若文件較小須要作合併處理,或採用HBASE存儲圖像,mapreduce經過HBase生成的HFile進行分佈式處理。算法

二、自定義實現Hadoop文件合併及文件切割的FileInputFormat的實現。數據庫

三、實現圖像切割後的圖像比特流轉換爲Javacv可以識別的圖像對象。編程

四、提供opencv支持的圖像分析開發環境與算法。框架

使用技術分佈式

框架說明ide

HDFSoop

圖像存儲在HDFS中post

MapReduce

Mapreduce實現分佈式處理或使用MapReduce操做HBase數據庫

HBase

部分圖片可存放在HBASE中或將計算結果存放於HBase、HIVE、MYSQL中

Hipi

用於合併小的圖像文件,及切割算法。

JavaCV

封裝了OpenCV、libdc139四、OpenKinect、videoInput和ARToolKitPlus等計算機視覺編程人員經常使用庫的接口

1.1 圖片合併並存儲

方案1:        

視頻與圖像文件須要存儲在HDFS文件系統上,因爲Hadoop的分佈式計算只適合處理大文件數據,故須要未來源的圖像進行合併處理,並存儲到HDFS上再進行MapReduce處理。 使用Hipi框架實現圖像的合併處理,生成HIB文件。

方案2(待研究):

將圖像直接存入HBase中,MapReduce直接操縱HBase的數據進行處理。

1.2 自定義文件切割算法

Hadoop在分佈式計算時默認爲TextInputFormat文本式的切割算法作MapReduce的默認運算,HIB文件須要對其進行文件切割後放入MapReduce作運算。

1.3 圖像格式轉換

HIB文件切割後的圖像格式須要轉換爲JavaCV可處理的流式數據,保證JavaCV可以順利的處理各種的圖像算法,如:直方圖、二值化等。

1.4  JavaCV開發框架

因爲Hadoop是用Java語言編寫的,因此在處理方面使用Java有先天的優點,而JavaCV又封裝了OpenCV、libdc139四、OpenKinect、videoInput和ARToolKitPlus等計算機視覺編程人員經常使用庫的接口。因此須要搭建一套JavaCV的開發框架,以便於後續開發圖像分析的各類業務場景。

 

參考文獻:

HIPI (hadoop image processing interface) 
http://abacusliu.weebly.com/1/post/2012/10/abouthipihadoopimageprocessinginterface.html

來看一下這一篇文章吧(合併小文件),這個國外一個牛人團隊開發的Hipi框架,主要是功能是將給定的一個URL列表下載併合併爲做者本身定義的HIB文件,MapReudce程序分解該文件並實現分佈式處理。但HIPI只爲咱們提供了JAVA方式的圖像處理。

使用JavaCV處理人臉識別、二值化、灰度等圖像處理算法的例子。

https://code.google.com/p/hadoop-computer-vision/source/checkout

筆者最終將其二者合二爲一了,待整理後附上連接。

相關文章
相關標籤/搜索