本文主要是介绍人脸矫正之人眼检测实例(Android),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近在做人脸识别的研究和开发,其中用的还是传统的支持向量机 ——SVM和特征提取方法 LBP(具有灰度不变形的优点)
在少量的数据下,传统的机器学习方法相对于现在比较热门的深度学习算法有一定的优势,比如计算速度等。
其中的SVM我使用的是台湾大学的LIBSVM的开源项目,这个开源项目是很经典而且很实用。
对于非端对端的学习,一个好的分类问题,需要的就是提取最有价值的特征,那么如何更好的使用LBP和对图片的预处理是至关重要的。
那么,对于LBP算法,我对他进行了改进,依照的是很多论文中的改进算法,通过做了很多的实验,也验证了对LBP算法改进的优势。
那么剩下的就是图片的预处理问题了,其中的最重要的步骤就是对人脸图片的归一化。
怎么进行归一化呢?
一般情况下我们先进行人脸检测,那么检测出的 人脸类似下图。
除了有些背景稍微大些之外,这已经算是很标准的人脸图了。
但是特殊情况
对这种情况我们该怎么办?
无疑,我们需要对图片进行旋转。
那么问题来了,改怎么旋转?
就引入了我们的题目,我们的方法如下:
通过人脸检测,找到双眼的位置,然后根据坐标,找到旋转角度,然后进行旋转。
下面我们介绍如何寻找人脸的位置。
方法一:
通过Opencv 自带的 CascadeClassifier类,然后使用自带的训练好的人眼模型。
核心代码(JAVA)如下:
detector2.detectMultiScale(eyeMat , eyeDetections , 1.01 , 2 , 0
这篇关于人脸矫正之人眼检测实例(Android)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!