导航:首页 > 源码编译 > 人脸识别算法代码java

人脸识别算法代码java

发布时间:2023-03-03 11:40:33

Ⅰ 人脸识别系统使用java的开发

现在主流的还是用的网络,千搜等公司的在线API,就是传图片过去,等接收结果就行,seetaface这个东西太复杂了。

Ⅱ 人脸识别的识别算法

人脸识别的基本方法

人脸识别的方法很多,以下介绍一些主要的人脸识别方法。

(1)几何特征的人脸识别方法

几何特征可以是眼、鼻、嘴等的形状和它们之间的几何关系(如相互之间的距离)。这些算法识别速度快,需要的内存小,但识别率较低。

(2)基于特征脸(PCA)的人脸识别方法

特征脸方法是基于KL变换的人脸识别方法,KL变换是图像压缩的一种最优正交变换。高维的图像空间经过KL变换后得到一组新的正交基,保留其中重要的正交基,由这些基可以张成低维线性空间。如果假设人脸在这些低维线性空间的投影具有可分性,就可以将这些投影用作识别的特征矢量,这就是特征脸方法的基本思想。这些方法需要较多的训练样本,而且完全是基于图像灰度的统计特性的。目前有一些改进型的特征脸方法。

(3)神经网络的人脸识别方法

神经网络的输入可以是降低分辨率的人脸图像、局部区域的自相关函数、局部纹理的二阶矩等。这类方法同样需要较多的样本进行训练,而在许多应用中,样本数量是很有限的。

(4)弹性图匹配的人脸识别方法

弹性图匹配法在二维的空间中定义了一种对于通常的人脸变形具有一定的不变性的距离,并采用属性拓扑图来代表人脸,拓扑图的任一顶点均包含一特征向量,用来记录人脸在该顶点位置附近的信息。该方法结合了灰度特性和几何因素,在比对时可以允许图像存在弹性形变,在克服表情变化对识别的影响方面收到了较好的效果,同时对于单个人也不再需要多个样本进行训练。

(5)线段Hausdorff 距离(LHD) 的人脸识别方法

心理学的研究表明,人类在识别轮廓图(比如漫画)的速度和准确度上丝毫不比识别灰度图差。LHD是基于从人脸灰度图像中提取出来的线段图的,它定义的是两个线段集之间的距离,与众不同的是,LHD并不建立不同线段集之间线段的一一对应关系,因此它更能适应线段图之间的微小变化。实验结果表明,LHD在不同光照条件下和不同姿态情况下都有非常出色的表现,但是它在大表情的情况下识别效果不好。

(6)支持向量机(SVM) 的人脸识别方法

近年来,支持向量机是统计模式识别领域的一个新的热点,它试图使得学习机在经验风险和泛化能力上达到一种妥协,从而提高学习机的性能。支持向量机主要解决的是一个2分类问题,它的基本思想是试图把一个低维的线性不可分的问题转化成一个高维的线性可分的问题。通常的实验结果表明SVM有较好的识别率,但是它需要大量的训练样本(每类300个),这在实际应用中往往是不现实的。而且支持向量机训练时间长,方法实现复杂,该函数的取法没有统一的理论。

人脸识别的方法很多,当前的一个研究方向是多方法的融合,以提高识别率。

在人脸识别中,第一类的变化是应该放大而作为区分个体的标准的,而第二类的变化应该消除,因为它们可以代表同一个个体。通常称第一类变化为类间变化,而称第二类变化为类内变化。对于人脸,类内变化往往大于类间变化,从而使在受类内变化干扰的情况下利用类间变化区分个体变得异常困难。正是基于上述原因,一直到21 世纪初,国外才开始出现人脸识别的商用,但由于人脸识别算法非常复杂,只能采用庞大的服务器,基于强大的计算机平台。



如果可以的话,可以Te一下colorreco,更好的技术解答。

Ⅲ 如何开发Java动态人脸识别

1.环境搭建
整个项目的结构图

2.编写DetectFaceDemo.java,代码如下:
[java] view plain
package com.njupt.zhb.test;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.Highgui;
import org.opencv.objdetect.CascadeClassifier;

//
// Detects faces in an image, draws boxes around them, and writes the results
// to "faceDetection.png".
//
public class DetectFaceDemo {
public void run() {
System.out.println("\nRunning DetectFaceDemo");
System.out.println(getClass().getResource("lbpcascade_frontalface.xml").getPath());
// Create a face detector from the cascade file in the resources
// directory.
//CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("lbpcascade_frontalface.xml").getPath());
//Mat image = Highgui.imread(getClass().getResource("lena.png").getPath());
//注意:源程序的路径会多打印一个‘/’,因此总是出现如下错误
/*
* Detected 0 faces Writing faceDetection.png libpng warning: Image
* width is zero in IHDR libpng warning: Image height is zero in IHDR
* libpng error: Invalid IHDR data
*/
//因此,我们将第一个字符去掉
String xmlfilePath=getClass().getResource("lbpcascade_frontalface.xml").getPath().substring(1);
CascadeClassifier faceDetector = new CascadeClassifier(xmlfilePath);
Mat image = Highgui.imread(getClass().getResource("we.jpg").getPath().substring(1));
// Detect faces in the image.
// MatOfRect is a special container class for Rect.
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);

System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

// Draw a bounding box around each face.
for (Rect rect : faceDetections.toArray()) {
Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
}

// Save the visualized detection.
String filename = "faceDetection.png";
System.out.println(String.format("Writing %s", filename));
Highgui.imwrite(filename, image);
}
}

