首页 > 范文大全 > 正文

Android平台图像处理软件框架的研究与设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇Android平台图像处理软件框架的研究与设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要: android是Google公司在2008年推出的一款手机平台操作系统,对Android操作系统平台的体系架构与开发环境进行研究与分析,并利用Android系统的Camera类及相关接口技术,建立一个具有图像采集、图像显示功能的图像处理框架。

关键词: 移动互联网;Android;操作系统;照相机

中图分类号:TP311.1 文献标识码:A 文章编号:1671-7597(2011)1210092-02

1 课题研究背景

随着Web技术的不断发展,互联网已经不再局限于传统的PC终端。以3G技术为代表的移动互联网技术正在迅速发展。这要求移动终端必须更加智能化、网络化。目前,移动终端平台主要有iPhone OS、Symbian、BlackBerry OS。在2008年,Google公司推出了新的移动终端平台――Android。Android与上述三款系统有很大不同:iPhone OS只为苹果的iPhone所用,并由苹果严格控制;诺基亚、索爱各自运维着与自家硬件紧密结合的Symbian办办,而BlackBerry OS是RIM专用的操作系统。Android则采用了联盟的方式,包括Google、HTC、摩托罗拉、三星、LG、联想、华为等知名企业都加入到了Android的阵营[1]。Android作为一款完全开放的移动操作系统。不仅手机上可以使用这款操作系统,Android同时也支持各种移动设备。Android系统底层采用C语言进行编写,因此具备更好的移植性与兼容性。应用层则采用目前非常流行的JAVA语言进行开发。正是由于Android的开放性与可定制性,因此Android具有很大的市场潜力。

图像识别与处理技术作为人工智能的一个重要领域,通过对复杂图像的识别与处理,可从其中提取出所需要的信息。近几年来,随着移动平台的迅速发展,越来越多的图像识别与处理技术被应用到智能手机、平板电脑上,如诺基亚公司推出的图片浏览器支持脸部识别搜索,多普达公司推出的来电图像识别软件。因此,在Android平台上搭建一个图像处理软件框架具有重要的实际应用意义。

本文通过对Android体系结构的探讨,欲在Android平台上搭建一个可逐帧获取预览图像的软件框架。在未来的研究工作中,将利用该软件框架并借助图像匹配算法最终在Android平台上实现一个手势控制的照相系统。

2 Android系统及其开发环境搭建方法

图1为Android的体系架构,Android操作系统的体系架构分为四层,由下而上依次是Linux内核、类库(包括运行时环境)、应用程序框架和应用程序。

图1

Android操作系统中包含一整套C/C++库,提供给Android系统的各个应用层框架调用并通过应用层框架分发给开发者,包括系统C库、媒体库、界面管理、LibWebCore、SGL、3D库、SQLite。其中,SQLite为编写应用程序提供了数据库接口,使得Android操作系统中的所有应用程序都可以使用该数据库[2]。

Android开发环境的搭建流程是这样的:下载Android SDK、下载安装JDK、下载Eclipse、下载安装ADT。在Android SDK中有一个tools目录,该目录中包含了Android中的常用工具。另外,在platforms目录下针对不同的版本也有一个tools文件夹,该文件夹下面也有一些工具。例如AATP、DX等。其中,Android模拟器几乎提供了大多数物理硬件设备的硬件和软件特性。本文通过该模拟器来进行开发和测试Android应用程序。

3 图像处理软件基本构建

3.1 Camera架构

Camera作为Android的子系统,从物理结构的角度来看,Camera可以分为主控制器和摄像头设备。从具体功能来看,Camera已经默认提供了一个拍照和录制视频的框架。这个框架可以满足基本的功能需求。当所需要的功能框架无法满足时,可通过编写自定义的功能代码,利用Android自带的Camera类库来实现所需要的功能。

Camera的体系架构自下而上可以分为内核层、库层、应用框架层和应用层。内核层是Camera与物理设备联系的桥梁。它负责将Camera的各种操作命令转化为物理设备可以接受的命令。库层作为Camera与物理设备的通信接口,封装了底层的硬件接口。其与应用框架层之间的通讯主要采用Binder机制,即为每一个进程保留一个可用的线程池,用来处理IPC以及执行本地消息。应用框架层则整合了Android自带的各种控件和类,为应用开发提供高效、便捷的API。应用框架层为应用层统一了接口,同时也方便了各种类库的导入。应用层位于Camera的最顶层,开发人员可以基于Android SDK所提供API完成各种开发任务,最终生成可在用户机器上直接安装的APK包。由于本文所要搭建的图像处理软件框架并不需要涉及内核层和库层,因此这里不再深入探讨它们相关的体系架构。

