C++人脸识别系统(论文+算法+英文文献翻译+源代码) 第12页

C++人脸识别系统(论文+算法+英文文献翻译+源代码) 第12页
(lpData + lOffset+1)=state ;
*(lpData + lOffset+2)=state ;
(3)效果图  
   图 4-5 灰度均衡效果图
5、图像对比度增强
(1) 算法思想:
在对图像均衡直方图处理以后,便可对图像进行对比度增强,进一步拉开对比度。它通过对图像的灰度值进行统计,对于比最小设定值小的则认为是有关的信息,则将它作为黑色处理,比最大设定值大的则认为是一些无关的信息,将它们去掉,而处于两者之间的,则进行对比度增强,将他们在总的灰度值里面的比例作为新的像素信息保存起来。
这个工作的主要目的是将图像的特征一步一步显现出来。
 (2) 编码实现:
①  编辑菜单IDR_MAINFRAM,在菜单“预处理”中添加一子菜单项,命名为“实现图像对比度增强”,并将其ID设为ID_READY_ContrastEnhance。
②   类CFaceDetectView中添加“实现图像对比度增强”菜单项的事件处理程序,其代码如下;
lOffset = gDib.PixelOffset(i, j, gwBytesPerLine);
获取图像灰度增强函数
int state=IncreaseContrast(ZFT[k][k1], 100);   
显示灰度增强后的图像
*(lpData +  lOffset ) = state ;
      *(lpData + lOffset+1) = state ;
*(lpData + lOffset+2) = state ;
其中IncreaseContras()函数是实现图像对比度增强的关键函数,该根据参数n来调节对比度,n越大,对比越强烈,其核心是:

如果数据很小,设置为0
if(pByte<=Low)
 return 0;
 获得中间数据,并进行对比增强处理
 else if ((Low<pByte)&&(pByte<High))
  return int(((pByte-Low)/Grad));
 如果数据很大,设置为255
 else  return  255;
③ 效果图
 图4-6  对比度增强效果图
 第三节  编程时的问题解决
1、光线补偿
   由于要改变每一个像素的亮度,开始,我通过对数幅图像使用一个固定的值进行测试,得到的效果都满理想,但是当对更多的图像处理时,该固定值就出现了明显的不足,最后不得不采用全局统计的方法,才能得到比较理想的效果。  

2、高斯平滑
 高斯平滑用于消除图片噪音,为了实现此功能,我们使用了模板操作,因此模板参数的选择是最重要的。高斯平滑效果的好坏取决与模板参数。在编程的时候,试探性的进行参数的选择,然后进行比较,看那组参数可以达到最好的效果。模板参数是
   原先采用了
        1/9    1/9    1/9
        1/9    1/9    1/9
        1/9    1/9    1/9
    形式,但是,得到的效果却是令人失望。
    后来又用了
        1/10    1/10     1/10
        1/10    1/5      1/10
        1/10    1/10     1/10
    形式,但是,结果仍然是未能达到预期的效果。
    直到最后采用的
        1/16    2/16     1/16
        2/16    4/16     2/16
        1/16    2/16     1/16
    形式,才得到了比较合理的效果。
3、 均衡直方图
   开始时,图像的会度一直都处于很散的状态,而且图像的特征不明显,原本想经过高斯平滑后进行灰度变换,但是并未能成功。经过了一翻苦战,最终找到均衡直方图的办法,经过多次尝试,效果一直处于比较理想的状态。
 
                第五章   结构设计

在本系统中,起至关重要的类列举如下,并将它们的成员函数及其成员函数的功能和参数都一一简述:

1、CFaceDetectView :该类是在编程的过程中自动生成的。菜单项中的事件处理程序都是在该类对应的CFaceDetectView.h文件和CFaceDetectView.cpp文件中声明和实现的。表7-1列出了该类所封装的成员函数及其功能:
                   表7-1 类 CfaceDetectView的成员
函   数 功   能
IncreaseContrast () 增强图像对比度
FixeEyes () 眼睛定位
FixeNose() 鼻子定位
FixeMouth () 嘴巴定位
GetEyesParameter () 获取眼睛参数
GetPartParameter() 获取脸部特征
GetmouthParameter () 获取嘴巴参数
Centerofgravity() 获取眼、鼻子、嘴巴的重心
AverageDeviation () 获取平均值的标准偏差
Template() 对图像进行模板操作
DrawCrossX () 画十字标记

                  各成员函数解析
函数名称   :        IncreaseContrast
参数       :        int  pByte  ---- 图像的灰度值
                     int  n      ---- 用于调节对比度的参数
返回值     :        int         ---- 新的灰度值
说明       :        该函数通过修图像的灰度值来增强图像的对比度

 << 上一页  [11] [12] [13] [14] [15] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有