3.编写测试类:
[java] view plain
package com.njupt.zhb.test;
public class TestMain {
public static void main(String[] args) {
System.out.println("Hello, OpenCV");
// Load the native library.
System.loadLibrary("opencv_java246");
new DetectFaceDemo().run();
}
}
//运行结果:
//Hello, OpenCV
//
//Running DetectFaceDemo
///E:/eclipse_Jee/workspace/JavaOpenCV246/bin/com/njupt/zhb/test/lbpcascade_frontalface.xml
//Detected 8 faces
//Writing faceDetection.png

Ⅳ 人脸识别门禁系统Java源代码

基于弹性模板匹配的人脸表情识别程序。首先针对静态表情图像进行表情图像的灰度、尺寸归一化,然后利用Gabor小波变换提取人脸表情特征以构造表情弹性图,最后提出基于弹性模板匹配及K-近邻的分类算法实现人脸表情的识别。

Ⅳ 求java+opencv的人脸识别系统源码,要编写android版的人脸识别系统,求源码一枚

我不会java。我常用的是c/c++和matlab语言,平台是vs和opencv,这问题还真帮不了你。

Ⅵ java 人脸识别 问题!

no jniopencv_objdetect in java.library.path

opencv的相应的dll,没有放到环境变量PATH 所指的目录

Ⅶ java怎么实现人脸识别

应该可以通过java调用别人的人脸识别的接口,主要是利用图像处理的技术,识别关键点

Ⅷ java 实现人脸的动漫化 照片用数组存还是image对象提取人脸的什么特征人脸处理常用哪些特征

YOGUAI为保险柜,自动门,考勤等行业提供人脸识别方案。

随着计算机网络和通信技术的发展,信息安全、知识产权保护和身份认证等问题成了一个重要而紧迫的研究课题。身份认证是保证系统安全的必要前提,在多种不同的安全领域都需要准确的身份认证。传统的身份证、智能卡、密码等身份认证方法存在携带不便、容易遗失、不可读或密码易被破解等诸多问题。基于人脸识别技术的身份认证方法与传统的方法相比,具有更好的安全性、可靠性和有效性,因此正越来越受到人们的重视,并逐渐进入社会生活的各个领域。

人脸识别技术具有广泛的应用前景,可以应用到多种不同的安全领域,因其识别特征的独特性、惟一性和相对稳定性,逐渐成为一非常热门的研究课题。许多典型的人脸识别算法和应用系统都是针对标准或特定的人脸数据库,利用库内人脸进行训练,并在相同的库中实现人脸识别。但在软件保护、计算机安全等特殊应用中,身份认证仅针对单个对象进行人脸识别,现有的人脸识别方法并不能胜任这样的识别任务。为此,本文针对单对象人脸识别的特点,讨论了单对象人脸检测和识别的关键技术,在此基础上提出了一种单对象人脸识别算法,实验结果证明了该方法的有效性。

2单对象人脸识别的特点

与典型的人脸识别相比,单对象人脸识别有以下4个方面的特点:

应用领域人脸识别的应用领域很广,如刑侦破案、证件核对、保安监控等,而单对象人脸识别主要应用在软件保护、计算机安全锁、特定对象追踪等领域。

识别系统的目标单对象人脸识别的最终目标是系统必须具有高度的安全性和可靠性,即识别错误率趋于0。虽然降低识别错误率的同时识别率也会降低,但可以通过提示用户调整姿态(如注视摄像头等)加以改善。

肤色模型由于单对象人脸识别仅针对特定的对象,所以人脸检测的肤色模型可采用自适应的方法调整肤色范围。

分类方法单对象人脸识别不存在人脸数据库,常用的最小距离分类法不能够正确识别特定的对象,只能用阈值作为判据。因此,阈值的选取十分重要,阈值过大则容易出现错判,存在安全隐患;而阈值过小又会影响识别效率。

3人脸的检测和归一化

人脸检测是人脸识别的前提。对于给定的图像,人脸检测的目的在于判断图像中是否存在人脸,如果存在,则返回其位置和空间分布。利用人脸肤色和面部特征,将人脸检测分为两个阶段:外脸检测和内脸定位。外脸检测主要利用人脸肤色进行初步的脸区检测,分割出肤色区域;内脸检测是在外脸区域中利用面部几何特征进行验证和定位。

