您好,欢迎来到测品娱乐。
搜索
您的当前位置:首页基于MATLAB的人脸光照处理系统实现(可视化界面编程)

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

来源:测品娱乐
 基于MATLAB的人脸光照处理系统实现(可视化界面编程)

目 录

摘要 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 关键词„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 1 绪论 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1 1.1 人脸光照补偿的国内外发展概况„„„„„„„„„„„„„„„„„1 1.1.1 国外发展概况„„„„„„„„„„„„„„„„„„„„„„„„1 1.1.2 国内发展概况„„„„„„„„„„„„„„„„„„„„„„„„1 1.2 人脸光照补偿的研究意义„„„„„„„„„„„„„„„„„„„„2 2 人脸光照补偿的概念 „„„„„„„„„„„„„„„„„„„„„„„2 2.1 人脸光照补偿的定义„„„„„„„„„„„„„„„„„„„„„„2 2.2 人脸光照补偿的基本步骤„„„„„„„„„„„„„„„„„„„„2 2.3 人脸光照补偿的常用方法„„„„„„„„„„„„„„„„„„„„3 2.4 人脸光照补偿的性能指标„„„„„„„„„„„„„„„„„„„„3 3 人脸光照补偿原理 „„„„„„„„„„„„„„„„„„„„„„„„4 3.1 人脸识别的实现思路„„„„„„„„„„„„„„„„„„„„„„4 3.2 人脸光照补偿的基本原理„„„„„„„„„„„„„„„„„„„„4 3.2.1 FFT变换原理 „„„„„„„„„„„„„„„„„„„„„„„4 3.2.2 DCT变换原理 „„„„„„„„„„„„„„„„„„„„„„„5 3.2.3 直方图均衡原理 „„„„„„„„„„„„„„„„„„„„„„7 3.2.4 高通滤波原理 „„„„„„„„„„„„„„„„„„„„„„„8 4 实验 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„9 4.1 可视化界面简介 „„„„„„„„„„„„„„„„„„„„„„„9 4.1.1 可视化界面设计分布 „„„„„„„„„„„„„„„„„„„„9 4.1.2 可视化界面函数 „„„„„„„„„„„„„„„„„„„„„„10 4.2 可视化界面编程 „„„„„„„„„„„„„„„„„„„„„„„11 4.3 子程序流程图 „„„„„„„„„„„„„„„„„„„„„„„„14

1

2010届电子信息工程专业毕业设计(论文)

4.4 图像处理详细设计 „„„„„„„„„„„„„„„„„„„„„„15 4.4.1 图像的预处理 „„„„„„„„„„„„„„„„„„„„„„15 4.4.2 图像的DCT光照补偿 „„„„„„„„„„„„„„„„„„„15 4.4.3 图像的FFT光照补偿 „„„„„„„„„„„„„„„„„„„16 4.2.4 图像的直方图均衡化„„„„„„„„„„„„„„„„„„„„16 5 总结分析„„„„„„„„„„„„„„„„„„„„„„„„„„„„17 5.1 演示结果 „„„„„„„„„„„„„„„„„„„„„„„„„„17 5.2 分析总结 „„„„„„„„„„„„„„„„„„„„„„„„„„19 致谢 参考文献 英语翻译 附录

2

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

重庆三峡学院物理与电子工程学院电子信息工程专业2006级 重庆万州 404100

[摘要] 对人脸在不同光照条件下进行光照补偿的问题进行了研究,通过将图片进行对数

域转变,利用直方图均衡、二维DCT和二维FFT技术对图像进行光照处理。利用二维DCT和二维FFT将图像转换到频域范围,舍弃频域中的低频分量,保留高频分量,从而解决图像中的光照过亮、过暗等,达到光照补偿的目的。并在MATLAB上演示人脸光照补偿的全过程。结果表明,这三种处理方法中,都对图像进行了光照补偿,而DCT技术比直方图均衡技术所达到的效果要好,FFT技术比DCT技术所达到的效果要好。

关键词 人脸光照补偿 离散余弦变换(DCT) 离散傅里叶变换(DFT)

1 绪论

1.1 人脸光照补偿的国内外发展概况

1.1.1 国外发展概况

计算机人脸识别技术是20世纪才逐渐发展起来的,90年代更成为科研热点。仅1990

年到1998年之间,EI(Engineering Information)可检索到的相关文献就多达数千篇。现在从工程索引上检索到的相关文献已达数万篇;包括重要国际期刊也有专栏甚至专刊报道人脸识别的最新研究进展;同时还出现了专门的国际学术会议,如人脸/手势识别国际学术会议等。

目前人脸识别领域内最著名的国际研究机构包括:美国麻省理工学院媒体实验室 (MIT >IT Media Lab)及人工智能实验室(AI Lab)、南加州大学(USC)、CMU卡内基—梅隆机器人研究及交互系统实验室、马里兰大学(UMD)等。另外,一些国家或地区也有不少研究机构在人脸识别领域进行了大量的研究工作。

1.1.2 国内发展概况

人脸识别作为生物识别领域中最自然、最可靠的技术,在中国这样一个具有世界第一庞大人口基数的发展中国家拥有非凡的地位。人脸识别应用的发展潜力在现阶段的中国体现得尤其重要,巨大的人口基数,以及越来越频繁的流动性,14亿人口的治理,如何充分利用信息技术进行有效的身份认证,一直是业内持续关注的焦点。

