首页 > 编程知识 正文

公积金人脸识别不了怎么办,卷积神经网络人脸识别

时间:2023-05-06 16:14:41 阅读:27312 作者:3287

1、Haar-like的特点Haar-like的特点最初由Papageorgiou等应用于人的脸部表示,Viola和Jones在此基础上使用3种类型4种形式的特征。

Haar特征分为边缘特征、线性特征、中心特征和对角线特征三类,组合为特征模板。 特征模板内有两种矩形:白色和黑色,其特征值被定义为减去白色矩形像素和黑色矩形像素后的和。 Haar特性值反映了图像的灰度变化。 例如,一些脸部特征可以从矩形特征来简单说明,比如眼睛比脸颊颜色深,鼻梁两侧比鼻梁颜色深,嘴巴比周围颜色深。 但是,长方形的特征只对边缘、线段等简单的图形结构敏感,所以只能描述特定方向(水平、垂直、对角)的结构。

对于图中a、b和d这样的特征,特征数值的计算式为v=Sum白-Sum黑,对于c为v=Sum白-2*Sum黑; 将黑色区域的像素数与2相乘是为了使两种矩形区域中的像素数一致。

通过改变特征模板的尺寸和位置,可以在图像子窗口中穷举大量的特征。 上图的特征模板称为“特征原型”; 将要素原型扩展(平移伸缩)到图像子窗口中得到的要素称为矩形要素。 矩形特征的值称为“特征值”。

矩形特征位于图像的任意位置,大小也能够任意变化,因此矩形特征值是矩形模板类别、矩形位置、矩形尺寸这3个要素的函数。 因此,由于类别、大小和位置的变化,小的检测窗口中可能包含很多矩形特征,例如,在24*24像素尺寸的检测窗口中,矩形特征的数目可达到16万个。 有必要这样解决两个问题。 (1)如何快速计算多种特征? ---积分地图活跃; )什么矩形特征对分类器的分类最有效? ---使用AdaBoost算法培训时: https://www.cn blogs.com/henu liulei/p/10719208.html

2、Haar-like特征的计算—积分图积分图是一种快速算法,只需扫描一次图像,就能求出图像中所有区域的像素和,大大提高了图像特征量计算的效率。

积分图的主要思想是将从图像的始点至各点形成的矩形区域的像素之和作为一个排列的要素保存在存储器中,在计算一个区域的像素之和时对排列的要素直接索引以加速计算,而无需重新计算该区域的像素之和(特别是积分图在各种尺度下,可以使用同一时间(常数时间)计算不同的特征,大大提高了检测速度。

看看是怎么做的。

积分图是一种可以描述全局信息的矩阵表示方法。 积分图结构中,位置(I,j )的值ii ) I,j )是原图像) I,j )的左上角方向的所有像素的和

积分图构造算法:

1 )用s(I,j )表示行方向的累积相加,并将s ) I、-1)=0初始化;

2 )用ii(I,j )表示一个积分图像,将ii(-1,I )=0初始化;

3 )逐行扫描图像,并且递归地计算像素(I,j )在行方向上的累积相加值s ) I,j )和积分图像ii ) I,j )的值

s(I,j )=s ) I,j-1 ) s(I,j ) ) ) )。

ii(I,j )=ii ) I-1,j ) s ) I,j ) ) ) ) ) )。

4 )扫描图像一次,到达图像右下像素后,完成积分图像ii。

积分图制作后,图像中任意矩阵区域的像素相加和通过简单的运算得到图像。

设d 4个顶点分别为、、、,则d的像素和为

dsum=ii() ii ))-) ii() ii ));

Haar-like特征值只是两个矩阵的像素和之差,同样可以在一定时间内完成。 因此,矩形特征的模态计算只与该特征矩形的端点的积分图有关,所以无论该特征矩形的尺度变换如何,模态计算所需的时间都是一定的。 由此,只要扫描一次图像,就能够求出所有子窗口的特征量。

