6) 具有底层和高层的应用开发包;
7) 用户接口方便灵活。
3.2OpenCV的功能
1) 对图像数据的操作,包括分配、释放、复制和转换数据。
2) 具有对矩阵和向量的操作以及线性代数的算法程序,包括矩阵、解方程,特征值以及奇异值。
3) 具有基本的数字图像处理能力,如可进行滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图和图像金字塔等操作。
4) 对运动的分析,如对光流、运动分割和跟踪的分析。
5) 对目标的识别,可采用特征法和隐马尔科夫模型(HMM)法。
6) 具有基本的GUI功能,包括图像与视频显示、键盘和鼠标事件处理及滚动条等。
3.3OpenCV模块
1) CV核心函数库,实现图像处理,结构分析,运动分析,对象识别,摄像机标定和3D重构等功能。
2) CVAUX辅助函数库,实现通过立体视觉来实现的动作识别,基于轮廓线的形状匹配,模式识别,纹理描述等功能。
3) CXCORE数据结构与线性代数库,实现数据变换,矩阵运算等功能。
4) HIGHGUI图像界面函数库,实现图像获取,用户界面设计等功能。
5) ML机器学习函数库,包括模式分类和回归分析等。
4Android上的系统实现
Android是基于Linux开放性内核的操作系统,是Google公司在2007年l1月5日公布的手机操作系统。Android采用软件堆层的架构,主要分三部分:底层以Linux核心为基础,提供基本功能;中间层包括函数库和虚拟机;最上层是各种应用软件。Android应用程序用Java语言编写。每个应用程序都拥有一个独立的Dalvik虚拟机实例,这个实例驻留在一个由Linux内核管理的进程中[6]。
在Android系统上使用OpenCV来实现该系统,需利用JNI编写相应的本地代码组件并通过Android NDK工具集将其嵌入到Android应用程序中。首先,利用Android应用程序框架编写相应的Java代码;然后通过JNI与OpenCV提供的函数编写本地C/C++代码,并使用Android NDK将本地代码文件编译生成可由Java代码调用的共享库(动态链接库),最后通过SDK生成完整的Android应用程序[7]。
4.1JNI
JNI(Java Native Interface),即JAVA本地调用。它允许Java代码和其他语言编写的代码进行交互。
5结论
本文提出了一种基于SURF算法的图像识别方法,并运用此方法实现了一套基于Android平台的图像识别系统。由于系统需要进行大量的图像处理运算, 因此通过使用Android NDK调用OpenCV图像处理函数库以提高编程效率,。系统通过手机摄像头提取视频帧, 并使用SURF算法对其进行快速鲁棒特征检测。实验结果表明, 该方法复杂度低、实时性好并且具有良好的鲁棒性,将系统用于移动设备图像识别加密,以及视频监控等方面,会使其拥有更好的识别效率和可靠性。