据各种组织和机构的报告,2005年全球生物识别市场总规模大约为56亿美金,同时国内生物识别市场的总容量大约在3.5个亿的市场规模。人脸识别中国作为发展中国家,人脸识别技术潜在市场同样巨大。在、军事安全、金融、、司法、民政、海关、边境、口岸、民航、保险以及社会安防、民用安防等领域,急需人脸识别的相关产品来填补市场空白。

3

2010届电子信息工程专业毕业设计(论文)

国内关于人脸自动识别的研究始于80年代。90年代中后期以来,国内的许多研究机构在自然科学基金、863计划、攀登计划等资助下,开始了对人脸识别的研究。其中主要包括清华大学计算机系、自动化系和电子系、哈尔滨工业大学、南京理工大学信息学院、中科院自动化所、上海交通大学图像处理与模式识别研究所、中山大学数学系等,他们在人脸识别研究领域都进行了许多很有意义的尝试,积累了经验。

人脸识别是典型的高维问题,目前人脸识别的方法有二维人脸识别和三维人脸识别两种。二维人脸识别运用比较广泛,三维人脸识别还属于实验阶段。早期人脸识别研究主要有两大方向:一是提取人脸几何特征的方法,二是模板匹配的方法。目前的研究也主要有两个方向:其一是基于整体的研究方法,它考虑了模式的整体属性;其二是基于特征分析的方法。近年来的一个趋势是:①对传统人脸识别方法的改进;②提取对光照、姿态、表情变化不敏感的特征进行人脸识别;③多种特征或多种算法融合进行人脸识别。

1.2 人脸光照补偿的研究意义

人脸识别技术广泛应用在国家公共安全、信息安全、家庭娱乐等方面。人脸识别中的光照问题是人脸识别技术中公认的还没有解决的难题,因为同一个体在不同的光照条件下会有很大的差异,所以光照问题一直是模式识别领域最具有挑战性的问题。目前人脸识别在光照变化仍然存在低性能的现状,它仍然是影响识别率的主要因素之一。

目前,虽然在受控的观测条件下,人脸图像识别可以取得比较高的识别率,但是,当光照条件或者待识别人脸的姿态变化时,识别率则急剧下降,因此,对人脸进行光照补偿是必要的。解决不同光照条件下人脸识别问题的方法主要有以下几种:提取光照变化不敏感特征方法,如变换后提取统计特征等方法;建立模拟光源模型方法,即构成一个人脸在不同光照条件下线性光照空间的方法,如熵图像等;建立不同光照下人脸模型方法,即建立人脸的3D模型方法。

2

人脸光照补偿的概念

2.1 人脸光照补偿的定义

人脸光照补偿就是利用光照条件标准化方法,对偏光、侧光导致的高光和过亮、过暗、阴影等进行补偿或者消除,解决光照对人脸变化的影响,以到达提高人脸检测和识别率的目的。其中光照条件标准化方法有:经典的直方图均衡技术、SFS技术、3D变形技术、对数域离散余弦变换(DCT)和对数小波变换等。

2.2 人脸光照补偿的基本步骤

4

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

人脸光照补偿的重要思想是:同态滤波。

同态滤波是一种建立在图像成像原理公式基础上,在频域中同时进行图像对比度增强和压缩图像亮度范围的滤波方法。其中光图像的成像原理如下式所示。

f(x,y)i(x,y)r(x,y) (2.2-1) 即把图像亮度f(x,y)看成是由入射分量(入射到景物上的光照度)i(x,y)和反射分量(景物反射的光强度)r(x,y)组成。

一般假定入射光的动态范围很大但变化缓慢,对应于图像频域的低频分量;而反射光部分变化迅速,与图像的细节部分和局部的对比度相关,对应图像频域的高频部分。因此图像增强时的基本思路是减少入射分量i(x,y),同时增加反射分量r(x,y)来改善图像f(x,y)的表现效果。

根据以上分析,同态滤波方法的实现过程是,通过对图像取对数,将图像模型中的

i(x,y)和r(x,y)的乘积运算变成简单的对数相加关系。其转换后表示为:

logf(x,y)logi(x,y)logr(x,y) (2.2-2) 这样,实际上通过求对数运算,将入射分量与反射分量的乘积项分离开,然后对数图像通过离散变换到频域,在频域中选择合适的滤波函数,进行同时减弱低频和加强高频的滤波。最后对滤波结果进行反变换,就可以得到预期的滤波结果。步骤如下:

第一,对空间域中的人脸图像f(x,y)进行对数变换,得到对数域中的图像

f0(x,y)log[f(x,y)];

第二,对f0(x,y)进行频域转换,得到频域范围内的各个分量;

第三,从f0(x,y)中减去低频分量f0'(x,y),得到光照补偿后的图像

f0(x,y)f0(x,y)f0'(x,y);

第四,对f0(x,y)频域反变换,转换为空间域中的图像。

2.3 人脸光照补偿的常用方法

人脸光照补偿的方法很多,目前包括有:提取光照不变特征、光照变化的建模、光照条件标准化等。提取光照补偿不变特征的基本思想是:提取人脸不随光照变化或至少对光照变化不敏感的特征,其中包括对人脸边缘图、人脸灰度图像的二阶导、人脸图像的二维Gabor变换等。对于光照变化的建模,其主要思想是在一个合适的子空间中表示光照引起的变化,然后对人脸的特征估计模型参数,包括子空间投影法、熵图像法、光照锥法和基于球面谐波基图像的方法等光照条件标准化方法的基本思想是在人脸图像被识别之前消除光照变化的影响。

2.4 人脸光照补偿的性能指标

人脸光照补偿的性能可以通过人的肉眼分辨出补偿效果。光照是否均匀、有无阴影、人脸主要轮廓显现、偏暗、偏亮等都是光照补偿性能判别的依据。

5

2010届电子信息工程专业毕业设计(论文)

3.人脸光照补偿原理

3.1 人脸光照补偿的实现思路

首先对图像进行对数转变,通过取对数后,原来空间域中的相乘关系变成了对数域中的相加关系,再减去对数域中非均匀光照分量,就相当于在空间域中实现了光照补偿。另外,对数变换可以通过扩大较暗部分像素的值从而起到图像增强的作用,所以,在受光照影响较大时直接在对数域进行特征提取往往会取得较好的结果。

然后选择方法对图像进行频域转变。离散余弦变换(DCT)可以将图像从空间域转换到频域,而光照变化主要影响的就是低频部分,这样通过选择适当的参数丢弃一定的低频DCT系数,这一简单的操作就可以有效的实现光照补偿。快速傅里叶变换(FFT)也如此,通过对图像进行卷积,转化为频域图像,再通过高通滤波将低频部分过滤出去,即将光照部分的内容除去,留下来的就是补偿过后的图像。

其次对转化后的图像进行高通滤波。图像的频域变换有一个非常突出的优点,就是可以将信号的信息强度进行重新分配。具体地说,就是将图像的细节部分集中在高频区段。因此,通过图像高通滤波将图像中的细节信息提取出来。保持高频部分信息不变,而低频信息被完全抑制。DCT变换后的图像,低频分量主要分布在左上角,在滤波过程中,对图像矩阵的左上角数据赋值为0,再经过DCT反变换,从而达到高通滤波的目的,留下图像的边界和高频部分的内容。FFT变换后的图像,低频分量主要集中在中心位置以及中心十字区域,以中心区域为圆心,取合适的半径为范围进行筛选,滤出其中的低频分量,再经过FFT反变换,就完成了高通滤波的任务,也就达到了光照补偿的效果。

最后与传统的直方图均衡作比较。

3.2 人脸光照补偿的基本原理

3.2.1 FFT变换原理

图像经过快速傅里叶(FFT)变换之后,可以获得原图像信号的频域分布情况,时域和频域形成了对偶运算关系,通过傅里叶变换也可以达到某些运算的简化目的。由于图像中不同特征的像素具有不同的频域特征,因此,可以在频域上设计相关的滤波器,以达到滤除某些信息,或者保留某些信息的目的。在图像处理的广泛应用领域中,傅里叶变换起着非常重要的作用,具体表现在图像分析,图像增强以及图像压缩等方面。

傅里叶变换是线性系统分析的一个有力工具,它能够定量分析注入数字化系统、采样点、电子放大器、卷积滤波器、噪声和显示点等作用。傅里叶变换能将满足一定条件的某个函数表示成三角函数(正余/余弦函数)或者它们的积分的线性组合。

在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。卷积定理指出:傅里叶变换可以化复杂的卷积运算为简单的乘积运算,从而提供了计算卷积的一种简单手段。离散形式的傅里叶变换可以利用数字计算机快速的算出(其算

6

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

法称为快速傅里叶变换算法(FFT))。

二维傅里叶变换及逆变换定义如下:

Fu,vfx,yej2uxvydxdy fx,yFu,vej2uxvydudv (3.2-1)

图像的傅里叶变换与一维信号的傅里叶变换一样,有快速算法。在实际生产研究中,有专门实现傅里叶变换的芯片,可以实现实时的傅里叶变换。快速傅里叶变换虽然没有对傅氏变换理论做进一步补充,但是对于在计算机系统或者说数字系统中应用离散傅里叶变换,可以说是进了一大步。

在计算机上使用的傅里叶变换通常是离散形式的,即离散傅里叶变换(DFT)。使用离散傅里叶变换的根本原理有:第一,DFT的输入、输出均为离散形式的,有利于计算机处理;第二,计算DFT存在快速算法——快速傅里叶变换。

假设对函数f(x)在N个等间隔点进行采样,得到离散化的函数

f(n)(n1,2,...,N1),定义一维傅里叶正反变换对形式如下:

F(k)f(n)en0N1j2nkNn,k0,1,...,N1 (3.2-2)

j2nk1N1 f(n)F(k)eNn,k0,1,...,N1 (3.2-3)

Nk0类似于一维傅里叶变换,二维傅里叶变换公式如下:

F(u,v)x0M1f(x,y)ey0N1j2uxj2vyMN u0,1,...,M1;v0,1,...,N1 (3.2-4)

二维傅里叶反变换公式如下:

1f(x,y)MNM1u0F(u,v)ev0N1j2uxj2vyMN u0,1,...,M1;v0,1,...,N1 (3.2-5)

其中M,N为傅里叶变换的后矩阵的行向量与列向量,记作M×N。离散傅里叶变换(DFT)是信号分析与处理中最基本的方法。但是直接计算DFT时,其运算量与变换长度N的平方成正比。所以当N较大时,计算量太大。在计算快速傅里叶变换(FFT)出现之前,直接用DFT算法进行谱分析和信号的实时处理是不实际的。FFT使得DFT的运算效率大大的提高了,为数字信号处理技术应用于各种信号的实时处理创造了条件,推动了数字信号处理技术的发展。

