毕业设计+人脸识别完整版(4)

2019-05-26 22:59

初春岭:人脸面部特征提取技术的研究

第4章 系统详细设计

本章主要对图像处理这一模块进行详细介绍,对其子模块所用到的算法及具体实现进行详细讲述。

4.1 系统的运行流程图

? 启动本系 统,进入人脸识别系统界面。 ? 点击打开图象,选取所需要的图片 对图片进行光线补偿、将图片变成灰色、实现图片对比度增强,二值化变换等一系列预处理。 将处理好的人脸图片进行定位,标出眼睛、鼻尖和嘴巴。 图4-1 系统流程图

4.2 图像处理详细设计 4.2.1图像灰度化

彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化。相比之下灰度图像在保留了人脸主要特征信息的基础上,减少了总信息量。

(1) 算法思想

灰度化的处理方法主要有3种:

① 最大值法:使RGB的值等于3值中的最大一值,即,

R?G?B?max(R,G,B) 式(4.1) 14

2008届计算机科学与技术专业毕业设计(论文)

最大值法会完成亮度很高的灰度。

② 平均值法:取R,G,B的平均值,即,

R?G?B?(R?G?B)3 式(4.2)

平均值法会完成比较柔和的灰度。

③ 加权平均值法:根据重要性或其他指标给R,G,B赋予不同的权值,并使RGB的加权值平均,即,

R?G?B?(WRR?WGG?WBB)3

式(4.3) 其中WR,WG,WB分别为R,G,B的权值。实验和理论推导证明当

WR3?0.30,WG3?0.59,WB3?0.11 时,即当,

cgray?0.30R?0.59G?0.11B

式(4.4) R?G?B?cgray 式(4.5)

时,能得到最合理的灰度图像。

(2) 具体实现灰度化功能

① 在明白了灰度化的原理之后,就可进行编码来实现该功能。在编辑界面

中添加一个按钮控件,将其命名为‘灰度化’,并其ID号设为IDC_BTHD, 对应文件CFaceDetectDlg.Cpp中的函数OnBthd()实现.

②现该模块的核心代码如下:

//编写就算像素点灰度值的函数

int CPreProcess::CalGray1(int blue,int green,int red) {

15

初春岭:人脸面部特征提取技术的研究

//利用灰度计算公式

int ColorGray=(int)((green * 59 + red * 30 + blue * 11) / 100); }

return ColorGray;

//将像素值限制在0到255 if (ColorGray<0) { }

else if (ColorGray>255) { }

ColorGray=255; ColorGray=0;

//编写OnBtGray()函数 //获取红色分量

int ColorRed=m_tOriPixelArray[i][j].rgbRed;

//获取绿色分量

int ColorGreen=m_tOriPixelArray[i][j].rgbGreen;

//获取蓝色分量

int ColorBlue=m_tOriPixelArray[i][j].rgbBlue; //调用函数,计算灰度值

int cgray=method3->CalGray1(ColorBlue ,ColorGreen , ColorRed ) ; //显示灰度图像

m_tResPixelArray[i][j].rgbBlue = m_tResPixelArray[i][j].rgbGreen = m_tResPixelArray[i][j].rgbRed =cgray;

//重置位图

MakeBitMap( );

16

2008届计算机科学与技术专业毕业设计(论文)

}

//method3是定义的一个函数指针,定义如下:

CPreProcess *method3;

//初始化如下

method3 = new CPreProcess(m_tOriPixelArray,m_nWndWidth,m_nWndHeight);

③ 图像灰度化效果:

图4-2 图像灰度化

4.2.2 灰度变换

按照一定的规律修改像素的灰度值,使图像的亮度或者对比度发生改变,使之

17

初春岭:人脸面部特征提取技术的研究

更易于分辨,达到更好的视觉效果。

(1) 具体实现功能

进行编码来实现该功能:

在编辑界面中添加一个滑动条控件和文本编辑器,将其命名为‘灰度化变换’,并其ID号分别设为IDC_SLIDER1, IDC_EDIT1,对应文件CFaceDetectDlg.Cpp中的函数OnReleasedcaptureSlider1()和OnChangeEdit1()实现。

打开ClassWizard的Member Variables标签,给每个控件添加所需的成员变量,参数如下:

表4.1 空间ID号 IDC_SLIDER1 IDC_EDIT1

变量类型 CSliderCtrl int 变量名 m_Slider m_Gray 范围和大小 ―― 0~255 在滑动条的消息处理函数OnReleasedcaptureSlider1()中设置滑动条的值使它等于文本编辑框的初始值。代码为:

//设置滑动条的初始值

m_Slider.SetPos(m_Gray);

//刷新界面

UpdateData(true);

在滑动条的消息处理函数OnReleasedcaptureSlider1()中进行灰度化变换,将滑动条的值赋给灰度,并将其控制在【0,255】之间。代码为:

cgray+=m_Gray;

18

if (cgray<0) {


毕业设计+人脸识别完整版(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:常识

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: