本科论文.docx
- 文档编号:23384221
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:12
- 大小:59.15KB
本科论文.docx
《本科论文.docx》由会员分享,可在线阅读,更多相关《本科论文.docx(12页珍藏版)》请在冰豆网上搜索。
本科论文
电子元器件自动识别算法研究(论文题目)
中文摘要
国家的以旧换新政策施行后,国内有很多废旧电子元器件可回收再利用,目前国内尚属于人工分类,如果能实现电子元器件的自动识别分类,将大大降低成本提高工作效率,有很大的实际意义。
本论文基于Matlab的GUI控件,研究用图像处理的方法要给出一个识别出电子元器件并计算其几何参数,并给出算出相应的数据的程序算法。
研究内容通过以下步骤来完成:
设计一个图形操作界面,对电脑自动拍摄的元器件照片库进行预处理,二值化图像,目标定位,去除干扰区域重定位,摆正元器件角度,截取图像,计算几何参数,检验程序。
最后的检验结果比较理想,将最后提取出元器件相应数据汇总起来,供后续的自动分类程序部分分析。
自动识别加自动分类构成整个系统。
Abstract
SincetheTrade-inPolicyofthenationisputtinginforce,therearemanyoldelectroniccomponentscanberecycledandreused.Ourcountrymakesuseofmanuallabortodistinguishtheelectroniccomponentstotheirclassesuptonow.Transferringtheworktocomputercanbemuchmoreefficientandbeofgreatsignificant.
ThearticlemakesuseoftheGUIDEofMatlabandoffersaprogramwhichcanidentifytheelectroniccomponentsandcalculatesomerelativeparameter.Thestepsareasfollow:
todesignagraphicoperatorinterface,todosomepretreatmenttothephotosofthecomponents,tolocatetheblackarea,towipeofftheinterference,tomakethecomponentslevel,tocropthephoto,tocalculateandtotesttheprogram.
Withtheseworksdone,thetest’sresultisideal.Finally,Icollectthedataandthesedatacanbeusedtoanalysisandclassifytheelectroniccomponents.
关键词
GUI图像处理目标识别目标定位几何参数计算
课题背景介绍(一级标题)
选题背景简述(二级标题)
选题背景(三级标题)
为进一步促进扩大消费需求,提高资源能源利用效率,减少环境污染,促进节能减排和循环经济发展,国家财政部、商务部、发展改革委、工业和信息化部、环境保护部、工商总局、质检总局制定了《家电以旧换新实施办法》。
截至2010年5月23日,家电以旧换新销售新家电突破500亿元,销售1312.8万台,回收旧家电1387.5万台。
2010年3-5月家电以旧换新销售额环比增长21%,政策带动家电消费作用明显。
这些淘汰下来的旧机器设备虽然整体上不能继续使用,但其中有很多元器件还可以回收再利用。
目前回收回来的计算机和家电设备在拆除过程中,各种元器件都是混合在一起放置的,再次利用时需分类存放。
目前元器件分类采用人工分类的方法,十分的耗神费力,工作量大,成本高,处理速度慢。
选题意义(三级标题)
如果能够利用电脑程序将电子元器件自动识别分类,将大大提高分拣速度,解放劳动力、实现自动化。
减少工作量,降低成本,提高作业效率,减少工作失误。
本课题研究一种图像识别的算法,对电子元器件进行自动识别,开发图像识别算法在新的工业领域的应用,为进一步的自动分类打好基础。
研究现状(三级标题)
目前国内外没有成型的GUI程序用以识别电子元器件,相关图像识别算法在车牌号识别、车型识别、商标识别、饮料瓶识别等方面有应用的实例。
多采用基于边缘图像进行检验和目标识别。
研究开发新的算法应用于电子元器件识别是一个全新的挑战。
图像处理简介(二级标题)
图像处理(imageprocessing),是指用计算机对图像进行分析,以达到所需结果的技术。
图像处理一般指数字图像处理。
数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。
图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。
常见的处理有图像数字化、图像编码、图像增强、图像复原、图像分割和图像分析等。
图像处理一般指数字图像处理。
虽然某些处理也可以用光学方法或模拟技术实现,但它们远不及数字图像处理那样灵活和方便,因而数字图像处理成为图像处理的主要方面。
彩色图像转灰度图像(三级标题)
一般情况下彩色图像每个像素用三个字节表示,每个字节对应着R、G、B分量的亮度(红、绿、蓝),转换后的黑白图像的一个像素用一个字节表示该点的灰度值,它的值在0~255之间,数值越大,该点越白,即越亮,越小则越暗。
采用现行标准的平均值法,灰度值可以由彩色像素的每个分量R、G、B分别乘以不同的权值得到,计算公式如下:
其中Gray(x,y)为转换后的灰度图像在点(x,y)处的灰度值。
图像的平滑去噪(三级标题)
图像的平滑是一种低通滤波,其主要目的是减少噪声。
一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时系统中所要提取的边缘信息也主要集中在其高频部分。
一种较好的平滑方法应该是既能消掉噪声的寄生效应,又不使图像的边缘轮廓和线条变模糊。
目前,图像滤波主要分成线性滤波技术和非线性滤波技术两大类。
线性滤波具有完善的理论基础,数学处理简单,对高斯噪声有较好的平滑作用,但对脉冲噪声抑制效果较差并且会使图像的边缘模糊,不能很好地保护图像的细节;而非线性滤波则能抑制非高斯噪声,较好地保护图像的边缘和细节。
图像的二值化与阈值选取(三级标题)
把一幅灰度图像转换成二值图像是图像处理的常用技术,它可以实现前景与背景的分割。
图像二值化算法是通过设定某个阈值,把灰度图像变换成只有两个灰度级的黑白图像。
假设输入图像为MxN的矩阵
,输出图像为MxN的矩阵
,若阈值为T,那么图像二值化的算法为
设图像中的像素灰度级为0~L-1,灰度级为i的像素点数为ni,则图像的全部像素数为
则灰度级i出现的概率为
将像素按灰度级用阈值t划分成两类C0和C1:
则C0和C1类的类出现概率为
均值为
式中:
对任何t值均有
定义类间方差为
定义类内方差为
定义总体方差为
把使C0和C1两类得到最佳分离的t值作为最佳阈值,引入下列关于阈值t的判决准则:
式中,与t值无关,要类间方差最大,也就是在0~L-1之间改变t值,求,使得
即为最大类间方差法求得的阈值。
Matlab图像处理模块简介(二级标题)
通常来说开发一个实际的应用程序时会尽量做到界面友好,这其中最为常用的方法就是使用图形界面。
Matlab7.0为用户开发图形界面提供了一个方便高效的集成开发环境——GUIDE(MATLABGraphicalUserInterfaceDevelopmentEnvironment),即MATLAB图形用户界面开发环境。
GUIDE主要是一个界面设计工具集,GUIDE将用户保存设计好的GUI界面保存在一个FIG资源文件中,同时还生成包括GUI初始化和组件界面布局控制代码的M文件。
这个M文件为实现回调函数提供了一个参考框架。
图像识别算法(一级标题)
预处理(二级标题)
本论文主要识别的电子元器件包括电容、电阻、集成电路和继电器四种。
在做图像自动识别之前,我们要先能够肉眼识别出不同电子元器件,为此我们在标准元器件照片样本库中挑选出具有典型特征的元器件样本,每大类中分成两小类,如图所示。
从素材库里选出每种类型电子元器件的照片,分成训练组和检验组,数量如下表。
原始图片是RGB图像,利用GUI读入图片之后图像转化为3个矩阵,3个矩阵相对应的坐标分别代表图像对应像素点的RGB3种色值,取值范围0~255。
我们先将该图像转换为灰度图像,于是3个矩阵变成了一个矩阵,矩阵每个坐标的值对应图像像素点的灰度值,取值0~255。
接下来再将图像转换为黑白图像,矩阵的取值再次改变,每个坐标点的值为0或1。
我们对黑白图像进行分析识别。
如图,是读入的原始RGB彩色图像,用im来表示,通过im2=rgb2gray(im)语句转成灰度图像,即为图所示;通过im3=im2bw(im)语句转成黑白图像,即为图所示。
目标定位(二级标题)
用GUI读入图像,并转换成黑白图像之后,图像变成了由0和1组成的矩阵,其中0代表黑点,为目标图像;1代表白点,为背景图像。
我们首先要在整个图像中将元器件识别出来,然后对其进行定位。
理想的情况就是照片背景都是白色,元器件则是黑色,于是我们只需要将黑点的范围找到,用四个数字即可圈定图像黑点的区域——所有黑点所在的水平放置矩阵左上角和右下角的坐标。
如图,即为对电阻类型1的元器件定位后效果。
去噪和去除干扰区域(二级标题)
在上面的步骤里虽然定位了所有黑点的所在区域,但是在实际操作时发现素材图像不是理想图像,由于拍摄背景,角度,反光等因素,几乎所有的照片都受到杂点的干扰,只要有一个背景点转换成黑白图像时是黑点,那么定位矩阵就大到一定将该杂点包括进去,严重干扰后面的元器件识别。
如图所示是边缘杂点的干扰影响了对元器件的定位。
于是为了进一步精确确定元器件位置,我们要去除干扰。
经过对图像灰度转黑白的观察,当用0.5为阈值进行二值化时可以完整的保留元器件的图像,但同时也会包含一些干扰点。
我发现周边的干扰黑点在阈值转成0.2时基本可去除,如图。
于是我们先对0.2阈值的图像进行黑点区域定位,但此时本来的元器件的边缘或触头也会被滤掉,于是我们保留定位区域,再将阈值转回0.5,从选定区域向外扩展,如果某一条边上有黑点的话则继续向外扩展一像素,直到四条边都没有黑点则扩展停止,此时的0.5阈值元器件定位完成,边缘杂点干扰基本清除,元器件保持完整结构,如图所示。
目标调整(二级标题)
选定了元器件区域后,元器件并不是摆正的,这对识别不利。
于是需要将定位区域旋转使得元器件摆正。
为了减少计算量,先将定位区域截取出来,然后计算其中黑点比例,然后以3°为步长进行旋转。
由于旋转会使图像尺寸变大,故每次旋转后要重新定位一次黑点区域,然后对新定位的区域计算黑点比例,这样转到90°为止。
从旋转后的图像中取黑点比例最大的图像作为摆正的元器件图像。
如图,旋转之前的元器件区域黑点比例是0.626
如图,旋转之后的元器件区域黑点比例是0.809
几何参数计算(二级标题)
电子元器件图像摆正之后就对其进行参数计算,计算的参数包括区域黑点比例,区域长,区域宽,区域长宽比,区域黑点面积,通过regionprops函数计算出Area(是标量,计算出在图像各个区域中像素总个数。
MajorAxisLength(是标量,像素意义下与区域具有相同标准二阶中心矩的椭圆的长轴长度),MinorAxisLength(是标量,像素意义下与区域具有相同标准二阶中心矩的椭圆的短轴长度),Eccentricity(是标量,与区域具有相同标准二阶中心矩的椭圆的离心率,可作为特征),Orientation(是标量,与区域具有相同标准二阶中心矩的椭圆的长轴与x轴的交角,单位:
度),EquivDiameter(是标量,等价直径:
与区域具有相同面积的圆的直径。
),Extent(是标量,同时在区域和其最小边界矩形中的像素比例。
计算公式为:
Area除以边界矩形面积)。
Matlab算法实现(一级标题)
图像转换(二级标题)
首先用uigetfile函数从电脑中读取出bmp,jpg格式的图像文件,在axes1中显示出来,记为im1。
然后用rgb2gray语句将原始的RGB图像转换成灰度图像在axes2中显示出来,记为im2。
再用im2bw语句将原图片转换成阈值为0.5的黑白图像在axes3中显示出来,记为im3。
但是由于拍照光线,对比度等问题,0.5未必是最适合的阈值,于是最后设置一个自定义参数框,在里面输入阈值,取值范围为0~1,然后将原图片转换成该自定义阈值的黑白图像,在axes4中显示出来,记为im4。
这样程序运行的时候可以随时调节黑白图片的阈值,以便找到元器件图形显示最好状态。
目标定位(二级标题)
完成了图像转换之后就开始定位,找到合适的阈值后如果图像够理想,我们可以认为图像中只有电子元器件是黑色的,现在要对黑白图像进行黑点的定位,找出一个最小的正矩形使其包含所有的黑点,这就需要逐行扫描判断。
首先用size语句读出图像的长宽,单位是像素,长度用wide来表示,高度用height来表示。
接下来用while语句来进行循环控制,如果第一行有黑点,则up=1,如果第一行无黑点,则继续扫描第二行,在第a行遇到黑点了,则up=a,up即为从上向下扫描到第一个黑点的纵坐标,以后同理得到left是从左向右扫描到第一个黑点的横坐标,down是从下向上扫描到第一个黑点的纵坐标,right是从右向左扫描到第一个黑点的横坐标。
至此黑点的范围定位完毕,定位矩阵的左上角坐标为(up,left),右下角坐标为(down,right)。
去噪和去除干扰区域(二级标题)
定位了黑点区域后我通过程序检验发现拍照的反光等因素影响较大,如果选取0.5阈值,则边缘位置有很多杂点影响元器件的区域选取。
经过测试发现0.2的阈值可以筛掉边缘杂点的干扰,并且保留元器件,但是元器件的边缘也会有很多部分被滤掉影响辨别,综合来看还是0.5的阈值对于辨别最易接受。
于是我做出这样的设想:
先将图像转换成0.2的阈值,定位出黑点范围,即是无杂点干扰的区域,再将图像转成0.5的阈值,对之前的区域进行向外的扩张,只要某条边上有黑点就继续向外延展一像素,直到4条边都无黑点为止,此时选定的区域就是元器件的0.5阈值区域,排除了边缘部分的杂点干扰,经过测试效果良好。
程序部分先转换成0.2的阈值,然后用4.2的定位程序将0.2阈值的黑点区域定位。
再将定位的区域代回0.5阈值的图像,然后用while语句判断。
本来白色的色值为1,黑色的色值为0,现在将色值都减一,使得黑色的色值为-1,白色的色值为0,sumup代表区域矩形上边的所有点色值之和,sumleft,sumdown,sumright分别表示矩形左边,下边,右边的所有点色值之和,若这有一条边色值之和小于0,说明这条边上有黑点,需要相应的向外侧延展一个像素,一直进行这样的判断知道四条边色值之和为0为止,此时所有边上均无黑点,是涵盖了0.5阈值元器件的最小矩形区域。
目标调整(二级标题)
去除干扰地选定了电子元器件区域后就开始对区域内的元器件进行调整,首先是要将其摆正,以方便后面数据的比对。
为此需要先计算区域内的黑点比例,然后对图形进行旋转,直到区域内的黑点比例最大,就认为图像已摆正。
为了避免重复计算,先用imcrop函数将目标区域截取出来,然后为了避免元器件内部出现白点用imfill函数将图像填充。
先计算一下矩形内的黑点比例,记为rate。
用for控制循环语句让矩形区域进行旋转,每次转3度,转到90度为止。
由于转后图像尺寸会变大并且增加的像素点用黑点来填充,故在转的前后需要两次转置来使得用白点填充增加的像素点,读取剪切出来区域的长和高分别记为wide1和height1,然后再重新定位一次黑点区域,算出转后的黑点比例。
记为rate1,定义一个anglemax,默认为0,如果转后的图像黑点比例rate1大于rate,则令rate等于rate1,记下当前转的角度为anglemax,如果rate1小于rate则不进行重新复制,则rate一直是当前最大的黑点比例,anglemax是从原始图像当前的最大黑点比例图像需要转的角度。
在转完90度后一定有一个正位,使得黑点比例最大,于是再用imrotate转(anglemax-90)度将图像转到最大黑点比例的正位。
几何参数计算(二级标题)
调整好摆正的元器件图像后就只剩下计算各项有助于分类的数据的工作了。
long2为长边长,wide2为短边长,long2/wide2为长宽比,blackarea为黑点比例,用bwlabel函数给黑白图像的黑点区域做标记,然后用regionprops计算参数,提取出Area,MajorAxisLength,MinorAxisLength ,Eccentricity,Orientation,EquivDiameter,Extent这些参数。
用set将这些参数在参数框里表示出来。
设计程序界面(二级标题)
特征提取及分类器设计(一级标题)
由于素材库的原因,除继电器2都是选择10个左右的训练样本和15个左右的测试样本,见表。
通过对参数的统计进行特征提取:
由于用眼睛可以看出这些元器件的区域黑点比例不同,所以首先来统计区域黑点比例,见下图。
从区域黑点比例表中我们可以看出:
集成电路1/2和继电器2的黑点比例明显在0.85以上,电容2和电阻1的黑点比例明显在0.53以下,电容1、电阻2和继电器1的区域黑点比例在0.53与0.85之间。
所以第一次分类我们可以根据区域黑点比例把元器件分为三大类:
Rate≥0.85则属于集成电路1/2和继电器2
Rate≤0.53则属于电容2和电阻1
Rate∈[0.53,0.85]则属于电容1、电阻2和继电器1
对于
类从excel表中我们可以明显看出MajorAxisLength区分度很大,集成电路1的MajorAxisLength在150以上,继电器2的MajorAxisLength在110以下,集成电路2的MajorAxisLength在110与150之间。
这样我们就可以通过MajorAxisLength把集成电路1/2和继电器2分开,如下图
MajorAxisLength≥150则属于集成电路1
MajorAxisLength≤110则属于继电器2
MajorAxisLength∈(110,150)则属于集成电路2
对于
类,从excel表中我们可以明显看出MajorAxisLength区分度很大,电容2的MajorAxisLength明显在100以上,电阻1的MajorAxisLength明显在100以下,这样我们就可以通过MajorAxisLength把电容2和电阻1区分开,如下图
MajorAxisLength>100则属于电容2
MajorAxisLength<100则属于电阻1
对于
类,我们可以从MajorAxisLength将电容1从电容1、电阻2和继电器1这一大类中区分出来如下图
MajorAxisLength>130则属于电容1
MajorAxisLength<130则属于电阻2和继电器1
对于上面的ii类,从excel表我们可以看出EquivDiameter区分度很大继电器1的EquivDiameter明显大于70,电阻2的EquivDiameter明显小于70,那么我们可以通过EquivDiameter将继电器1和电阻2区分开,如下图
EquivDiameter>70则属于继电器1
EquivDiameter<70则属于电阻2
决策树分类示意图如下
结论(一级标题)
几何参数提取(二级标题)
几何参数提取如下表所示
分类器测试及结果(二级标题)
分类器的测试运行程序得到下表
从表中可以看出准确率在95%左右,只有电容2被判成了继电器2。
总结(二级标题)
本程序是电子元器件自动分类的基础,程序通过读取电脑自动拍摄的图像,来识别出电子元器件,并算出元器件的参数供分析。
本程序的不足之处是对有明显干扰物的图像处理的不够好,目前的解决方法是对照片进行截取,后续数据处理参见陈焘同学《电子元器件自动分类算法研究》。
参考文献
1.参考XX百科图像处理·概述:
2.求是科技,2006年3月第一版:
《MATLAB7.0从入门到精通》,人民邮电出版社
3.罗华飞,2009年8月,MATLABGUI设计学习手记(MATLAB开发实例系列图书),北京航空航天大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本科 论文