3.1外脸检测

外脸检测的任务是将待检图像中可能的人脸区域找出来并加以标记,其步骤如下:

(1)根据人类肤色在色彩空间中存在区域性的特点,将可能为人脸的像素检测出来。为更好地利用肤色特征,同时选用HSI和YcbCr两种色彩空间对图像进行二值化处理,肤色范围限定在H∈[0,46],S∈[0.10,0.72],Cb∈[98,130],Cr∈[128,170]内。将满足条件的像素标记为肤色像素,其余的均为非肤色像素。

(2)去噪处理。在以每一个肤色点为中心的5×5邻域内统计肤色像素的个数,超过半数时中心点保留为肤色,否则认为是非肤色。

(3)将二值图像中的肤色块作区域归并,并对目标区域进行比例、结构分析,过滤掉不可能的人脸区域。目标区域的高度/宽度比例限定在0.8~2.0。

3.2内脸检测和定位

将包含眼、眉、鼻和嘴的区域称为内脸区域。内脸区域能够很好地表达人脸特征,且不易受背景、头发等因素的干扰,因此内脸区域的检测和定位对后续的特征提取和识别至关重要。

在外脸区域的上半部,对二值图像进行水平方向和垂直方向的投影,确定两个包含黑点的矩形区域作为双眼的大致区域。在确定的两个区域中,对黑点进行区域膨胀,可以得到眼睛的基本轮廓和左石眼角,黑点坐标的平均值作为瞳孔的位置。

设左右瞳孔的坐标分别为(Lx,Ly)和(Rx,Ry),两个瞳孔之间的距离为d,根据人脸的几何特征,我们将内脸区域定义为:宽度=-d×1.6,高度=-d×1.8,左上角坐标为(Lx-d×0.3,(Ly Ry)/2-(-d)×0.3)。实验表明,该区域能够很好地表达人脸特征。

3.3内脸区域的归一化

由于各待测图像中的人脸大小具有很大的随机性,因此,有必要对内脸区域进行归一化操作。人脸归一化是指对内脸区域的图像进行缩放变换,得到统一大小的标准图像,实验中,我们规定标准图像的大小为128×128。归一化处理,保证了人脸大小的一致性,体现了人脸在图像平面内的尺寸不变性。

对归一化的人脸图像,采用小波变换与DCT相结合的方法提取人脸特征。首先对人脸图像进行3层小波分解,取低频子图像LL3作为人脸特征提取的对象,从而获得每幅训练样本或测试样本的低频子图像;然后对低频子图像进行离散余弦变换(DCT),DCT系数个数与子图像的大小相等(即256),由于图像DCT变换,能量集中在低频部分,因此只取其中的136个低频系数作为特征向量。

5人脸的识别

完成训练过程并获得待测样本的特征后,即可进行人脸识别,本文采用欧氏距离进行分类。

5.1计算样本与平均脸的欧氏距离

用m和x表示平均脸和样本的特征向量,则样本与平均脸的欧氏距离为:

其中mk表示平均脸的第k个特征向量,xk表示待测样本的第k个特征向量。身份认证时,计算待测样本与平均脸的欧氏距离,并与特定对象的自适应阈值进行比较,将小于阈值的样本判为该对象的人脸,即认证通过。

5.2自适应阈值的选取

与典型的人脸识别方法不同,单对象人脸认识没有人脸数据库,不能用距离最小作为判据,只能用阈值作为判别依据。阈值的选取应兼顾识别率和识别的准确性,实验中我们取训练样本与平均脸的欧氏距离平均值作为分类阈值,即:

其中,N为训练样本数,此值不宜太小;di为第i个样本与平均脸之间的欧氏距离。

莫士特科技有限公司提供模式识别主板及解决方案。
希望采纳

阅读全文

与人脸识别算法代码java相关的资料

热点内容
php能写前端吗 浏览:3
服务器如何更改raid模式 浏览:82
方舟服务器怎么导出来 浏览:606
手机显示服务器异常什么鬼 浏览:377
新闻服务器的网址是什么 浏览:665
程序员年底招人 浏览:311
广发app怎么查房贷 浏览:856
安卓手机怎么下薯仔 浏览:917
只有一个app显示网络异常怎么回事 浏览:988
解压玩具是水宝宝 浏览:817
压缩机保护怎么解决 浏览:944
单片机简易电子时钟 浏览:402
pdf影印版 浏览:689
单片机的中断技术 浏览:626
表格加密才能打开 浏览:39
多态可以提高编译可靠性吗 浏览:599
拼好魔方的app怎么下载 浏览:503
江苏金税盘测试服务器地址是什么 浏览:607
螺杆式压缩冷凝机组 浏览:299
p在单片机里什么意思 浏览:25