3.2.2 DCT变换原理

DCT属于图像压缩的一种,用于去除图像数据的空间冗余。DCT是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换,但是只使用实数。离散余弦变换相当于一个长度大概

7

2010届电子信息工程专业毕业设计(论文)

是它两倍的离散傅里叶变换变换。DCT变换就是将图像光照矩阵时域信号变换到系数空间频域信号上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用DCT变换在频域上减少量化比特数,从而达到压缩的目的。

离散余弦变换可以直接使用Matlab提供的DCT2和IDCT2函数来进行。由于大多数图像的高频分量较小,相应于图像高频分量的系数经常为零,加上人眼对高频成分的失真不大敏感,所以可以把其中的高频分量系数置零,然后观察重构的图像会什么变化。

二维离散余弦变换的定义如下:

Bp,qpqAMNcos2m1p2Mcos2n1q2N (3.2-6)

p0,1,2,,M1 q0,1,2,,N1 p12,P0,P,1PM1 MM12,q0,q,1qN1 NN q其中Bp,q称为矩阵A的DCT系数,M,N是DCT转换后矩阵的行向量与列向量,记作M×N。在MATLAB中矩阵的下标从1开始而不是从0开始。 二维离散余弦反变换的定义如下:

AMNpqBp,qcos2m1p2Mcos2n1q2N (3.2-7)

m0,1,2,,M1 n0,1,2,,N1 p12,P0,P,1PM1 MM12,q0,q,1qN1 NN qDCT变换(离散余弦变换)是数字图像处理以及信号处理中常用的变换,它是一种正交变换,其相关的性能接近于K-L变换。给定数字图像f(m,n)后,可以将它看成一个二维列阵,大小为M×N,对它进行DCT变换,如式所示:

Fs,tcsct2MNM1N12n1tfm,ncos2m1scos 2M2Nm0n0 (3.2-8)

8

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

其中,

1,s1,2,3,,M1 cs1

,s021,t1,2,3,,N1 ct1

2,t0DCT反余弦变换如下所示:

2Fm,nMNM1N1csctFs,tcoscos2n1t 2M2m1s2Ns0t0(3.2-9)

3.2.3 直方图均衡原理

直方图是用来表达一帧图像灰度级分布情况的图表。图像直方图反映了不同灰度值的像素的面积或像素个数在一帧中的比例,反映了图像的某些信息。直方均衡就是把一幅已知灰度概率分布的图像,经过一种变换,使之变成具有均衡概率分布的图像。直方图均衡化是灰度变换的一个重要应用,广泛应用在图像增强处理中,它是以累计分布函数变换为基础的直方图修正法,可以产生一幅灰度级分布具有均匀概率密度的图像,扩展了像素的取值动态范围。

直方图均衡方法的基本原理是:对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并。从而达到清晰图像的目的。

图像的灰度统计直方图是一个一维离散函数:

p(sk)nk/n,k0,1,...,L1 (3.2-10)

上式中sk是图像f(x,y)的第k级灰度值,nk是f(x,y)中具有灰度值sk的像素的个数,n是图像中像素的总数。由定义式可知,p(sk)给出了对sk出现概率的一个估计,所以直方图表明了图像中灰度值的分布情况。因此可以通过改变直方图的形状来达到增强图像对比度的效果。而直方图均衡化的基本思想就是把原始图像的直方图变换成均匀分布的形式,这样就增加了像素灰度值的动态范围,从而达到了增强图像整体对比度的效果。具体方法是:

第一, 给出原始图像的所有灰度级sk,k0,1,...,L1。 第二, 统计原始图像各灰度级的像素数nk。

9

2010届电子信息工程专业毕业设计(论文)

第三, 用式计算原始图像的直方图。 第四, 计算原始图像的累积直方图:

kni tkEH(sk)ps(si),0sk1,k1,2,...,L1 (3.2-11)

ni0i0k第五, 取整计算:

tkint N1tkk/N (3.2-12)

第六, 确定映射关系sk tk。

第七, 统计新直方图各灰度级的像素数nk。 第八, 计算新的直方图:

pt(tk)nk/ n (3.2-13)

3.2.4 高通滤波原理

滤波器主要功能是对信息进行处理,保留信息中有用成分,去除信息中无用的成分。按频域特性的不同可分为低通、高通、带通、带阻滤波器。其中MATLAB高通滤波是只对低于某一给定频率成分进行抑制,使得中频和高频的信息保留,也称低截止滤波器。

巴特沃斯高通滤波对光照不足的图像进行灰度范围压缩和对比度增强效果显著。 N阶截断频率为d0的Butterworth高通滤波器的转移函数为:

H(u,v)其中,d(u,v)

1 (3.2-14)

1[d0/d(u,v)]2n(uM/2)2(vN/2)2

图1 巴特沃斯高通传递函数截面图

因为边缘及灰度级中其他的急剧变化都与高频分量有关,在频率中用高通滤波器处理,能够获得图像尖锐化。高通滤波器衰减傅里叶变换中的低频分量,而无损傅里叶变换中的高频信息。

在频域中实现高通滤波,滤波的数学表达式是:

10

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

G(u,v)H(u,v)F(u,v) (3.2-15)

