青岛大学本科生毕业论文(设计)
5.3 按钮的设置
为了方便我们对选择图片的控制,我们引进了两个程序按钮:选择和识别。这两个按钮的引入,方便了我们提取图片,同时增加了操作感,方便了我们的应用。点下选择按钮我们可以在手机SD卡中读取我们事先存好的图片:点击识别按钮我们可以查看图片识别效果。程序界面如图5.4程序界面所示:
图5.4 程序界面
程序实现代码如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(mIV, new LayoutParams(LayoutParams.WRAP_CONTENT, // LayoutParams.WRAP_CONTENT)); setContentView(R.layout.main);
mIV = (MyImageView) findViewById(R.id.iv_no);
idetifyButton = (Button) findViewById(R.id.indetify); selectButton = (Button) findViewById(R.id.select);
mIV.setImageBitmap(BitmapFactory.decodeResource(getResources(),
R.drawable.face3));
idetifyButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// load the photo
//Bitmap b = BitmapFactory.decodeResource(getResources(),
30
青岛大学本科生毕业论文(设计)
}
});
// R.drawable.face3);
mIV.setDrawingCacheEnabled(true); mIV.setDrawingCacheEnabled(true); Bitmap b = mIV.getDrawingCache();
mFaceBitmap = b.copy(Bitmap.Config.RGB_565, true); mIV.setDrawingCacheEnabled(false); mIV.setDrawingCacheEnabled(false); mFaceWidth = mFaceBitmap.getWidth(); mFaceHeight = mFaceBitmap.getHeight(); mIV.setImageBitmap(mFaceBitmap);
// perform face detection and set the feature points setFace(); mIV.invalidate();
}
selectButton.setOnClickListener(new OnClickListener() { });
@Override
public void onClick(View arg0) { }
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType(\intent.putExtra(\startActivityForResult(intent, 0);
31
青岛大学本科生毕业论文(设计)
第六章 研究结果及分析
获取待识别人脸图像:利用程序从手机SD卡中获取当前待识别人脸图像,进过相应算法处理获得能让程序顺利识别的图像。
人脸分类:利用PCA算法求解待识别人脸图像的人眼的位置,将待识别人脸图像归类实现眼部的识别,显示识别结果。
正是对图像的预处理,才能为后期算法奠定基础、提高识别率。也正是PCA算法减少了计算量,降低了应用程序对硬件的要求,从而减少了识别所用的时间。
实验证实对人脸的识别基本完成,下面是程序运行的结果: 单人识别结果,如图6.1 单人识别结果:
图6.1 单人识别结果
多人识别结果,如图6.2 多人识别结果:
图6.2 多人识别结果
由于此程序运行起来占用内存较大,并且还要保证整体的运行时间不宜过长,因此在
32
青岛大学本科生毕业论文(设计)
写程序时,故意写入最多只能一次识别10张脸。
从以上运行结果看:此程序基本实现了人脸识别的功能,虽然只是识别了人的眼睛,但是这位我们继续优化提供了有力的依据,但很有很多不足之处,值得我们日后好好研究。
33
青岛大学本科生毕业论文(设计)
第七章 总结
7.1 全文总结
本文是基于Android编程平台,对人脸识别技术的研究。Android编程平台的开放性、灵活性以及其完善的库函数和完整的应用程序框架,在最大程度上给予了程序开发人员很大便利。本文从人脸识别技术的研究现状、课题的研究意义结合当下手持设备的不断发展综合阐述了人脸识别技术应用前景的广阔。
文中从Android编程平台的搭建、Android平台相关简介做了比较详细的阐述。人脸图像预处理从彩图的灰度化、直方图均衡化、图像的平滑滤波、图像的边沿检测等都运用了数字图像处理中的相关知识。人脸识别的核心算法是采用的主成分分析法(PCA),文中对PCA算法的原理进行了详细的阐述。算法的实现是采用编程实现的,计算出协方差矩阵的特征值和特征向量,以及特征脸空间,最后实现了对人脸面部的识别。这也体现出Android编程平台的灵活性和开放性。
本文所运用到知识较多但是不杂。从前端的人脸采集、图像处理、算法实现形成了一条内在清晰的逻辑线,由浅入深,紧密相连。Java、C/C++的熟悉应用,数字图像处理知识的深入学习运用,数学基础知识及各种算法的掌握,数学模型的简历,较好的英语识度理解能力,良好的自学能力,这是完成本文的重要前提,通过此次试验,再次告诉我们在学习过程中掌握重要的基础知识、建模能力,实践技能的重要性。
7.2 前景展望
人脸识别技术经过这么多年的发展,已经取得巨大的进步,该技术在现在生活中已经得到了非常广泛的应用,可用于公安系统、驾驶执照及护照核对系统、银行及海关的监控系统及自动门卫系统、银行信用卡验证、医学、档案管理、视频会议、人机交互系统等多方面。随着技术的发展,人脸识别技术在手持设备上将会得到快速的发展。随着智能手机的普及,手机已经不是传统意义上的手机,它可以使人们生活的交易平台、相关信息收发存储的载体,因此手机的信息安全也得到越来越多人的重视。这也将促进人脸识别的发展。
从近几年生物识别技术市场和技术发展趋势来看,相关产业的集中度不断提高,在国外生物识别产业和市场中各类生物识别技术的发展和推广比较均衡。这也将给人脸识别技术的发展有了良好的基础。
人脸的自然特性决定了人脸识别是一个非常复杂的问题。经过国内外专家的很长时间的研究和积累,目前人脸识别技术已经达到一定的实用性,也有一些公司研制的产品进入市场推广阶段。影响人脸识别的成功的因素很多,现在,在室外的自然条件下,只有很小的部分能达到实用级别。这也说明要使计算机的人脸识别达到与真正人类识别人脸相媲美
34