Camera应用层的代码位于\android\packages\apps\Camere下,主要封装了android.hardware.camera类。若要使用该类,则需首先获得相关权限。获得权限的方法是通过在Manifest文件中添加相关声明,如果需要设置自动对焦等功能则需另外添加一些元素。

Camera应用框架层为应用层提供了统一的接口。这么做的目的主要是为了使应用开发人员将注意力更多地放到应用开发上,而不是关心库层和内核层是如何实现功能的。对于应用层,Camera应用框架层以android.hardware.Camera类的形式提供调用;对于库层及内核层,Camera应用框架层则以CameraHardwareInterface.h头文件的形式,为其提供了相关接口,使其继承后得以使用。Camera应用框架层在整个Camera架构中扮演了非常重要的承接作用。使得Camera不受底层硬件驱动改变的影响,有利于在不同平台上移植代码,而不对上层的代码产生影响。

3.2 Camera功能实现

本文所要搭建的图像处理框架实现的主要功能是通过编写相关代码,自定义Camera的功能,使其能够逐帧提取图像信息并与事先存储在数据库中的模板图像信息进行匹配。一旦匹配成功则立刻调用摄像头自动将该帧图像捕获。在这个逐帧匹配的过程中,匹配的算法非常关键与复杂,对其的研究工作将放在下一阶段进行。本文的研究重点放在除匹配算法之外的部分,为最终完成对手势控制照相机的研究工作打下基础。

Camera的功能实现流程如图2所示。

图2

Android中调用摄像头的方法有两种。一种是通过Intent直接调用系统默认的摄像头。本文采用的是第二种,即先实例化一个Surfaceholder类。在Surfaceholder类中有一个CallBack接口,通过该接口可以实现三个方法:SurfaceCreated、SurfaceChanged、SurfaceDestroyed。这三种方法分别是在Surface被创建后调用,SurfaceView发生改变时调用和SurfaceView销毁时调用。之后实例化SurfaceView类,通过SurfaceView.

GetHolder方法来获取SurfaceHolder对象。SurfaceHolder对象的作用主要是用来控制Surface。为了显示预览图像,首先调用SurfaceCreated方法,来实例化Camera对象。

通过调用Camera对象中的Parameters类,可以对摄像头的各种参数进行设置。这些参数包括预览帧收到的速率,预览图像的图片格式,图片大小等。由于移动终端的处理机性能有限,实现真正的逐帧匹配将会占用系统大量的资源,并且这样做是没有必要的。因此,合理地设置预览帧收到的速率对于后续的性能优化有着重要的影响。由于Android系统默认的预览图像的图片格式为YUV420。YUV420格式的图片与硬件有很大的相关性。此外,YUV值存在着负值以及取值范围上下限之差不为255等问题,不利于计算机处理[3]。为了便于对预览图像进行处理,因此在通过PictureCall

Back方法获取到图像的字节数组后,有必要将其转换为RGB格式。

本文作者已经实现了在MATLAB平台上对RGB格式图片的识别功能,可与模板图片进行匹配。在完成以上设置之后,调用Camera.setParameter()方法使之生效。最后通过Camera基类中提供的StartPreview和StopPreview方法来达到控制预览功能的开启与关闭。

至此,已完成了预览图像的获取工作。接下来,是通过图像匹配算法对获取到的每一帧预览图像进行匹配。匹配的方法是对预览图像的字节数组进行处理,提取出特征值后与数据库中的模板图像的特征值进行匹配。如前文所述,该部分不在本文讨论范围之内,这里不再赘述。本文假设该部分的研究工作已完成,即预览图像与模板图像相匹配之后,系统将调用Camera.autoFocus方法实现自动对焦功能。最后自动调用Camera.takePicture

方法完成拍照功能。

软件模拟运行效果如图3所示:

图3

4 结束语

本文完成的主要工作:

1)对Android系统及其开发环境搭建方法进行了详细的分析,包括Android内核,Android运行时,Andorid库和Android的应用程序框架,并重点分析了系统软件开发环境的搭建过。

2)对Camera的接口与架构进行了深入的研究,重点对利用Camera捕获图像进行了分析,完整描述了逐帧捕获图像的功能实现过程。

下一步的主要工作:

1)通过手势识别算法对Camera捕获的图像进行分析。

2)优化手势识别算法的效率。

3)按照项目计划对各项功能进行优化与改进。

基金项目:浙江省新苗人才计划

参考文献:

[1]熊刚,基于Android的智能手机的设计与实现,武汉理工大学,2010.

[2]和凌志、郭世平,手机软件平台架构解析,电子工业出版社,2009.

[3]刘旭晖,Camera图像处理原理及实例分析.

作者简介:

林晨(1990-),男,浙江宁波人,大三学生,电子信息科学与技术专业;张梦杰(1990-),男,浙江海宁人,大三学生,电子信息科学与技术专业。