其中,F(u,v)是源图像的傅里叶频谱,G(u,v)是锐化后图像的傅里叶频谱,H(u,v)是滤波器的转移函数(即频谱响应)。那么对高通滤波器而言,H(u,v)使高频分量通过,低频分量抑制。

巴特沃斯高通滤波器,N阶的具有D0截止频率的巴特沃斯高通滤波器(BHPF)的传递函数定义为:

0,Du,vD0 Hu,v (3.2-16)

1,Du,vD0式中,D(u,v)(uv)是点(u,v)到频率平面原点的距离,值得注意的是:当

2122Du,vD0时,H(u,v)下降到最大值的1/2。通常是用这样的方法来选择截止频率的,使该点处的H(u,v)下降到最大值的12。此式易于修改成使它本身满足这一约束条件,即利用下式:

H(u,v)121D/D(u,v)012n (3.2-17)

截止频率d0越大,滤掉的低频成分越多,同样损失的高频成分也越多,如何确定截止频率是巴特沃斯高通滤波的关键。一般来说,通过傅里叶变换后的低频分量大多集中在图像的中心位置,选择半径以内的圆作为滤波范围,这样既可以滤出内圈的低频成分,又能保留大部分的高频成分。

4 实验

4.1 可视化界面简介

图形化用户界面(Graphical User Interfaces,以下简称为GUI)是一种图形化的沟通界面,通过此界面可以很方便地达到一些特定控制的操作,而这些界面又是由按钮、窗口、工具栏、键盘操作等对象所构成的,以方便借助这些界面调用MATLAB来进行运算处理操作。GUI是未来的趋势,因为人类对于图像辨识的能力远超过其他表达方式,因此借助GUI程序能够设计出专属某个主题的图形化界面,使初次接触的使用者也能够快速且容易地上手。

4.1.1 可视化界面设计分布

整体来说,MATLAB中GUI的建立有两大方式。第一种是直接通过程序编写的方式产生对象,即利用uicontrol、uimenu、uicontextmenu等函数以编写M文件的方式来开发整个GUI。此种方式的优点在于GUI菜单的建立比较齐全,并且不会额外的产生一个.fig文件,并且程序代码的通用性非常高。

11

2010届电子信息工程专业毕业设计(论文)

第二种是建立GUI时使用GUIDE编辑器。直接在MATLAB命令窗口中输入guide,或者单击GUIDE编辑器按钮,就可以打开界面,这使得GUI更加灵活、具有弹性。其中菜单编辑和Callback的建立最为重要。

可视化界面分为四个部分,包括布局编辑器、属性检查器、菜单编辑器和回调子程序组成。

布局编辑器用于让用户选择合适的GUIDE组件,放在布局域(Layout Area)的适当位置上,以此设计自己的图形用户界面,一旦被激活,布局区域就成为图形窗口,组件面板(Component Palette)中包含了用户可选的图形控件对象。这个时候,编辑程序界面如同VC和VB中编辑程序界面一样,变得简单而且非常直观。

在布局区域选择某个图形组件,再单击属性检查器工具条按钮(Property Inspector),则弹出其属性检查器对话框,可用于检查和修改图形对象的某些属性。简单的属性设置包括背景颜色、位置、属性大小、类型等等。

菜单编辑器主要用途是建立GUI菜单,可以创建两类菜单,包含菜单条对象(Menu Bar),显示为图形窗口的菜单;上下文菜单(Conext Menus),当用户右键点击图形对象时弹出的菜单。

回调函数(Callback)是在图形对象被选中时执行的一段代码,某个按钮被按下时程序执行什么操作,某个图形被选中又执行什么操作等。它是图形对象的属性,常见的函数包括CreateFcn、ButtonDownFcn、DeleteFcn等,都是Push按钮图形对象的属性。回调函数的代码体一般具有如下结构:

1)获得触发动作的对象(提供事件、信息、数据值的对象)的句柄; 2)获得将受影响的对象(其属性将要被修改的对象)的句柄; 3)获得必要地信息和数据值; 4)对数据进行必要地处理和加工; 5)设置受影响的对象的属性等。

Callback的程序编辑在M文件中,专门有Callback程序编辑区。我们所做的就是将执行程序写入M文件中,并保存文件。通过执行运行GUI的按钮,就会产生出相应的结果。

4.1.2 可视化界面相关函数 1) 句柄值的设置与获取:

句柄值是进入GUI所不可缺少的基本概念,要建立一个具有弹性多功能的GUI,就必须先对对象进行句柄赋值。图面上的每一个对象都有自己对应的句柄值,因此可以根据句柄值来设置或获取相对应图形对象的属性值,也就是通过图形对象的句柄值就可以一一设置对象的一些相关属性。

在MATLAB中通过findobj函数可以获得对象句柄值,使用方式如下: H=findobj : 返回根(Root)对象与其子对象的句柄值。 H=findobj(Handles) : 返回该Handles变量的句柄值。

H=findobj(‘属性名称’,‘属性值’) : 根据对象的属性名称和属性值找出相匹配的对象句柄值。

12

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

在GUIDE界面编程中,先将对象当前的属性名称与对应的属性值使用get返回,然后对特定的属性通过set查询可以设置的属性值有哪些,以及对对象的修改。

设置句柄值的函数为:setappdata函数,使用方式如下。

Setappdata(H,NAME,VALUE) 由定义的对象中建立一个变量名称为NAME而内容为VALUE的值。其中H为对象句柄值,如果该变量不存在,则MATLAB自动设置NAME和VALUE。

