[原]Hadoop海量视频、图像分析分布式处理总结
在刚刚入手视频图像分析时,有点不知所措,后来经过查找了很多资料。本篇文章主要叙述图像的分析处理,至于视频,实际上视频本身就是一个大文件,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
笔者最终将其两者合二为一了,待整理后附上链接。
[原]Hadoop海量视频、图像分析分布式处理总结的更多相关文章
- Hadoop概念学习系列之分布式文件系统(三十)
===============> 数据量越来越多,在一个操作系统管辖的范围存下不了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就 ...
- hadoop 基础视频1
hadoop 基础视频1 一, 大致内容: 1, 源起与体系结构2,实施Hadoop 集群3,分布式HDFS, 大数据存储实战4,Map-Reduce 体系架构5,Map-Reduce 数据分析之一 ...
- 基于Ubuntu16搭建Hadoop大数据完全分布式环境
[目的]:学习大数据 在此记录搭建大数据的过程. [系统环境] 宿主机操作系统:Win7 64位 虚拟机软件:Vmware workstation 12 虚拟机:Ubuntu 16 64位桌面版 [步 ...
- Hadoop学习笔记(3)——分布式环境搭建
Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...
- Hadoop 2.6.0分布式部署參考手冊
Hadoop 2.6.0分布式部署參考手冊 关于本參考手冊的word文档.能够到例如以下地址下载:http://download.csdn.net/detail/u012875880/8291493 ...
- Hadoop单机和伪分布式安装
本教程为单机版+伪分布式的Hadoop,安装过程写的有些简单,只作为笔记方便自己研究Hadoop用. 环境 操作系统 Centos 6.5_64bit 本机名称 hadoop001 本机IP ...
- 3-3 Hadoop集群完全分布式配置部署
Hadoop集群完全分布式配置部署 下面的部署步骤,除非说明是在哪个服务器上操作,否则默认为在所有服务器上都要操作.为了方便,使用root用户. 1.准备工作 1.1 centOS6服务器3台 手动指 ...
- Hadoop生态圈-zookeeper完全分布式部署
Hadoop生态圈-zookeeper完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客部署是建立在Hadoop高可用基础之上的,关于Hadoop高可用部署请参 ...
- ubantu18.04下Hadoop安装与伪分布式配置
1 下载 下载地址:http://mirror.bit.edu.cn/apache/hadoop/common/stable2/ 2 解压 将文件解压到 /usr/local/hadoop cd ~ ...
随机推荐
- Java基础知识强化之集合框架笔记48:产生10个1~20之间的随机数(要求:随机数不能重复) 简洁版
1. 编写一个程序,获取10个1至20的随机数,要求随机数不能重复. 分析: A: 创建随机数对象 B: 创建一个HashSet集合 C: 判断集合的长度是不是小于10 是:就创建一个随机 ...
- Linux Bash算数运算方法小结
A= B= 方法1:let(中间无空格) let C=$A+$B 方法2:$[ ] C=$[$A+$B] 方法3:$(()) C=$(($A+$B)) 方法4:expr(中间有空格) C=`expr ...
- Spring中事务的5种属性总结
Sping的事务 和 数据库的事务是不同的概念,数据库的事务一般称为底层事务 Spring的事务是对这种事务的抽象 我称之为逻辑事务 Spring对事务的功能进行了扩展,除了基本的Isolation之 ...
- ASP.Net免费发送短信-阿里大鱼短信接口
有点短信余额 不用白不用 3月1号就过期了 情人节做了个免费发短信的 http://love.issuc.com/ 固定短信模板 [活动验证]您正在参加XXX的OOO活动,请确认系本人申请.需要的可以 ...
- 错误:Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005 拒绝访问。
最近,把一个网站部署到另一个服务器上,网站中一个功能word转pdf报下面错误: 在此附上解决方案: 方法1:配置Web.Config文件,在每次请求时模拟本地系统的账户. 具体操作:在Web.Con ...
- struts2 标签的使用之一 s:if(遍历中s:if如何用等)
http://blog.csdn.net/chinajust/article/details/3922718
- SVM(支持向量机)算法
第一步.初步了解SVM 1.0.什么是支持向量机SVM 要明白什么是SVM,便得从分类说起. 分类作为数据挖掘领域中一项非常重要的任务,它的目的是学会一个分类函数或分类模型(或者叫做分类器),而支持向 ...
- Android中为APP创建快捷方式的原理(自己的理解)
我们首先来看Android中为APP创建快捷方式的原理: 从图上可以看出,Android大致分7步完成快捷方式的创建: 第一步:Android系统的launcher程序会调用它的pickShortcu ...
- Hadoop学习第一天
1.hadoop量大,数目多. 存储:分布式,集群的概念,管理(主节点.从节点),HDFS. 分析:分布式.并行.离线计算框架,管理(主节点.从节点),MapReduce. 来源:GFS->HD ...
- html5新增操作类名方式 classList
如果一个元素有多个类名,要如何删除呢,jqeury提供了removeClass()这个api,如果不用插件,自己封装,可以这样 function removeClass(elm,removeClass ...