人脸面部特征提取技术的研究(frt)毕业设计(编辑修改稿)内容摘要:

的上半部分,他们的连线是近似水平的,而且他们的中心比眉毛低,运用这些判据,可以区分眉毛和眼睛。 ★ 鼻子的定位 在确定了眼睛的位置以后,鼻子的位置基本确定,以眼睛的瞳距为 1来计算,鼻子到两眼中心的距离为 1。 在这附近搜索颜色较深的区域,大致能得到鼻孔的位置(有的侧面 图一个鼻孔基本不可见,也就无法检测出来了)。 然后在两鼻孔上访一定范围内(鼻孔的距离的 1/2左右)找亮度最高的点作为鼻尖。 ★ 嘴巴的定位 找到双眼之后,可以在它们的下方搜索候选特征区域,寻找非肤色面积较大、近似位于双眼对称的候选作为嘴巴。 然后根据先验知识调整嘴巴的大小。 人脸面部特征提取技术的研究 14 第 4 章 系统详细设计 本章主要对图像处理这一模块进行详细介绍,对其子模块所用到的算法及具体实现进行详细讲述。 系统的运行流程图 图 41 系统流程图 图像处理详细设计 化 彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化。 相比之下灰度图像在保留了人脸主要特征信息的基础上,减少了总信息 量。 ( 1) 算法思想 灰度化的处理方法主要有 3 种: ① 最大值法:使 RGB 的值等于 3 值中的最大一值,即 , m a x ( , , )R G B R G B   式 ()  启动本系统,进入人脸识别系统界面。  点击打开图象,选取所需要的图片 对图片进行光线补偿 、 将图片变成灰色 、 实现图片对比度增强,二值化变换 等一系列预处理。 将处理好的人脸图片进行定位,标出眼睛 、 鼻尖和嘴巴。 20xx 届计算机科学与技术专业毕业设计(论文) 15 最大值法会完成亮度很高的灰度。 ② 平均值法:取 R, G, B 的平均值,即 , ( ) 3R G B R G B     式 () 平均值法会完成比较柔和的灰度。 ③ 加权平均值法:根据重要性或其他指标给 R, G, B 赋予不同的权值,并使RGB 的加权值平均,即 , ( ) 3R G BR G B W R W G W B     式 () 其中 RW , GW , BW 分别为 R, G, B 的权值。 实验和 理论推导证明当0 . 3 0 , 0 . 5 9 , 0 . 1 13 3 3GRBWWW   时,即当 , 0 . 3 0 0 . 5 9 0 . 1 1c g r a y R G B   式 () R G B cg ra y   式 () 时,能得到最合理的灰度图像。 ( 2) 具体实现灰度化功能 ① 在明白了灰度化的原理之后,就可进行编码来实现该功能。 在编辑界面中添加一个按钮控件 ,将其命名为‘灰度化’ ,并其 ID 号设为 IDC_BTHD, 对应文件 CFaceDetectDlg. Cpp 中的函数 OnBthd()实现 . ② 现该模块的核心代码如下: //编写就算像素点灰度值的函数 int CPreProcess::CalGray1(int blue,int green,int red) { 人脸面部特征提取技术的研究 16 //利用灰度计算公式 int ColorGray=(int)((green * 59 + red * 30 + blue * 11) / 100)。 //将像素值限制在 0 到 255 if (ColorGray0) { ColorGray=0。 } else if (ColorGray255) { ColorGray=255。 } return ColorGray。 } //编写 OnBtGray()函数 //获取红色分量 int ColorRed=m_tOriPixelArray[i][j].rgbRed。 //获取绿色分量 int ColorGreen=m_tOriPixelArray[i][j].rgbGreen。 //获取蓝色分量 int ColorBlue=m_tOriPixelArray[i][j].rgbBlue。 //调用函数, 计算灰度值 int cgray=method3CalGray1(ColorBlue ,ColorGreen , ColorRed )。 //显示灰度图像 m_tResPixelArray[i][j].rgbBlue = m_tResPixelArray[i][j].rgbGreen = m_tResPixelArray[i][j].rgbRed =cgray。 //重置位图 MakeBitMap( )。 20xx 届计算机科学与技术专业毕业设计(论文) 17 } //method3 是定义的一个函数指针 ,定义如下: CPreProcess *method3。 //初始化如下 method3 = new CPreProcess(m_tOriPixelArray,m_nWndWidth,m_nWndHeight)。 ③ 图像 灰度化效果: 图 42 图像 灰度化 灰度变换 按照一定的 规律修改像素的灰度值 ,使图像的亮度或者对比度发生改变 ,使之人脸面部特征提取技术的研究 18 更易于分辨 ,达到更好的视觉效果。 ( 1) 具体实现功能 进行编码来实现该功能 : 在编辑界面中添加一个滑动条控件和文本编辑器 ,将其命名为 ‘ 灰度化变换 ’ , 并其 ID 号分别设为 IDC_SLIDER1, IDC_EDIT1 ,对应文件CFaceDetectDlg. Cpp中的函数 OnReleasedcaptureSlider1()和 OnChangeEdit1()实现。 打 开 ClassWizard 的 Member Variables 标签,给每个控件添加所需的成员变量,参数如下: 表 空间 ID 号 变量类型 变量名 范围和大小 IDC_SLIDER1 CSliderCtrl m_Slider ― ― IDC_EDIT1 int m_Gray 0~ 255 在 滑动条的消息处理函数 OnReleasedcaptureSlider1() 中设置滑动条的值使它等于文本编辑框的初始值。 代码为: //设置滑动条的初始值 (m_Gray)。 //刷新界面 UpdateData(true)。 在滑动条的消息处理函数 OnReleasedcaptureSlider1()中进行灰度化变换,将滑动条的值赋给灰度,并将其控制在【 0, 255】之间。 代码为: cgray+=m_Gray。 if (cgray0) { 20xx 届计算机科学与技术专业毕业设计(论文) 19 cgray=0。 } if(cgray255) { cgray=255。 } m_tResPixelArray[i][j].rgbBlue = m_tResPixelArray[i][j].rgbGreen = m_tResPixelArray[i][j].rgbRed =cgray。 } } MakeBitMap()。 } //重置位图 MakeBitMap()。 的主要代码 { CClientDC ClientDC(pDCShowGetWindow())。 if(m_pResMap!=NULL) delete m_pResMap。 m_pResMap=new CBitmap()。 m_pResMapCreateCompatibleBitmap(amp。 ClientDC,m_nWndWidth,m_nWndHeight)。 CDC dc。 (amp。 ClientDC)。 (m_pResMap)。 for(int i=0。 im_nWndHeight。 i++) for(int j=0。 jm_nWndWidth。 j++) 人脸面部特征提取技术的研究 20 (j,i,RGB(m_tResPixelArray[i][j].rgbRed,m_tResPixelArray[i][j].rgbGreen,m_tResPixelArray[i][j].rgbBlue))。 ()。 MyDraw()。 } ( 2) 效果图 图 43 比较柔和的灰度图像 20xx 届计算机科学与技术专业毕业设计(论文) 21 图 44 灰度 较强 图像 sobel边缘提取 图像边缘:是指图像中象素灰度值有阶跃变化或屋顶状变化的那些象素的集合。 图像边缘是一种重要的视觉信息,图像边缘检测是图像处理、图像 分析 、模式识别、 计算 机视觉以及人类视觉的基本步骤。 其结果的正确性和可靠性将直接影响 到 机 器视觉系统对客观世界的理解。 实 现边缘检测有很多不。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。