VALUE=getappdata(H,NAME) 由定义的对象中获取变量名称为NAME的值。其中H为对象的句柄值,如果该变量不存在,则MATLAB会返回一个空矩阵。 2) 回调(Callback)函数:

回调函数必须使用到对象的句柄值,在M-file Editor中,可以直接在文本框中输入要执行的MATLAB语句,不过此种方式由于文本框宽度的,因此仅能输入一定长度的Callback,当用户的Callback比较短时,是可以直接在文本框中写入程序的,但当Callback非常长时,将会非常不适合,这时候就必须通过GUIDE的M文件来编辑Callback了,同样地,使用此种做法的Callback文本框必须设置为默认的%automatic,当GUIDE存储后,就可以在M文件中编辑了。

每个Callback都是一个的接口,因此默认时,变量是无法相互传递的,也就是说,就算我们设置一样的变量在每个Callback中进行运算,也是不会造成运算操作的混乱。但是如果需要变量的传递时候,就要用到对象的句柄值。

类似的Callback的形式为:

function pushbutton1_Callback(hobject,eventdata,handles)

hobject:就是这个控制元的句柄,如同所有MATLAB里面的句柄用法相同。 eventdata:返回数据库事件的信息,激发事件通知时调用。

Handles:这是使用GUIDE建立的GUI最重要的一个参数,GUIDE所有建立的控制元的句柄全部放在handles里面。 3)set函数和get函数:

Set函数:在MATLAB中通过set函数可以取得图形对象的属性值。其中格式为: Set(h,’属性名称’,‘属性值’),其中h为对象的句柄值。

Get函数:在MATLAB中通过get函数可以取得图形对象的属性值。其中格式为: Get(h,{‘属性名称1’,‘属性名称2’,···}),其中h为对象的句柄值。

4.2 系统可视化界面编程

步骤一:直接在MATLAB命令窗口中输入guide,或者单击Desktop工具栏上的GUIDE按钮,打开MATLAB的GUIDE编辑器。界面如下图所示。

13

2010届电子信息工程专业毕业设计(论文)

图1 GUIDE编辑器界面

步骤二:分别在主界面中建立以axes_src、axes_hist、axes_ddst和axes_fdst为Tag属性名称的坐标轴;建立以“人脸光照补偿系统”为标题的Edit Text;建立以“DCT”、“FFT”、“Histeq”和“Save”为Tag属性名称的Push Button按钮;分别为四个axes坐标轴设置注解;建立名为“文件”的菜单选项,在“文件”内又加设“打开”和“退出”菜单按钮;保存界面,命名为FACESystem.figure如下图所示。

图2 运行出后的界面图

步骤三:打开M-file Editor(M文件编辑器),对其中空缺的地方写入相应的程序。其中在FACESystem_OpeningFcn()的空缺处设置全局变量,目的在于让原图数据成为共享变量;在m_file_open_Callback()的空缺处写入图像读入窗口的程序;在m_file_eixt_Callback()的空缺处写入退出界面的程序;在m_dct_Callback()的空缺处写入DCT变换后的光照补偿程序,其中m_dct.m是子函数;在m_fft_Callback()的空缺处写

14

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

入FFT变换后的光照补偿程序,其中m_fft.m是子函数;在m_hist_Callback()的空缺处写入Histeq的程序,其中m_hist.m是子函数;在m_save_Callback()的空缺处写入保存处理后的图像;保存程序,并命名为FACESystem.m。部分程序截图如下所示。

图3 GUIDE的M-file文件

步骤四:程序添加完成后,将子函数m_dct.m,m_fft.m和m_hist.m保存在同一个工

作文件内,运行FACESystem.m,如果程序有误,对程序进行调试,直到程序无误,自动产生fig界面。并打开“文件”下的“打开”选项,将原图像读入左边的坐标轴内。如下图所示。

图4 打开处理前的图像

步骤五:点击Histeq、DCT和FFT按钮,结果会产生处理后的图像。并将图像保存起来。如下图所示。

15

2010届电子信息工程专业毕业设计(论文)

图5 光照补偿后的图片

4.3 子程序流程图

本章主要对图像处理这一模块进行详细介绍,对图像DCT转换和FFT转换的算法及具体实现光照补偿进行了详细的讲述。

定义输入矢量维数 原图 [M,N]=size(I) 原图 对数变换 DCT变换 对数变换 图像矩阵I(m,n) 设置R0 For m=1:M,n=1:N FFT变换 r22m1n1 高通滤波 高通滤波 N r≦r0 DCT反变换 Y FFT反变换 I(m,n)=0 显示处理后的图像 显示处理后的图像

DCT反变换 图6 DCT光照补偿流程图 图7 FFT变换的光照补偿流程图 图8 滤波范围

16

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

4.4 图像处理详细设计

4.4.1 图像的预处理

对数变换是本研究的一个预处理方法,通过对灰度图像进行对数变换,将图像转换为对数域。

先读取人脸图像数据库,转换图像的数据为双精度型,然后对图像进行对数转换。代码如下。其中重要的函数为:X=log(x0)。

x0=imread('yaleB.bmp');%读取人脸图像数据库中的图像 x1=double(x0)+1;%转换为双精度型 x2=log(x1);%对图像进行对数转换

4.4.2 图像的DCT光照补偿

