Hadoop海量视频、图像分析分布式处理总结
2015-09-24 13:02
288 查看
在刚刚入手视频图像分析时,有点不知所措,后来经过查找了很多资料。本篇文章主要叙述图像的分析处理,至于视频,实际上视频本身就是一个大文件,hadoop对于大文件处理是高效的,所以在MapReduce的处理上需要使用ffmepg将视频切割为图像后再将图像转换为javacv可识别的流数据即可。在其他的环节处理视频和图像总体来说都是一样的。
有关图像分析的处理总结如下:
1、视频与图像文件在HDFS的存储,若文件较小需要做合并处理,或采用HBASE存储图像,mapreduce通过HBase生成的HFile进行分布式处理。
2、自定义实现Hadoop文件合并及文件切割的FileInputFormat的实现。
3、实现图像切割后的图像比特流转换为Javacv能够识别的图像对象。
4、提供opencv支持的图像分析开发环境与算法。
方案1:
视频与图像文件需要存储在HDFS文件系统上,由于Hadoop的分布式计算只适合处理大文件数据,故需要将来源的图像进行合并处理,并存储到HDFS上再进行MapReduce处理。 使用Hipi框架实现图像的合并处理,生成HIB文件。
方案2(待研究):
将图像直接存入HBase中,MapReduce直接操纵HBase的数据进行处理。
Hadoop在分布式计算时默认为TextInputFormat文本式的切割算法做MapReduce的默认运算,HIB文件需要对其进行文件切割后放入MapReduce做运算。
HIB文件切割后的图像格式需要转换为JavaCV可处理的流式数据,保证JavaCV能够顺利的处理各类的图像算法,如:直方图、二值化等。
由于Hadoop是用Java语言编写的,所以在处理方面使用Java有先天的优势,而JavaCV又封装了OpenCV、libdc1394、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
笔者最终将其两者合二为一了,待整理后附上链接。
在刚刚入手视频图像分析时,有点不知所措,后来经过查找了很多资料。本篇文章主要叙述图像的分析处理,至于视频,实际上视频本身就是一个大文件,hadoop对于大文件处理是高效的,所以在MapReduce的处理上需要使用ffmepg将视频切割为图像后再将图像转换为javacv可识别的流数据即可。在其他的环节处理视频和图像总体来说都是一样的。
有关图像分析的处理总结如下:
1、视频与图像文件在HDFS的存储,若文件较小需要做合并处理,或采用HBASE存储图像,mapreduce通过HBase生成的HFile进行分布式处理。
2、自定义实现Hadoop文件合并及文件切割的FileInputFormat的实现。
3、实现图像切割后的图像比特流转换为Javacv能够识别的图像对象。
4、提供opencv支持的图像分析开发环境与算法。
使用技术 | 框架说明 |
HDFS | 图像存储在HDFS中 |
MapReduce | Mapreduce实现分布式处理或使用MapReduce操作HBase数据库 |
HBase | 部分图片可存放在HBASE中或将计算结果存放于HBase、HIVE、MYSQL中 |
Hipi | 用于合并小的图像文件,及切割算法。 |
JavaCV | 封装了OpenCV、libdc1394、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、libdc1394、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
笔者最终将其两者合二为一了,待整理后附上链接。
相关文章推荐
- Linux 中,如何显示 (gcc)make时实际执行命令
- Linux Shell 通配符、元字符、转义符使用实例介绍
- gcc和arm-linux-gcc 头文件寻找路径
- Docker mysql 把数据存储在本地目录
- CentOS 7 之 hostapd 路由模式配置
- tomcat mamcached session共享方法
- 便宜vps多是哪些技术架构方式(VPS分割架构是怎么超售的)
- openSUSE系统下VirtualBox无法挂载主机USB设备问题的解决
- 硬盘大于2T以上,用parted创建分区安装centos6.5
- 查找当前目录下包含特定字符串的特殊后缀名的文件
- Topcoder SRM 662 DIV1
- Jcrop使用心得
- dockerfile 多端口映射 expose
- LoadRunner监控Tomcat
- 简单讲解Linux的文件系统及相关的挂载命令
- ubuntu添加用户未指定shell,ll别名等无法是使用
- Openstack节点网卡连Cisco交换机出现环路的处理
- 学习日志---初次接触mapreduce
- linux 测试端口是否可通
- openwrt默认不开启wifi