此链接中的文件实现了每个像素的haar特征量的计算。 https://files.cn blogs.com/files/henu liulei/console application 2.7 z

3、Haar-like矩形特征扩展Lienhart R .等人进一步扩展了Haar-like矩形特征库,增加了旋转45。 角的长方形的特征。 扩展后的特征大致可分为边缘特征、线特征环、环绕中心特征和对角线特征4种。

在特征值的计算中,黑色区域的权重为负值,白色区域的权重为正值。 另外,权重与矩形面积成反比(使两种矩形区域的像素数一致);

积分图构造算法:

1 )用s(I,j )表示行方向的累积相加,并将s ) I、-1)=0初始化;

2 )用ii(I,j )表示一个积分图像,将ii(-1,I )=0初始化;

3 )逐行扫描图像,并且递归地计算像素(I,j )在行方向上的累积相加值s ) I,j )和积分图像ii ) I,j )的值

s(I,j )=s ) I,j-1 ) s(I,j ) ) ) )。

(

i,j)=ii(i-1,j)+s(i,j)
4)扫描图像一遍,当到达图像右下角像素时,积分图像ii就构造好了。

如下图:

Sum(D)=ii(x4,y4)−ii(x2,y2)−ii(x3,y3)+ii(x1,y1)

 

利用opencv自带的基于haar特征的人脸识别的xml文件识别人脸代码:

 

1 #include<iostream> 2 #include<stdio.h> 3 //#include<pch.h> 4 #include<opencv2/opencv.hpp> 5 #include<opencv2/highgui/highgui.hpp> 6 #include<opencv2/imgproc/imgproc.hpp> 7 #include "opencv2/core/core.hpp" 8 #include <opencv2imgproctypes_c.h> 9 10 using namespace cv;11 using namespace std;12 13 #define W 192014 #define H 108015 16 string face_cascade_name = "F:\OpenCV\opencv\build\etc\haarcascades\haarcascade_frontalface_alt.xml";//此处只检测到了脸,检测其他器官可以添加其他的分类器17 CascadeClassifier face_cascade;18 int facesnum = 0;19 void DectectorAndDis(Mat frame)20 {21 Mat face_gray = Mat::zeros(H, W, CV_8UC3);22 vector<Rect> faces;23 cvtColor(frame, face_gray, CV_BGR2GRAY);//RGB转化为灰度24 equalizeHist(face_gray, face_gray);//直方图均衡化25 face_cascade.detectMultiScale(face_gray, faces, 1.75, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));26 for (int i = 0; i < faces.size(); i++) {27 Point CvBox2D(int(faces[i].x + faces[i].width*0.5), int(faces[i].y + faces[i].height*0.5));28 ellipse(frame, CvBox2D, Size(int(faces[i].width*0.5), int(faces[i].height*0.5)), 0, 0, 360, Scalar(255, 0, 0), 4, 8, 0);29 }30 if (facesnum != faces.size())31 {32 cout << "人脸数:" << faces.size() << endl;33 facesnum = faces.size();34 }35 36 imshow("读取视频", frame);37 }38 int main(int argc, char* argv[])39 {40 ///cv::Mat test = cv::imread("E:/code/Myprojects/ConsoleApplication1/test.jpg",0);41 //cv::Mat test1;42 //resize(test, test, Size(W, H));43 //imshow("test", test);44 //cv::Canny(test, test1, 1, 3, 3);45 //imshow("test1", test1);46 //test.convertTo(test, CV_32SC1);47 48 VideoCapture capture;49 capture.open(0);50 51 Mat frame = Mat::zeros(H, W, CV_8UC3);52 Mat frameaftcanny = Mat::zeros(H, W, CV_8UC3);53 face_cascade.load(face_cascade_name);54 while (1)55 {56 capture >> frame;57 58 //cv::Canny(frame, frameaftcanny, 100, 300, 3);59 //imshow("边缘检测", frameaftcanny);60 DectectorAndDis(frame);61 cv::waitKey(50);62 }63 waitKey(0);64 return 0;65 }

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。