DCT变换主要是将图像变化为频域图像,为频域图像选择合适的滤波范围,再进行高通滤波,然后换变换为时域图像,得到光照补偿后的图像。因为通过转变后的低频分量分布在左上角,此时,以左上顶点为圆心,选择合适的半径将低频分量强制为零。设此图像矩阵为M×N,变量为m、n,分别从1取到M、N,半径则为r在了。

输入一张原图,改变滤波范围,补偿后的图像对比如下图所示:

r0=min(M,N)/2 r0 = min(M,N)/16 r0 = min(M,N)/ r0 = min(M,N)/128

图9 (DCT)不同滤波范围对比图

结果表明,取值不同,光照补偿的效果不同,当r≦r0 = min(M,N)/时,补偿效果为最佳。

17

(m1)2(n1)2 。取r小于一个

数,就定义I(m,n)=0,这样在左上角r以内的分量就滤出。图像灰暗的部分自然就不存

2010届电子信息工程专业毕业设计(论文)

4.4.3 图像的FFT光照补偿

快速傅里叶变换(FFT2)也是将图像转换为频域图像,图像低频分量集中在中心位置,高频分量分布在中心以外。因此可以利用Butterworth高通滤波器来进行滤波。代码如下。其中用到的重要函数是:fft2()、fftshift()、ifft2()以及ifftshift().

输入一张原图,改变高通滤波的截止频率,补偿后的图像对比如下图所示:

d0=1 d0=2 d0=3 d0=4

图10 (FFT)不同滤波频率对比图

结果表明,选择频率d0为2时补偿效果最佳。

4.4.4 图像的直方图均衡化

在MATLAB中直方图均衡化的程序简单,用histeq函数。

直方图均衡化

图11 直方图均衡化

18

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

5 总结分析

5.1 演示结果

每一个不同光照或者不同方向的人脸图像,通过DCT和FFT转换后补偿的图像效果是不同的,我们要通过分别设定滤波的范围,来得到最佳的补偿效果。下面是通过实验将一些列人脸图像光照补偿到最佳的对比图像。

1)不同光照效果的人脸图,利用DCT变换后补偿效果说明:

图12 原图

图13 直方图均衡处理图

图14 r≦r0=min(M,N)/16

图15 r≦r0=min(M,N)/32

图16 r≦r0=min(M,N)/

图17 最佳补偿效果图

19

2010届电子信息工程专业毕业设计(论文)

3) 不同光照效果的人脸图,利用FFT转变后补偿效果说明:

图18 原图

图19 直方图均衡处理图

图20 截止频率d0=2

图21 截止频率d0=3

图22 截止频率d0=4

图23 最佳补偿效果图

20

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

4) DCT变换和FFT变换后最佳补偿效果对比说明:

图24 直方图均衡处理图

图25 DCT变换后最佳补偿图

图26 FFT变换后最佳补偿效果图

通过三组对比实验表明,许多原始图像中看不清的细节在直方图均衡化处理后所得的图像中都变得十分清晰;通过DCT和FFT技术对图像进行光照补偿后,光照明显得到了补偿,特别是在侧光、暗光以及阴影的地方都有了明显的光照补偿效果。比起原图,提高了人脸的识别率。相比之下,直方图均衡处理后的清晰度最小,DCT技术更好的调试了整体光照的均匀程度,效果在直方图均衡化之上,而FFT技术更强调了灰白的对比程度,大多数阴影的部分都滤出了,其效果在DCT技术之上。因此,用DCT和FFT技术所达到的光照补偿的效果是不一样的。

当然,此对比图像还有更好的补偿点,作为与原图比较而言,此次实验已经达到了目的,证明了用DCT和FFT技术是可以对图像进行光照补偿的。

5.2 分析总结

历经了几个月的奋战,紧张而充实的毕业设计终于落下了帷幕。时至今日,论文基本完成,从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,最后到实际操作,整个毕业设计过程难以用语言来表达。回想这段日子的经历和感受,我感慨万千,在这次毕业设计的过程中,我拥有了无数难忘的回忆和收获。

首先,在设计我的论文过程中我确确实实的学到了知识,对数字图像处理有了深刻的理解,对图像光照补偿的原理和算法有了实质上的掌握。MATLAB把灰度图像存储为一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素,矩阵中的元素可以是双精度的浮点数类型、8位或16位误符号的整数类型。所以我们用离散余弦变换(DCT)将灰度图像转换到频域区域,又因为图像的低频部分反映了图像的概貌,高频部分反映了图像的细节,根据这

21

2010届电子信息工程专业毕业设计(论文)

个分布,就可以在频域中对图像进行光照处理了。这是做此次设计的基本方针,也是基本的思想。

找到了方法就是最好的开头,接下来就是具体实现了。要明白离散余弦变换和快速傅里叶变换的基本原理和算法,并能通过MATLAB软件对图像进行这两种转变。在理论上,我花了时间去理解两种变换的计算方法,也找到了正变换和反变换之间的关系。接着,就在MATLAB 7.0的编程软件中进行了实际操作。在MATLAB中找到DCT和FFT变换的函数,一开始只产生出了变换的频域图,并没有对图像的光照进行补偿,但我发现,做到此时,得到的结果与理论相符,这就证明了理论的正确,对下一步的光照滤波奠定了坚实的基础。

