图像识别本科毕业设计.docx
《图像识别本科毕业设计.docx》由会员分享,可在线阅读,更多相关《图像识别本科毕业设计.docx(50页珍藏版)》请在冰豆网上搜索。
图像识别本科毕业设计
图像识别本科毕业设计
编号:
审定成绩:
重庆邮电大学
毕业设计(论文)
设计(论文)题目:
基于C++/MATLAB的图像识别技术的仿真研究
学院名称:
通信与信息学院
学生姓名:
周易德
专业:
电子信息工程
班级:
0121208
学号:
2012214709
指导教师:
余艳英
答辩组负责人:
填表时间:
2016年5月
重庆邮电大学教务处制
ABSTRACT
Imagerecognitionisapatternrecognitionforanimage.Thepurposeistomakeimagerecognitioncomputer,likehumanshavetheabilitytounderstandthingsfromthepictureanalysisofthings.Inthispaper,theimagerecognitiontechnologyresearch,andoutlinesthecoreimagerecognitiontechnology.Imagerecognitionsystemisdividedintothreeparts:
preprocessing,featureextractionandpatternrecognition.MATLABisapowerfultoolforalgorithmdesignandsimulation,andC/C++programminglanguageisthemostcommonlanguage.ThisarticlebrieflyintroducestheMATLABandC/C++mixedprogramming,andillustrateshowmixed.Thelasttwogroupshavealsocarriedoutarepresentativesimulationofpatternrecognition-recognitionandhandwritingdigitrecognition.Intwoexperiments,theapplicationofdifferentfeatureextractionandpatternrecognitiontechnology,andthedifferentmethodswerecomparedfordifferentwaystoachievetheadvantagesanddisadvantagesarediscussed.Simulationtechnologyismainlyusedinprobabilisticneuralnetwork,SVDdepthdimensionreductionandneuralnetworks.
【Keywords】ImageRecognitionFaceRecognitionHandwrittenDigitalRecognitionpnndnn
前言
人类通过眼、耳、喉、鼻和舌等各种感官接受外界的刺激和信息,其中超过83%的信息来自于眼睛。
俗话说“百闻不如一见”,就是在说语言描述不如视觉的一目了然。
随着数字图像处理技术的发展和实际应用的需求,许多问题不再要求计算机只输出处理后的图片,而是将经处理的图片再进行分割和描述,并提取主要特征,进而加以判决分类,这种技术就是基于图像的模式识别即图像识别。
图像识别技术是利用计算机对图片数据的处理,以模仿人类视觉系统,达到人类所具有的对图片内容进行认识的能力,以代替人去完成某些信息分别和辨别的能力。
图像识别属于当代计算机科学研究的重要领域,已经发展成为一个独立的学科。
这学科发展相当迅猛,应用范围越来越广泛,几乎涵盖了所有生产部门。
目前,光学字符识别OCR,以及生物特征识别(指纹、人脸和虹膜等)已经在日常生活中广泛应用。
光学字符识别(OpticalCharacterRecognition,OCR)的目标是在复杂环境下识别机器读取的字符信息。
OCR处理的信息可分为三大类:
文字信息识别、数据识别信息和条形码识别信息。
生物特征识别则是采用某种技术和手段对人的身份进行标识,从而依据标识对人进行身份识别的技术。
最常见的生物特征识别是人脸识别、指纹识别和虹膜识别,这些身份识别方式都是通过人的生物特征实现的,这些特征有不易丢失、不易伪造、易携带、不易破解等优点。
本文即使要对这两类图像识别进行深入调研,并寻找解决方法。
本文组织形式如下:
第一章:
定义图像识别,并介绍图像识别系统需要的技术种类。
第二章:
具体的介绍了几种图像识别技术,并介绍这些技术在图像识别中的作用。
第三章:
介绍了MATLAB与C/C++混合编程方法,并距离说明了如何实现混编。
第四章:
介绍了实验软硬件平台,进行并讨论了两组实验。
结论:
最后总结了仿真实验过程中获得的经验和遇见的难题。
第一章图像识别技术概述
图像识别是一种针对图像的模式识别。
人类具有对各种事物和现象进行分析、描述和判断的能力,而图像识别就是通过输入图像使计算机拥有类似自动分析事物的能力。
图像识别贯穿了图像处理、图像分析和模式识别三个不同层次。
本章将从这三个方面来简单介绍这些技术。
总的来讲,图像处理是从原始图像到处理后图像的处理过程;图像分析是从图片到目标表达的过程,这些目标最终是以特征的形式提取表现出来的;模式识别是从目标表达到分类和辨别的过程。
第一节图像处理和分析技术介绍
图像识别的过程中少不了运用图像处理和分析的很多知识。
图像处理的目的就是将输入图像处理成输出图像,从而达到图像增强、图像恢复等目的。
图像识别需要对样本图片进行一定的图像处理,为之后的图像分割、特征提取做准备。
一、图像处理核心工具列举
1.灰度变化
(1)灰度映射(图像求反、对比度增强和动态范围压扩)
(2)直方图变化(直方图均衡化和直方图规定化)
图1.1:
从左到右分别是原图、动态范围扩展结果和直方图均衡化结果
2.模板操作
模版操作把局部信息为依据,二维卷积(模版卷积)为工具,实现图像处理的多种目标。
它可以实现线性滤波与锐化、非线性滤波与锐化、局部直方图增强等。
其中基于梯度算子的锐化还可用于边缘检测。
图1.2左图为原始图像cameraman;右图为利用正交梯度算子进行边缘检测。
3.变换域操作
变化域操作就是将图像从最开始的空间域变换到另一个域比后,进行一定操作后实现图像处理的目的。
比如最常见的例子就是频域滤波。
图1.3频域滤波过程示意图
图1.4从左至右依次是原始图像、原始图像频谱图、滤波函数空域图和滤波后图片
4.图像消噪与恢复
与模板操作和频域操作相比,消噪与恢复更像是一种目的。
模板操作和频域操都是消噪与恢复的重要工具。
5.放射变换
放射变化是一种分别对每个像素重新计算坐标的几何变化,主要包含放缩、旋转、剪切和平移。
二、图像分析核心技术简介
1.图像分割
在图像分析和理解中,很多时候我们只关心图像中的一部分——目标。
目标一般对应图像特定的具有独特特性的区域。
区别不同目标以及区别目标和背景是进一步分析图像和特征提取的前提。
图像分割就是指把图像分成各具特色的区域并提取出感兴趣的目标区域的技术和过程。
边缘检测是所有基于边界的图像分割方法的第一步。
最基础的边缘检测算法有正交梯度算子、二阶导数算子、阀值化等。
常用典型的分割技术有SUSAN检测算子法、分水岭分割法、聚类法等。
图2.1就是利用正交梯度算子进行边缘检测的
2.图像表达
图像表达就是要对图像中的目标采取合适的数据结构来进行表达。
根据不同的目标图像选择不同的方式表达才能构建出合理的特征空间,最终才能使模式识别发挥作用。
常见的图像表达主要有基于轮廓的方式和基于区域的方式。
图1.5图像表达距离:
横竖线交点法
上图就是一个手写数字目标表达的例子,图中每个数字与三个横线相交,又与两个竖线相交。
形成的焦点数量就是每个目标特征,例如对于0来说特征可以表达为交点数量(2,2,2,2,2)。
这是一种基于目标像素空间分布的表达方式。
3.数学形态学工具
数学形态学是以形态为基础对图像进行分析的工具,是图像处理和分析的重要工具。
它的基本思想是用具有一定形态的结构元素,去量度和提取图像中的对应形状,来实现图像分析和识别的目的。
按照处理对象不同,形态学又分成二值形态学和灰度形态学。
我们这里主要介绍二值形态学的一些基本工具和典型应用。
二值形态学的基本工具有膨胀和腐蚀,这两个基本工具的反复组合和迭代就构筑了形态学的高楼大厦。
由膨胀和腐蚀组合起来的工具有开启、闭合和击中-击不中变化等。
数学形态学的基本应用有区域凸包、细化、粗化和剪切等,复杂的典型应用有消噪、角点检测和骨架计算等。
图1.6从左至右分别是原图像,腐蚀后图像、开启后图像、细化后图像和骨架化图像
第二节模式识别技术介绍
模式识别是图像识别的主要工具和核心难点。
人类具有对各种事物和现象进行分析、描述和判断的能力,而模式识别就是使计算机拥有类似自动识别事物的能力。
人类对模式的识别在生活中很常见,比如人类能对同类脸上的表情做出判断,像是炒股的人们凭借着市场各种指数和累计的经验能预测未来走势,又或是下棋的两个人对棋局形势的优劣能做出判断。
模式识别对人来说是如此的直观、如此的无所不在,对人来说这就是与生俱来的一种能力,然而对于计算机来说却不是那么容易实现。
如何让计算机能像人一样具有识别、分类的能力就是模式识别所要研究的。
一、模式与特征概念简介
模式(Pattern)广义的来讲就是一种完美的概念,通常是从某类事物中归纳总结出来的一种认识。
举个例子我们要在一群人中找到威猛的壮汉们,这就要求我们之前对壮汉有一定的认识,也就是我们具有壮汉的概念。
有了这样的概念我们就有了判断一个人是不是壮汉的工具和切入点。
但这对于计算机可并不容易,计算机可不能像我们一样形成一个壮汉的概念。
这就涉及到了模式的描述问题了。
计算机不懂壮汉甚至不懂人是什么,于是我们就要对观察目标进行描述。
我们要描述一个人而且要能让计算机理解就需要使用矩阵的知识。
表1.1特征空间举例说明
样品编号
性别
年龄
血型
握力
800米成绩
实心球
是否单身
高数成绩
1
男
18
O
39kg
3’20’’
10
是
66
2
女
21
AB
25kg
3’50’’
11
是
77
3
女
23
A
23kg
3’30’’
9
是
88
4
男
34
B
31kg
4’10’’
8
否
99
5
女
31
O
33kg
4’05’’
8
否
33
上表中样本的性别、年龄、血型等8个属性就是我们用来描述一个人的特征。
这样我们就能用上表中每一行信息来描述每一个样本。
这就是样本描述方法,通过样本的不同属性,也就特征来描述一个样本。
我们的目的是要区别一个人是否是壮汉,这就要求我们设计出来的计算机系统能根据对一个样本的描述来判断一个样本是属于壮汉还是非壮汉。
如果将上表中的用来描述人的一行行信息看作是一个向量。
这个向量的维数则由我们选取的特征数确定,这个向量所属空间就叫特征空间。
同时,每个人即每个样本就是空间中的某个点。
要描述一个的特征的数量非常多,远不止上表中列出的8个特征,不可能全部都利用起来,更何况有些特征与我们的目标找到壮汉完全没有任何关系,例如上表中的高数成绩。
这就要求我们通过对目标的认识,选择出一套合理的特征。
这个找出合适特征的过程叫做特征选择与优化,这是实现模式识别的关键一步。
通常情况下我们需要降低特征数量,也就是降低特征空间维数。
二、分类器设计简介
在选取好合适的特征后,我们要解决的问题就好似将特征空间中的每个点分成两类——壮汉和非壮汉。
我们设计分类算法的过程又叫做分类器设计。
在分类器设计设计过程中我们需要一些已经分好类的样品集合来使计算机认识到不同类别的区别,这个样品集合就叫训练集。
分类器设计的基本做法就是在训练集的基础上确定分类的判断方法,并通过对未知的测试样本分类情况不断修正或优化分类判断方法。
图1.7分类器设计过程示意图
下面介绍下模式识别的常见方法。
1.模板匹配
模板匹配的基本原理很简单,就是使用已知的样本作为模板,与测试样本进行比较,从而识别目标。
将待分类的样品与每类的一个或者多个标准模板进行比较,看跟哪个类的模板匹配程度好,这样就能为测试样本分类了。
匹配识别需要计算测试样品与各个模板的相似程度,并寻找最相似模板。
假如是人脸识别,对于每一个测试样本,都需要计算这个测试样本到每个模板的距离。
在模板数量很大时,这个缺点越明显。
因此,虽说近邻法判决在原理上很简单,但是计算量很大。
模板匹配主要应用于对图像中对物像位置的检测,运动物体跟踪等。
模版匹配的另一个缺点是由于匹配的点很多,虽然理论上可以达到最优解,但在实际中却很难做到。
2.判别函数
设计判别函数的形式有两种:
基于概率统计的分类法和几何分类法。
(1)基于概率统计的分类法
这种方法需要使用到贝叶斯决,策决策者虽不能控制客观因素的变化,但却掌握其变化的可能状况及各状况的分布概率,并利用期望值即未来可能出现的平均状况作为决策准则。
要使用贝叶斯决策就需要得到关于样本的总体分布,包括各类的先验概率以及各类条件概率函数,计算的出样品的后验概率,并以此作为产生判别函数的必要数据,设计出相应的判别函数与决策面。
这种分类器对特征空间的各类样品分布已经很清楚,一旦测试样本特征向量已知,就可以确定样品X对各类的后验概率,也就可以按照一定准则进行分类了。
(2)基于几何的分类法
在完成特征选取后,每个模式的特征全部量化为每一维的坐标值,这就使得每个特征变为了特征空间上的一个点。
几何分类法就是要在不同的模式点之间找到一些分界面,以分离不同类的点集。
几何分类的分类函数即是分开不同类的点集合。
3.神经网络
人工神经网络是种对生物神经系统的模拟的算法。
它将若干个神经元(处理单元)通过一定互连模型连接成一个网络,这个网络通过一定的机制可以模仿神经系统的动作过程,已达到分类的目的。
这种分类法最大的特点是对带识别目标不需要进行深入的了解和分析,具有一定智能化处理的特点,特别适用于处理需要考虑多种因素和条件的、不精确和模糊信息处理问题。
神经网络可以看作是输入空间到输出空间的一个非线性映射,它通过调整权重和阀值来“学习”或者发现输入输出之间的关系。
优点是可以处理一些环境信息非常复杂,背景知识还不完备,推理规则还不明确的问题,允许样品有较大的缺损和畸变。
缺点是目前能识别的模式类还不够多,模型在不断丰富和完善中。
4.聚类法
上述分类方法都是利用了已分类的样本来构造分类器。
聚类法则不然,不需要了解一批样本中的模式和概率分布,唯一的分类根据就是测试样品本身。
利用样品本身的特性区别来构造分类器,这种分类也被称作无监督分类。
在不了解每类模式特征的情况下,仅仅利用某种相似性量度和归类准则,把特征相似的测试样品归为一类。
第三节本章小结
本章对图像识别的技术做了简要的介绍,图像识别的技术可以简单的分成三个层次:
图像处理,图像分析和模式识别。
一个完整的图像识别系统包含三个部分:
图像预处理、特征提取和模式匹配。
本章对着三个层次和三个组成部分做了简要介绍。
第二章所用核心技术介绍
本章对主要介绍几种将在仿真中用到的核心技术,包括三个部分——概率神经网络(ProbabilisticNeuralNetwork,PNN)和深度神经网络(DeepNeuralNetwork)以及SVD降维。
第一节概率神经网络
一、神经元模型
1.神经元模型
人工神经元(ArtificialNeuralNetwork,ANN)是对哺乳动物神经细胞的模型,每个人工神经元主要包含树突、轴突、突触和细胞体。
单个的神经元相当于多输入单输出的非线性阀值器件。
图2.1最典型的人工神经元模型
图2.1的X1、X2和X3是输入,有时是其他神经元的轴突,X是输入矢量;o表示输出,输出只有一个;W是一个权矢量决定着每个输入的权重;ΣXW是输入的加权和;θ是激活阀值,只有在输入加权和大于阀值时神经元才有效输出。
输出形式由激活函数f决定。
常见的激活函数f有单位阶跃函数、符号函数、Sigmoid函数等。
神经元的可塑性主要反映在加权向量和门限的变化,当一个输入对应的权重为0时就相当于没有这个树突连接,当一个输入对应的权重从0变为非零值时就相当于增加了一个输入树突。
经过不断的学习,整个网络中的每个神经元的加权向量都在不断改变,知道达到已经的目的才结束学习。
图2.1的输出函数基本可以表示成:
(2.1)
等式(2.1)中o表示输出;x表示输入向量;w表示输入的权重向量;wx为输入的加权求和;b为一个偏差值。
对于b=0,w的每个元素为1,且f(x)=x时的神经元的输出函数为o=x。
这种神经元叫做纯线性神经元(purelineneuron),在神经网络中常常被作为输入层和输出层。
下面我们介绍另一种神经元模型:
径向基神经元(RadialBasisNeuron,radbasneuron)。
图2.2径向基神经元
激活函数Gaussian为高数函数;激活函数的输入为
,其中b为偏差值,W为加权向量;X为输入向量;
为X到W的距离。
其输出函数为:
(2.2)
二、概率神经网络
概率神经网络(PNN)是一种用贝叶斯决策规则,即错误分类的期望风险最小,在多维输入空间内分离决策空间的人工神经网络。
PNN由四层结构组成,如图2.3所示。
●输入层为多个纯线性神经元组成,本层神经元之间不进行任何连接,输出与下一层每个神经元单向连接。
输出函数为
。
●样本层中包含多个径向基神经元,且每个径向基神经元分别包含训练样本信息X1、X2、X3和X4。
其输出函数为式2.3。
(2.3)
样本层的径向基神经元数量是由监督学习提供的样本数量决定的。
●求和层的目的是对同一类的样本的输出进行求平均,求和层的神经元数量由样本分为多少类决定。
像图2.3中样本只分作三类红、蓝和黄。
因此,求和层输出只有三个值。
求和层不是求和而是求平均。
●输出层:
在图2.3中,输出层以三个和作为输入,三个和值相互竞争,最大值作为竞争胜利者输出1,其余输出0。
这在神经网络中称作竞争层。
图2.3PNN拓扑结构图
我们就以图2.3举一个例子。
假设输入为二维点,利用分层三类的四个样值来将二维泡面划分为三个类。
表2.1
样本点坐标
(2,1)
(1,2)
(3,3)
(4,4)
类别标签
1
2
3
3
这四个样点在图2.4中标为红色。
图2.3中的未知数为Xi就是四个样本点值,而求和层的未知数Wi由标签信息决定。
图2.4二维平面分割图
图2.4的黑色部分为第1类,深灰色范围为第2类,浅灰色部分为第3类。
PNN通过输入训练样本和对应的标签从而确定神经网络内的所有参数,建立起一种以神经网络为基础的分类器。
第二节深度神经网络
深度神经网络,即含有多个隐藏层的神经网络。
与深度神经网络相比较“浅”的网络只使用一层计算单元(隐藏层)。
需要注意的是深度神经网络的多个隐藏层的激活函数f都必须使用非线性函数,如果都是使用线性激活函这再多的隐藏层也可以被一层代替。
通过引入深度网络,我们可以计算更多复杂的输入特征。
因为每一个隐藏层可以对上一层的输出进行非线性变换,因此深度神经网络拥有比“浅层”网络更加优异的表达能力(例如可以学习到更加复杂的函数关系)[1]。
一、AutoEncoder自动编码器
自动编码器又叫做autoassociator(自动关联器)是一种MLP(multilayerperceptron,多层感知器)的典型应用[2]。
自动编码器神经网络是一种无监督学习的算法,主要使用了反向传播技术,目的是让输出如输入相等。
如图2.5所示,图中的Layer1输入层使用不是计算单元;Layer2和Layer3使用非线性函数作为激励函数,最常见的非线性激励函数为sigmoid函数。
其中Layer2的神经元数量上少于输入层,Layer3的神经元数量与输入完全相同。
通过无监督训练的目的是使Later3的输出与输入完全相同。
这个网络是要逼近函数f(x)=x这个函数。
图2.5Autoencoderwith6-3-6architecture.来自于[1]
如果能实现Layer3的输出等于Layer1的输入。
图2.5中去掉Layer3则网络变成了一个输入为高维数据,输出为低维数据的编码器。
而只看Layer3则是这种编码器的解码器。
在图像识别中引入自动编码器是因为它具有和PCA很类似的数据降维的作用。
如果自动编码器的输入是随机数,比如高数随机变量,这很难控制输出与输入相等。
而如果输入数据内部有各种隐藏的相关性和结构,则自动编码器会利用这些相关性进行降维,从而达到较好的准确率。
AutoEncoder学习算法在这里不做介绍,代价函数都是以错误率为基础的各种参数。
学习算法就是不断无监督学习优化代价函数。
二、Softmax回归网络
Softmax回归网络的目的是找到输入x是某类Ci的后验概率。
也就是说不同于PNN所使用的竞争网络只有一个winner,Softmax回归网络能给出输入x属于某一类的概率P(Ci|x)。
假设有K类,所有的类别为Ci,i=1,2…K。
这Softmax网络由K个神经元组成,且每个神经元输出为每类的后验概率。
每个神经元输出为:
,i=1,2…K(2.4)
式(2.4)中需要学习的参数有K个权重向量Wi和K个偏移值bi。
Softmax学习的代价函数为:
,i=1,2…K(2.5)
第三节本章小结
本章主要介绍了三种技术——PNN和DNN。
其中PNN能在图像识别系统中发挥模式识别分类器的作用;DNN的AutoEncoder算法能发挥降维并起特征提取的作用;DNN的Softmax回归算法能起到分类器的作用。
第三章MATLAB与C/C++混合编程简介
MATLAB是科研工作者和工程师的好伙伴,具有强大的科学计算能力以及数据可视化功能,是用来完成算法设计和实验仿真的利器,应用领域已经涵盖科学研究和工程开发的各个领域,甚至包含技术难度极大的天线仿真。
而C/C++是家喻户晓的编程语言,可用于几乎所有场景。
C语言是MCU开发、嵌入式开发和驱动开发等领域,具有极佳的运行效率,而C++和C#在顶层应用程序设计中发挥着不可代替的作用。
如果能将两者结合起来一定能发挥出两者的有事,然而MATLAB与C/C++混合编程因为涉及到不同开发语言、不同开发环境以及多种接口,仍然存在一定难度。
随着MATLAB7.0之后的版本更新,混合编程的稳定性和兼容性具有越来越强的兼容性和稳定性。
第一节MATLAB与C/C++混合编程特点
一、MATLABM语言特点
MATLAB所使用的M语言是一种基于矩阵的脚本语言,其核心是高效率的数值计算。
矩阵是MATLAB核心变量类型,既有简单的数值矩阵,也有复杂的元组矩