《人工神经网络在图像处理与识别中的应用毕业论文(20页).docx》由会员分享,可在线阅读,更多相关《人工神经网络在图像处理与识别中的应用毕业论文(20页).docx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-人工神经网络在图像处理与识别中的应用毕业论文-第 21 页人工神经网络应用于图像识别与处理摘要有几种方法可用于图像识别。在这些方法中,软计算模型在数字图像中应用已被认为是一种获得更好结果的方法。本工作的主要目的是为图像识别提供一种新方法人工神经网络。最初的原始灰度图像已经被转型。将输入图像加进椒盐噪声,然后将带有噪声的图像经过一个自适应中值滤波器,滤除噪声,输出图像就可以视为过滤图像。参考存储在原始数据矩阵中的值,计算出估计误差和平均误差的值存储在过滤图像矩阵中,以便检查进行适当噪声滤除的效果。现在将每个像素数据从十进制数转化成八位二进制数,四个一组的像素已经在一起形成一个新的32位二进制数
2、并转换成一个十进制数,这个过程将用新的不同组值持续产生新的数据矩阵。这个数据矩阵将被作为原始数据矩阵存储在数据银行。现在用来识别,一个新的测试图像已采取和插入椒盐噪声相同的步骤,正如前面提到的,采用自适应中值滤波去除噪声,从而得到一个新的测试矩阵。现在,相对于原始图像,第二个图像的平均误差是基于这两个生成矩阵计算出来的。如果这个平均误差大于45%,我们就可以得出结论,图像是不同的,无法匹配。但如果平均误差值已发现是小于或等于45%,我们做出尝试,相对于原始数据矩阵,将人工神经网络应用于测试数据矩阵,从而产生第二个图像(测试图像)的一个新矩阵。对测试数据矩阵应用人工神经网络之后产生生成数据矩阵,
3、通过这个生成数据矩阵,可以计算出总的平均误差,从而检查是否可以作出正确的识别。已观察得到,平均误差的值小于没有应用人工神经网络的测试图像的值。此外,还观察到,测试图像相对于原始图像是可以被识别和匹配的。关键词:数字图像处理 人工神经网络 前馈BP神经网络 灰度图 像 椒盐噪声 自适应中值滤波器第一章 引言图像处理的主要目的是改变视觉的影响,这样信息量大大提高,使得所述图像比原始图像更清晰。这种技术有助于我们获得图像中我们感兴趣的部分或特征的更好的清晰度,并且抑制图像中其他部分或特征的信息。图像识别一直致力于,从一组身份已知的标签中寻找图像中被观察目标的身份。可用的识别技术有许多种,但是对于选择
4、何种技术最合适主要取决于给定的手头任务和一些其它的相关参数。软计算是建立在模糊逻辑,人工神经网络,进化计算,机器学习等一些最新技术之上的一种新兴领域。每种软计算技术都可以应用于,产生因太复杂或嘈杂而无法用常规方法处理的任何问题的解决方法。本文将利于人工神经网络,提供一种图像处理与识别的新方法。人工神经网络已成为灵感来自于生物神经网络的一个最新发展工具。这个新的强大工具的主要优势是,它具有靠传统计算方法不太容易解决问题的能力。传统的计算机采用逐步解决问题的方法,且每一步都需要很好定义并且必须保证是可计算的。如果其中计算机需要遵循的任何一步是未知的,计算机将无法解决问题。所以利用计算机解决问题需要
5、事先掌握如何解决这个问题的所有知识。而人工神经网络是一种新技术,它采用的是一种与传统计算方法不同的解决问题的方式。或许人工神经网络之所以被认为更强大,是因为它可以解决一些还不能准确知道如何去解决的问题。人工神经网络的应用已经扩展到广泛的领域,如图像识别,指纹识别等。人工神经网络有能力适应,学习,推广和组织数据。一些已知的人工神经网络结构有感知器网络,线性神经网络,Madaline网络, Kohonen网络,反向传播网络。第二章 相关工作数字计算机 1 的出现和现代学习与神经处理理论的发展都发生在大约同一时期,即二十世纪40年代后期。在计算机上进行人工神经系统 2 的研究(ANS)仍然是生物医学
6、研究的一个活跃领域。自那时以来,数字计算机已作为一种工具被用来建立单个神经元以及神经元簇的模型,这就是所谓的神经网络。源自统计模式识别的传统技术一直很流行,直到20世纪90年代初期。在新的时代,2000,Robert P.W.Duin和毛建昌 3 给了我们作了一个全面的总结并对模式识别中一些众所周知的方法进行了比较。给出的评论主要针对统计方法。人工神经网络(ANN)在这只作为一部分被讨论。由于发现,对于进行特征识别,统计方法或多或少存在着一般数学方法的不可用性。一个新的基于轮廓特征值计算的特征提取方法被提出,并发现利用前馈神经网络可以得到令人满意的结果4。人工神经网络已经越来越多地被用来作为一
7、种传统模式分类器及聚类技术的替代。在医学图像处理领域,Kenji Suzuki 5 比较了基于像素和非基于像素的人工神经网络方法,结果证明,当涉及到分割和特征计算,前者效果更好。本文还认为,进行大量的人工神经网络训练可用于图像增强。1993,在一个关于图像分割的评论文章中,Pal就预言,神经网络将被广泛的应用于图像处理中。基于神经网络的分割技术,被发现显示出了强大功能。在医学图像处理领域的另一个相关工作证实了这种基于神经网络的分割技术。该方法结合了实时应用的方法。从而一种混合神经网络被提了出来 8 。与特征脸方法相比,这种混合神经网络的方法显示发现的错误率产生了令人满意的结果。在人工神经网络前
8、进方向上,一个更为实时的方法已经显示出,如何完成对一个处在杂乱海滩场景9里的人的检测和量化,这显示出了基于神经的分类系统。一种用平行的Hopfield神经网络 10 完成对暗淡面部图像识别的方法,在识别率上显示出了令人鼓舞的结果。2007年,一项基于Hopfield神经网络的研究发表,在这项研究中,关于这个概念宽泛的理论综述被提了出来。目标识别包括在一副图像中定位目标实例的相应位置及可能的方向和尺度,这样做的目的大概也是为了给检测到的目标指定一个分类标签。一些其他类型的人工神经网络,如前馈人工神经网络方法也可以被用于目标识别。前馈网络通常由三到四层按逻辑排列的神经元组成。第一层和最后一层分别是
9、输入层和输出层,在其它层之间通常有一个或多个隐藏层。在这里信息只允许单向传输,这就这意味着,一个层的输出成了下一层的输入,如此类推。这种传输有序发生,每层都完全连接到下一层并且每个神经元通过加权后连接到下一层的神经元。本文的目的是利用人工神经网络为目标识别提供一个替代解决方案。最初的原始灰度图像已经被作为了一个参考,并被存储为原始数据银行。对转化方法的处理已经应用与原始图像,最初的一副原始灰度图像已经采取转换,输入图像已加入盐和辣椒噪声,自适应中值滤波器已被应用在处理嘈杂了噪声的图像,因此噪声可以被滤除,输出图像可视为过滤图像。参考存储在原始数据矩阵中的值将计算出估计误差和平局误差的值并存储在
10、过滤图像矩阵中,目的是检查适当滤波的效果。现在每个像素数据的值已经从十进制数被转换到8位二进制数。那四个像素合在一起组成一组形成一个新的32位二进制数。此后,这些二进制数再被转换成一个十进制数,这个过程像这样一直持续到完成图像所有行,最终产生了由一系列不同值组成的新数据矩阵。这个数据矩阵被作为原始数据矩阵,并保存在数据银行以供参考。现在用来识别,一个新的测试图像已经采取了和前面所提到的相同的步骤,插入椒盐噪声,采用中值滤波器滤除噪声,从而得到一个新的测试矩阵。现在基于两个生成矩阵,相对于原始图像,第二张图像的平均误差被计算出来。如果误差的百分比大于45%,我们可以得出结论:图像是不同的,是不可
11、匹配和识别 。相反,如果得出的误差百分比小于或等于45%,我们将尝试相比与原始数据矩阵,将人工神经网络应用到测试数据矩阵,从而产生第二个图像的新矩阵。对测试数据矩阵应用人工神经网络后产生对应生成数据矩阵,我们便可以通过生成数据矩阵计算出平均误差。已观察到,如果平均误差小于之前得到的值,那么我们就可以得出结论:图像是匹配的,从而也是可以被识别的。利用人工神经网络进行图像处理和识别的流程图如图1: 图1 流程图第三章 实现A. 原始图像的处理步骤一: 我们选取最初的最佳的图像如图2,我们把它作为原始图像。为简单起见,取原始图像的第一个10x10矩阵元素如下: 表1 输入数据矩阵步骤二:输入图像加入
12、椒盐噪声,计算出加入椒盐噪声后的平均误差是25.67%。为简单起见,加入噪声的原始图像的第一个10x10矩阵元素如下: 表2 带有噪声的输入数据矩阵B. 含噪声图像的处理步骤三:将自适应中值滤波器应用于含噪声的图像,从而将噪声滤除,输出的图像将被视为过滤图像。步骤四:参考原始数据矩阵的值,估计误差和平均误差的值被计算出来存储在过滤图像矩阵中。平均误差的值为5.397%。这显示出了噪声滤除的结果。步骤五:去除噪声得到原始图像被转化成包含像素值的数据矩阵,如表3所示。为简单起见,取第一个10x10矩阵元素值如下:表3 噪声滤除后的输入数据矩阵步骤六:为简化计算,四个像素被合在一起,并明智的逐行取出
13、,并转化成单个二进制数。步骤七: 四个像素的二进制值并排在一起,已经结合形成32位二进制数。步骤八:现在将这32位二进制数转换成一个十进制数。步骤九:在步骤五中生成的十进制数,被放进了原始数据矩阵,把这个矩阵命名为ORMAT,如表4所示:表4 原始数据矩阵ORMAT步骤十: 本说明书所提供的步骤六到步骤九,重复操作直到完成滤除噪声后的原始图像的如表3所示的全部像素值,因此,产生了一个矩阵,数据存储在命名的ORMAT数据矩阵中,如表4所示。需要注意的是,取第一个10x10矩阵元素显示在表4中更容易介绍。C.测试图像的处理 一张新的图像被取出,作为测试图像,现在最重要的是检查所取的图像是否可以被识
14、别出来。测试图像如图5所示,为简单起见,测试图像的第一个10x10矩阵元素(测试数据矩阵)的值如下表5所示: 表5 测试数据矩阵步骤十一: 正如上述步骤二的说明,现将其在测试图像上执行,产生一个含噪声的测试数据矩阵,如表6所示:表6 含噪声的测试数据矩阵步骤十二: 如上述在步骤三和步骤四中的说明,先将其在含噪声的测试图像上执行,将生成一个滤除噪声的测试数据矩阵,如表7所示:表7 滤除噪声的测试数据矩阵步骤十三: 如上述步骤五到步骤九的程序,将其在滤去噪声的测试图像上执行,将产生的十进制数放置在测试数据矩阵TESTMAT中,如表8所示:表8 矩阵TESTMATD.基于原始数据矩阵计算测试数据矩阵
15、平均误差步骤十四: 基于表4存储的原始数据矩阵,我们可以计算出存储在二进制矩阵中的估计误差和平均误差,如表9所示。其中平均误差为31%。估计误差如下所示:表9 估计误差数据步骤十五: 由于平均误差小于45%,为了进行识别,我们采取必要的步骤,利用人工神经网络的技术对测试图像进行处理。E.利用人工神经网络对识别的图像进行处理步骤十六: 相对于原始图像的数据矩阵,前馈反向传播神经网络被用在测试图像的测试数据矩阵进行训练与测试。结果就产生了一个新的数据矩阵,我们把它命名为NEWMAT,如表10所示。需要注意的是,矩阵ORMAT,TESTMAT,NEWMAT的列的数目只占了原始图像或测试图像数据总列数
16、的四分之一,因此利用人工神经网络完成训练和测试所需的时间大大减少。表10 应用ANN后的数据矩阵NEWMAT步骤十七:数据矩NEWMAT的每个值被转换成32为二进制数。步骤十八: 现在32位二进制数被分为四组8位二进制数。步骤十九: 每组8位二进制数被转化为十进制数,每个十进制数被作为每行连续四个像素的像素值。步骤二十:重复上述步骤十七到步骤十九的说明,直到完成数据矩阵MEWMAT中所有的值。结果产生了一个新的被修改了的数据矩阵,我们把它命名为MODMAT,如表11所示。需要注意的是,为了便于陈述,我们取第一个10x10像素存储在表11。表11 修改后的数据矩阵MODMATF.估计误差和平均误
17、差的计算步骤二十一:参考存储在表3中的值,我们可以计算出估计误差和平均误差的值,并存储在表11。且计算出的平均误差为14.39%。基于存储在表11中的值,可以形成图像,如图8所示。步骤二十二: 其它的测试图像如图9,被用来进行处理和识别。第四章 结果一些原始图像和测试图像被取出来进行处理,结果显示如表12所示。表12 结果Srl No原始图像含噪声的原始图像相对于原始图像的平局误差滤除噪声的原始图像滤除噪声后相对于原始图像的平均误差(1)(2)(3)(4)(5)(6)1图2图325.67%图45.39%2图2图326.42%图42.93%测试图像含噪声的测试图像相对于测试图像含噪声图像的平均误
18、差滤除噪声后的测试图像相对于测试图像的平均误差(7)(8)(9)(10)(11)图5图625.75%图75.56%图9图1027.39%图117.8%滤除噪声后相对于原始图像的平均误差通过ANN训练后的测试图像相对于原始图像的平均误差结论(12)(13)(14)(15)31%图814.39可识别64%-不可识别 图2 输入原始图像 图3含噪声的原始图像 图4 滤除噪声的原始图像 图5 测试图像 图6 含噪声的测试图像 图7噪声滤除后的测试图像 图8 利用ANN训练后的图像 图9 测试图像 图10 含噪声的测试图像 图11噪声滤除后的测试图像第五章 总结已经观察到,如果平均误差小于45%,人工神
19、经网络可以用于训练检测从而进行识别。因此,测试图像和原始图像是可识别和成功匹配的。同时也被察到,如果平均误差大于45%,那么图像被识别为不同的图像。在本文中,插入椒盐噪声主要是因为所有用来识别的图像都可能含有某种噪声,这就需要去滤除噪声,从而进行正确的识别。本文还观察到,由于用来训练的矩阵行数只有原始图像列数的四分之一,用人工神经网络进行训练和测试需要更少的时间。参考文献1 M. Egmont-Petersena, D. de Ridderb, Handelsc,L.Beaurepaire, K.Chehdi; B.Vozel “Image processing with neural net
20、worksareview, Pattern Recognition 35 (2002), 2002, PP-228022882 Berend Jan van der Zwaag , Kees Slump , and Lambert Spaanenburg Extracting Knowledge from Neural Networks in Image ProcessingPP-143-1453 Anil K. Jain, Fellow, IEEE, Robert P.W. Duin, and Jianchang Mao,Senior Member, IEEE “Statistical Pa
21、ttern Recognition: A Review”,IEEE TRANSACTIONS ON PATTERN ANALYSIS ANDMACHINE INTELLIGENCE VOL. 22, NO. 1, JANUARY 20004 Andrzej Dziech, Ali Amuri, “CONTOUR RECOGNITION USING NEURAL NETWORKAPPLICATION”, Communications Dept.,AGH Cracow University, Cracow, POLAND, Electronics and Communication Dept.,
22、Kielce University of Technology, Kielce,POLAND.5 Kenji Suzuki, “Pixel-Based Artificial Neural Networks in Computer-Aided Diagnosis”, Department of Radiology, Division of Biological Sciences, the University of Chicago USA6 N.R. Pal, S.K. Pal, A review on image segmentation techniques,Pattern Recognit
23、ion 26 (9) (1993) 1277 1284.7 S.K. Pal, A. Ghosh, Neuro-fuzzy computing for image processing and pattern recognition, Int. J. Systems Sci. 27 (12) (1996) 118211938 Mostafa Jabarouti Moghaddam, Hamid Soltanian-Zadeh, “Medical Image Segmentation Using Artificial Neural Networks “.9 Adilson Gonzaga, Ar
24、mando Marin, Evandro A. Silva, Fabiana C.Bertoni Kelton A.P. Costa, Luciana A.L. Albuquerque “NeutralFacial Image Recognition Using Parallel Hopfield Neural Networks”,Universidade de So Paulo10 Y.J. Zhang, A survey on evaluation methods for imagesegmentation, Pattern Recognition 29 (8) (1996) 1335 1
25、34011 Humayun Karim Sulehria, Ye Zhang, “Hopfield Neural NetworksA Survey”, Proceedings of the 6th WSEAS Int. Conf. on Artificial Intelligence, Knowledge Engineering and Data Bases, Corfu Island,Greece, February 16-19, 2007.12 Rafael C. Gonzalez, Richard E. Woods, Digital Image Processing, Second Ed
26、ition, Prentice Hall Upper Saddle River, New Jersey 07458, TA1632.G66 2001, 698-740原理一 提出问题 数字计算机的出现和现代学习与神经处理理论的发展都发生在大约同一时期,即二十世纪40年代后期。在计算机上进行人工神经系统的研究(ANS)仍然是生物医学研究的一个活跃领域。自那时以来,数字计算机已作为一种工具被用来建立单个神经元以及神经元簇的模型,这就是所谓的神经网络。源自统计模式识别的传统技术一直很流行,直到20世纪90年代初期。在新的时代,2000,Robert P.W.Duin和毛建昌给了我们作了一个全面的总结
27、并对模式识别中一些众所周知的方法进行了比较。给出的评论主要针对统计方法。人工神经网络(ANN)在这只作为一部分被讨论。由于发现,对于进行特征识别,统计方法或多或少存在着一般数学方法的不可用性。一个新的基于轮廓特征值计算的特征提取方法被提出,并发现利用前馈神经网络可以得到令人满意的结果。图像处理的主要目的是改变视觉的影响,这样信息量大大提高,使得所述图像比原始图像更清晰。这种技术有助于我们获得图像中我们感兴趣的部分或特征的更好的清晰度,并且抑制图像中其他部分或特征的信息。图像识别一直致力于,从一组身份已知的标签中寻找图像中被观察目标的身份。可用的识别技术有许多种,但是对于选择何种技术最合适主要取
28、决于给定的手头任务和一些其它的相关参数。软计算是建立在模糊逻辑,人工神经网络,进化计算,机器学习等一些最新技术之上的一种新兴领域。每种软计算技术都可以应用于,产生因太复杂或嘈杂而无法用常规方法处理的任何问题的解决方法。传统的计算机采用逐步解决问题的方法,且每一步都需要很好定义并且必须保证是可计算的。如果其中计算机需要遵循的任何一步是未知的,计算机将无法解决问题。所以利用计算机解决问题需要事先掌握如何解决这个问题的所有知识。而人工神经网络是一种新技术,它采用的是一种与传统计算方法不同的解决问题的方式。或许人工神经网络之所以被认为更强大,是因为它可以解决一些还不能准确知道如何去解决的问题。本文将利
29、于人工神经网络,提供一种图像处理与识别的新方法。人工神经网络已成为灵感来自于生物神经网络的一个最新发展工具。这个新的强大工具的主要优势是,它具有靠传统计算方法不太容易解决问题的能力。二 分析问题 论文设计流程1. 选取最佳原始图像目的,是为了进行识别提供标准的原始数据,以减小相对误差,提高识别正确率。 2.加入椒盐噪声的目的,因为因为所有用来识别的图像都可能含有某种噪声,这就需要去滤除噪声,从而进行正确的识别。 3.选用自适应中值滤波器原因:滤波器被广泛地用于图象的预处理,抑制图象噪声,增强对比度,以及强化图象的边沿特征. 运用较为广泛的线性滤波器如平均值滤波器,能较好地抑制图象中的加性噪声.
30、 但是,线性滤波器会引起图象的钝化或模糊,使得图象中物体边界产生位移. 特别是,在图象受到乘性噪声或脉冲噪声的干扰,如超声波及雷达成像中普遍存在的斑点噪声,线性滤波器就不能取得预期的效果. 中值滤波器,就像其名字一样,是用该像素的相邻像素的灰度中值来代替该像素的值,是一种非线性滤波器. 例如滤波窗口由33 个象素组成,则其中5个象素的灰度值会小于等于该滤波器的输出灰度值,同时5 个象素的灰度值会大于等于滤波器的输出. 由此可见,对于离散的脉冲噪声,当其出现的次数小于窗口尺寸的一半时,将被抑制掉同时也能较好地保证图象的边沿特征,而且易于实现. 因此它被广泛地应用于图象处理,尤其是医学图象处理,如
31、超声波图象.但由于其使用的滤窗大小是固定不变的,当窗中噪声像素数超过有用像素之半时(噪声密度较大时),中值滤波滤波作用大大降低。多次试验验证:在脉冲噪声强度大于0.2时,中值滤波效果就显得不是令人满意。而自适应中值滤波器会根据一定的设定条件改变滤窗的大小,即当噪声面积较大时,通过增加滤窗的大小将噪声予以去除,同时当判断滤窗中心的像素不是噪声时,不改变其当前像素值,即不用中值代替。这样,自适应中值滤波器可以处理噪声概率更大的脉冲噪声,同时在平滑非脉冲噪声图像时能够更好地保持图像细节,这是传统中值滤波器做不到的。所以选用自适应中值滤波有利于保留图像细节,有利于正确进行图像识别。4. 采用将一副图像
32、分割成几部分的方法,只取其中10X10矩阵的元素,一是方便进行误差计算,二是只进行图像某部分进行识别,提高了识别速度,三是采用矩阵形式方便进行将数据输入至ANN网络进行图像处理。5.采用图像压缩的方法,将像素数据进行进制转换,矩阵ORMAT,TESTMAT,NEWMAT的列的数目只占了原始图像或测试图像数据总列数的四分之一,因此利用人工神经网络完成训练和测试所需的时间大大减少。6.图像处理可以看作一大类图像技术,着重强调在图像之间的变换,图像处理是包含丰富内容和具有广阔应用领域的研究学科。近几年来,作为具有自组织、自学习和联想功能的人工神经网络理论已成功地应用于图像处理的许多方面,如图像压缩、
33、图像分割、边缘检测、图像增强、图像识别等。概括得说,神经网络应用于图像处理的主要思路是:把原始图像或经过适当预处理的图像作为网络的输入信号,在网络的输出端得到处理后的图像信号或分类结果。7.图像增强的目标是改进图片的质量,例如增加对比度,去掉模糊和噪声,修正几何畸变。8.BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各
34、神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。 图像增强的主要目的是使图像处理后达到特定的效果。不同的图像,其处理方法也各不相同,使我们很难找到一个标准的公式或函数,因此可利用神经网络的学习特性和自组织能力帮助我们完成这任务。即将测试数据矩阵的数据输
35、入ANN网络,其输出即为调整好的测试新数据矩阵,将这个新矩阵再与原始数据矩阵进行对比,计算误差,即可判定是否为同一图像。三 解决问题Matlab程序function =TwoDPCA % %Face recognition clear all close all clc M=200;traincopy=3; eignum=100;%选取100个特征值。 cel=cell(1,M); cellafter=cell(1,M); tt=clock; S=; ii=1; str=strcat(E:人脸2dfacedatabaseORLs11.pgm); img=imread(str); ia ib=s
36、ize(img); sum=zeros(ia,ib); B=zeros(ia,ib); for i=1:40 for j=1:5 str=strcat(E:人脸2dfacedatabaseORLs11.pgm); eval(img=imread(str);); sum=double(sum)+double(img); cel1,ii=img; ii=ii+1; end end meanA=sum/M; cov=zeros(ib); for i=1:M img=cel1,i; B=double(img)-double(meanA); temp=B*B; cov=double(cov)+doubl
37、e(temp); end vv dd=eig(cov); num2=size(vv); % Sort and eliminate those whose eigenvalue is zero v=; d=; for i=1:size(vv,2) if(dd(i,i)1e-4) v=v vv(:,i); d=d dd(i,i); end end num1=size(v,2); %sort, will return an ascending sequence B index=sort(d); ind=zeros(size(index); dtemp=zeros(size(index); vtemp
38、=zeros(size(v); len=length(index); for i=1:len dtemp(i)=B(len+1-i); ind(i)=len+1-index(i); vtemp(:,ind(i)=v(:,i); end d=dtemp; v=vtemp; imgafter=; for i=1:M for j=1:eignum img=cel1,i; temp1=double(img)*double(v(:,j); imgafter=imgafter temp1; end cellafter1,i=imgafter; imgafter=; end timeconsume=etim
39、e(clock,tt); testimg=M/traincopy; findimgnum=traincopy; suc=0; % figure(5); for k=1:testimg InputImage =imread(strcat(E:人脸2dfacedatabaseORLs,int2str(k),10.pgm); testafter=; for j=1:eignum temp=double(InputImage)*double(v(:,j); testafter=testafter temp; end % Find Euclidean distance e=; for i=1:M tem
40、pA=double(testafter)-double(cellafter1,i); total=0; for j=1:eignum aa=norm(tempA(:,j); total=total+aa; end e=e total; end C index=sort(e); min=index(1); %计算正确率 testingroup=floor(min-1)/traincopy)+1; %计算要测试的图像所在的组 if testingroup=k suc=suc+1; else fprintf(%d.jpg fails to match!n,k); end subplot(testim
41、g,findimgnum+1,(k-1)*(findimgnum+1)+1);% subplot(行数,列数,放图像位置的序数) % imshow(InputImage); % for i=1:findimgnum % temppos=(testingroup-1)*traincopy+i; %str=strcat(E:人脸testpicorl,int2str(temppos),.pgm); %concatenates two strings that form the name of the image % eval(img1=imread(str);); % subplot(testimg,findimgnum+1,(k-1)*(findimgnum+1)+i+1) % imshow(img1) % drawnow; % end end sucrate=suc/M*traincopy*100; fprintf(%2.1f% matched successfully!n,sucrate) fprintf(it takes %3.2f Sn,timeconsume)