最重要的一步就是对图像的低频部分滤波,这是本次设计的重点。通过对所有的转变后的频域图的观察,总结出了两点:第一,DCT变换后的低频信号都集中在左上角,这部分数据就是要通过滤波器滤出的;第二,FFT变换后,其幅频图的四个角上比较亮,而在中心部分比较暗,再将幅频图进行四个对角子块的置换,这样,低频部分集中在图像的中心部分,这样就方便滤波。在DCT技术中,我用取半径的方法对幅频图进行滤波,在FFT技术中,我用巴特沃斯高通滤波的方法对其进行滤波。与原图相比,光照补偿的效果显而易见。

程序达到了讨论的目的,最后要做的就是,用一个简单的用户界面将整个程序输入进去,用方便可观的可视化方式表达出来。这一课也是我初次接触,为了熟悉可视化的编程,我认真地学习了句柄和GUIDE界面操作的方法,并演示了可视化界面的实例,总结了可视化编程的方法:首先,要制作出界面,包括图像窗口、操作按钮、菜单编辑等,并做保存;然后将子函数添加到相应的操作程序中,做好参数传递的连接,以及运行调试;最后,待到所有程序无误后,在界面上演示出所要表达出的设计效果来。

完整的论文设计即将完成,怎样才能让别人详细而可观的清楚人脸光照补偿,这就需要把这几个月以来的收获整理成为完整的报告。包括论文的提纲、内容、操作与分析总结,无疑不是论文的重点,从刚拿到论文题目开始,我就开始收集相关资料,了解基本算法原理,对人脸识别的英文文献进行翻译。完成资料后,了解人脸光照补偿的概念和方法,实现程序代码,熟练可视化编程平台。演示系统调试成功后,获取实验数据,撰写毕业论文。一切的努力都没有白费,至今为止,我摆脱了单纯的理论知识学习,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际工程问题的能力,同时也提高了我查阅文献资料、设计概括以及用户界面编程等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都是我的能力得到了锻炼,经验得到了丰富,其他意志耐力也都得到了不同程度的提升。这是我进行毕业设计的目的所在。

整个毕业设计在系统的开发和撰写的过程,也是我越来越认识到自己知识与经验缺乏的过程。我尽可能的收集资料,竭尽所能的运用自己所学的知识进行系统编程和写作,但是论文还是存在了许多不足之处。首先,在收集人脸光照补偿的发展状况时,我尽可能的收集了关于人脸识别的发展情况,而光照补偿的发展资料寥寥无几,所以,在报告中没有详细的介绍人脸光照补偿的发展概况;其次,在设计可视化界面时,也有些地方不尽人意,可视化的界面还可以做一些功能上的改进,例如菜单上可添加更多的功能按钮。最后,在与传统的直方图均衡作比较时,可能还有最佳的补偿效果。这些不足之处,在老师的指导下都有了一定的改善,但这也提醒我在今后的学习实践中有待改进。

22

基于MATLAB的人脸光照处理系统实现(可视化界面编程)

致谢

在这次毕业设计中,最应该感谢的是我的指导老师——聂祥飞老师。在很多时候,遇到设计的瓶颈问题时,老师给了我很大的提示和指导,可以说没有老师的指导,论文的设计根本没办法进行。老师不仅提供了许多又价值的资料,也给我提出了宝贵的意见,在我的论文中无不倾注了老师辛勤的汗水和心血,老师的严谨态度、渊博的知识、无私的奉献精神使我深受感动和启迪。在此我要向我的导师致以最衷心的感谢和深深的敬意。

参考文献

[1]边肇祺,张学工编著.模式识别(第二版).北京:清华大学出版社,2002 [2]李显宏编著.界面设计与编译技巧.北京:电子工业出版社,2006 [3]孙兆林编著.MATLAB 6.X图像处理.北京:清华大学出版社,2002 [4]章毓晋编著.图像处理和分析.北京:清华大学出版社,1999

[5] 聂祥飞,王宝海,谭泽富主编.MATLAB程序设计以及在信号处理中的应用.成都:西南交通大学出版社,2005

[6]徐飞,施晓红等编著.MATLAB应用图像处理.西安:西安电子科技大学出版社,2002 [7] 陈桂明,张明照,威红鱼编著.应用MATLAB语言处理数字信号和数字图像.北京:科学出版社,2000

[8]阮秋琦编著.数字图像处理.北京:电子工业出版社,2001 [9]http://www.cnki.net(中国知网)中文科技期刊中的相关资料 [10]http://www.face-rec.org中的相关英文资料

Face illumination compensation based on MATLAB

( Graphical User Interfaces programming)

Wang dan

(Physics and Electronic Engineering Dept. Chongqing Three Gorges University, Wanzhou 404000)

ABSTRACT The face in different lighting conditions, exposure to light the issue of

compensation for illumination has been stuied, by changing the picture of the number field, using histogram equalization, two-dimensional DCT, and two-dimensional FFT techniques to dispose of the image illumination. Using two-dimensional DCT and two-dimensional FFT to change image into the frequency domain range, abandon of the frequency domain of the low frequency components and retain high frequency components, thereby, solve the image of the light is too bright, too dark, etc., to achieve the purpose of illumination compensation. And in MATLAB's graphical user interface shows the full face illumination

23

2010届电子信息工程专业毕业设计(论文)

compensation process. The results show that the three processing methods deal with the images of the illumination compensation, the effect of the DCT technology better than histogram equalization of technology, and the effect of FFT technology better than the the DCT technology.

KEY WORDS Face Illumination Compensation ; Discrete cosine transform (DCT);

discrete Fourier transform (DFT)

24

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务