云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > FaceRecog程序文档

FaceRecog程序文档

  • 62 次阅读
  • 3 次下载
  • 2025/5/31 1:41:26

程序 文档

程序结构

整个工程可以分为3个部分:算法、功能和应用。 ?

算法部分

算法部分目前分为4个模块:人脸对齐、光照归一化、特征提取和选择、子空间降维,每个模块是一个项目,每个项目生成一个dll供功能部分显式调用。

? 功能部分

功能部分只有一个项目FaceMngr,该部分依赖于算法部分,实现人脸注册、训练、识别、导入/导出等具体功能。该项目生成一个dll供应用部分隐式调用。 ? 应用部分

人脸识别Demo.

另外,工程中还有一个项目tools,实现了一些整个工程都可能用到的函数,大部分与OpenCV有关。该项目生成一个dll供各部分隐式调用。

接口简介

1. 人脸对齐项目FaceAlign 该项目实现了两种算法: ? ?

bool InitAlign(CvSize *faceSz, void *detshape);

利用OpenCV 2.0自带的Haar Cascade函数进行人脸检测,将其结果作为对齐结果; 利用Yao Wei的asmlibrary (http://code.google.com/p/asmlibrary/) 检测出双眼坐标进行对齐;

初始化。输入一个初始化好的asm_shape指针,输出人脸尺寸,如果初始化失败(如缺少必须文件)则返回false.

bool GetFace(IplImage *pic8, CvMat *faceImg, bool useBuf);

输入8位图像,输出找到的最大的归一化人脸图像,如果没找到脸返回false. useBuf指示是否进行平滑以消除抖动。

void ReleaseAlign();

释放资源。

例子:

IplImage *img = cvLoadImage(\ CvSize faceSz; CvMat *faceImg = cvCreateMat(faceSz.height,faceSz.width,CV_8UC1);

static asm_shape detshape;

if(! InitAlign(&faceSz,(void*)&detshape)) return false; GetFace(img,faceImg,false); cvShowImage(\cvWaitKey(); ReleaseAlign();

2. 光照归一化项目LightPrep

该项目实现了同态滤波+直方图规定化算法。 主要函数有:

bool InitLight(CvSize imgSz);

初始化,输入人脸尺寸,初始化失败返回false.

void RunLightPrep(CvMat *faceImg8);

进行归一化,输入和输出均为8位图像faceImg8。

void ReleaseLight();

3. 特征提取和选择项目FaceFeature

该项目实现了1种特征:Gabor特征,并进行均匀采样,在频域计算,速度较快。 主要函数有:

int InitFeature(CvSize imgSize);

初始化,输入人脸尺寸,返回原始特征向量长度。

void GetFeature(CvArr *faceImg32, CvMat *ft32);

输入浮点图像,输出浮点原始特征列向量。

void ReleaseFeature();

例子:

if(!f.InitLight(m_faceSz)) return false; RunLightPrep(faceImg8);

featureSz = InitFeature(m_faceSz); if(m_featureSz == 0) return false;

tfaceImg32 = cvCreateMat(m_faceSz.height, m_faceSz.width, CV_32FC1); tfeature = cvCreateMat(m_featureSz, 1, CV_FT_FC1); cvConvertScale(faceImg8, tfaceImg32, 1.0/255); GetFeature(tfaceImg32, tfeature);

4. 子空间计算项目Subspace 该项目实现了Fisherface方法。 主要函数有:

int CalcSubspace(CvMat *inputs, int *trainIds);

训练、计算子空间,输入特征列向量排列成的矩阵inputs,和每一列对应的类别,将子空间存入dll文件内部的变量中。返回子空间维数。

int GetSubspaceDim();

返回子空间维数。

void Project(CvMat *inputs, CvMat *results);

投影,inputs 和results可以是向量或列向量排列成的矩阵。

double CalcVectorDist(CvMat *target, CvMat *query);

计算向量target和query之间的距离,如果特征维数大于,采用余弦距离的相反数(距离越小越相似);否则采用欧氏距离。

bool WriteDataToFile(ofstream &os); bool ReadDataFromFile(ifstream &is);

导入/导出子空间相关变量到文件。

void ReleaseSubspace();

5. 功能部分FaceMngr

该类显式调用上述四个dll(调用的方法见FaceMngr_load.cpp,显得有些繁琐,但我不知道是否有更好的用法),实现建立人脸库、训练、识别、导入/导出等具体功能。具体函数功能见程序头文件。

6. 演示程序frtest

该项目的功能是,对摄像头拍摄的或用户指定的图像,检测其中人脸,然后在已存储的人脸库中找到最匹配的人脸并显示。对注册、训练、识别和主界面分别建立一个类,通过消息处理函数与用户进行交互,利用多线程来实时显示图像。每个类的具体方法请见相应头文件中的注释。

闫轲

搜索更多关于: FaceRecog程序文档 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

程序 文档 程序结构 整个工程可以分为3个部分:算法、功能和应用。 ? 算法部分 算法部分目前分为4个模块:人脸对齐、光照归一化、特征提取和选择、子空间降维,每个模块是一个项目,每个项目生成一个dll供功能部分显式调用。 ? 功能部分 功能部分只有一个项目FaceMngr,该部分依赖于算法部分,实现人脸注册、训练、识别、导入/导出等具体功能。该项目生成一个dll供应用部分隐式调用。 ? 应用部分 人脸识别Demo. 另外,工程中还有一个项目tools,实现了一些整个工程都可能用到的函数,大部分与OpenCV有关。该项目生成一个dll供各部分隐式调用。 接口简介 1. 人脸对齐项目FaceAlign 该项目实现了两种

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com