网站导航网学 原创论文 网站设计 最新系统 最新研究 原创论文 获取论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计下载 > VC与C++类别 > 正文

基于VC人脸识别系统的研究与实现

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/05/14

以下是网学网为您推荐的VC与C++类别-基于VC人脸识别系统的研究与实现,希望本篇文章对您学习有所帮助。

QQ交谈客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn

第二节  图像处理详细设计

  位图详细设计

1    设备无关位图(DIB

 

VC++没有提供使用十分方便的DIB绘制方法,只好自己去创建一个实用的DIB类了。本系统中建立了一个专门的类DIB来处理设备无关位图,表41列出了对位图的操作函数。

 

 

  

ClearMemory()

释放内存

CopyHandle()

拷贝内存块

LoadDIB()

加载位图信息

ReadDIBFile()

读取位图文件信息

LightingCompensate()

进行光线补偿

PixelOffset()

修正像素值

PaintDIBTrue()

绘制DIB对象

GetColorNumber()

获取颜色总数

GetHeight()

获取DIB高度

GetWidth()

获取DIB宽度

GetSize()

获取图像数据缓冲区中的字节数

GetBitCount()

获取颜色位数

GetBiBitCount()

获取字节数

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                 61  Dib类的部分功能

 

  图像点处理详细设计

 

图像点运算是一种既简单又重要的技术,它能让用户改变图像数据占据的灰度范围,一幅输入图像经过点运算后将产生一幅新的输出图像,由输入像素点的灰度值决定相应的输出像素点的灰度值,点运算与局部运算的差别在于:后者每个输出像素的灰度值由对应输入像素的一个领域内几个像素的灰度值决定。所以,点运算不可以改变图像内的空间关系。

点运算可以按照预定的方式改变一幅图的灰度直方图。除了灰度级的改变是根据某种特定的灰度变换函数进行之外,点运算可以看作是“从像素到像素”的复制操作。如果输入图像为Axy),输出图像为Bxy),则点运算可表示为:

              Bxy = f[Axy] (式2

其中函数fD)被称为灰度变换(Gray Scale Transformation GST)函数,它描述了输入灰度值和输出灰度值之间的转换关系,一旦灰度变换函数确定,该点运算就完全被确定下来了。

点运算有时又称为对比度增强、对比度拉伸或灰度变换,它是图像数字化软件和图像显示软件的重要组成部分。下面将对本设计解决各图像点处理模块运用进行到的理论和编程实现进行详细讲述。

1、光线补偿

 

1)算法思想:

光线补偿的想法的提出主要是考虑到肤色等色彩信息经常受到光源颜色、图像采集设备的色彩偏差等因素的影响,而在整体上偏离本质色彩而向某一方向移动,即我们通常所说的色彩偏冷、偏暖、照片偏黄、便蓝等等。这种现象在艺术照片中更为常见。所以Anil K.Jain等提出,为了抵消这种整个图像中存在着的色彩偏差,我们将整个图像中所有像素亮度(是经过了非线形r-校正后的亮度)从高到低进行排列,取前5%的像素,如果这些像素的数目足够多(例如,大于100),我们就将它们的亮度作为“参考白”(Reference White),也即将它们的色彩的RGB分量值都调整为255。整幅图像的其他像素点的色彩值也都按这一调整尺度进行交换。

2 具体实现光线补偿功能:

      明白了光线补偿这功能的算法及思想,就可以编码实现其功能了,实现过程如下:

  编辑菜单IDR_MAINFRAM,先在其中添加一菜单项,将其命名为“预处理”,并在其属性栏中将其设为“弹出”菜单,点击预处理该菜单项将会弹出一个新的子菜单,此时把该子菜单命名为“光线补偿”,并把其ID设为ID_READY_LIGHTINGCONPENSATE,对应文件FaceDetectViewCpp中的函数ReadyLightingconpensate()实现,并在void  CFaceDetectView:: OnReadyLightingconpensate()中添加如下代码:

 

hDIBTemp = gDib.CopyHandle(hDIB);

gDib.LightingCompensate(hDIB);

GlobalUnlock(hDIB);

Invalidate();

 

光线补偿功能实质上是用上段代码中的LightingCompensate()函数来进行实现。函数LightingCompensate()是类DIB的一个成员函数。其核心代码如下所述:

             

              //下面的循环对图像进行光线补偿

              for(i =0;i<height;i++)

                     for(int j=0;j<width;j++)

                     {     

                            //获取像素偏移

                     lOffset = this->PixelOffset(i,j,wBytesPerLine);

 

                            //得到蓝色分量

                            *(lpData+lOffset) = colorb;

 

                            //绿色分量

                            colorb = *(lpData+lOffset+1);

                            colorb *=co;

                            if(colorb >255)

                                   colorb = 255;

                            *(lpData+lOffset+1) = colorb;

 

                            //红色分量

                            colorb = *(lpData+lOffset+2);

                            colorb *=co;

                            if(colorb >255)

                                   colorb = 255;

                            *(lpData+lOffset+2) = colorb;

 

                     }

 

 

本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT

本文选自计算机毕业设计http://myeducs.cn
论文文章部分只是部分简介,如需了解更多详情请咨询本站客服!QQ交谈QQ3710167

原创论文

设为首页 | 加入收藏 | 论文首页 |原创论文 |
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师