




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要I毕业设计(论文)题目基于数字图像的矩形芯片定位方法研究与实现摘要I摘要毕业设计的任务是以数字图像处理技术为基础,实现矩形芯片的定位。本文介绍了数字图像处理的基础知识,讨论了传统的边缘检测算法的优缺点,针对矩形芯片的特征设计出一种新的边缘检测算法,利用一定斜率的直线扫描图像,得到直线上像素点的灰度值之和,再根据差分法求出最优斜率,经过多次实验设定一定的阈值,求出图像边缘所在的直线,并利用计算机编程技术对得到的参数数据进行研究,分析出芯片与水平线的夹角和芯片的中心坐标,为后期的准确焊接提供支持。关键词数字图像处理;边缘检测;中心坐标;夹角ABSTRACTABSTRACTIITHISPAPEROFTHEGRADUATEDDESIGNISBASEDONDIGITALIMAGEPROCESSINGTECHNOLOGY,TOACHIEVETHEPOSITIONINGOFTHERECTANGULARCHIPTHISPAPERINTRODUCEDDIGITALIMAGEPROCESSINGKNOWLEDGE,DISCUSSEDTHEADVANTAGESANDDISADVANTAGESOFTHETRADITIONALEDGEDETECTIONALGORITHM,DESIGNEDOFANEWEDGEDETECTIONALGORITHMINVIEWOFTHECHARACTERISTICSOFTHERECTANGULARCHIP,SCANNEDIMAGEBYMAKINGUSEOFTHESTRAIGHTLINEOFACERTAINSLOPE,GOTTHEGRAYVALUEOFTHEPIXELLINE,ANDTHENDERIVETHEOPTIMALSLOPEBASEDONTHEDIFFERENCEMETHOD,THROUGHASERIESOFEXPERIMENTSSETACERTAINTHRESHOLD,WHEREISTHECALCULATEDSTRAIGHTLINEOFTHEEDGE,ALSOMAKEUSEOFCOMPUTERPROGRAMMINGTECHNOLOGYTORESEARCHACCORDINGTOTHEPARAMETERSOFDATA,ANALYSISTHECHIPANDTHEANGLEBETWEENTHEHORIZONANDTHECENTEROFTHECHIPCOORDINATES,TOPROVIDESUPPORTFORTHELATTERACCURATEWELDINGKEYWORDSDIGITALIMAGEPROCESSINGEDGEDETECTIONCENTERCOORDINATESANGLE目录摘要I目录ABSTRACTII第一章研究现状和实际意义111数字图像处理的背景112数字图像处理的研究现状113矩形芯片研究的实际意义2第二章数字图像编程基础321WINDOWS编程简介3211VISUALC简介3212VISUALC数字图像编程基础422开发平台5第三章数字图像处理典型算法631BMP图像简介632边缘检测原理633四种典型边缘检测算子7331ROBERTS边缘检测算子7332SOBEL边缘检测算子7333PREWITT边缘检测算子8334拉普拉斯边缘检测算子934四种典型算子的不足之处15第四章系统功能设计与实现1641总体设计1642界面设计1743矩形芯片图像的获取18431灰度图简介18432矩形芯片的读取与显示1344矩形芯片边缘检测的设计14441边缘检测算法的设计思路15442边缘检测最优斜率K的计算16443边缘扫描17444边界提取方案1945矩形芯片偏角的计算2046矩形芯片中心坐标的计算2047功能总结26第五章小结与感受2751VC编程感受2752本芯片定位方法的意义2353本芯片定位方法的优点2354本研究有待改进的地方23结束语24参考文献25基于数字图像的矩形芯片定位方法研究与实现1第一章研究现状和实际意义11数字图像处理的背景数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程,就是采用计算机对图像进行信息加工。图象处理的主要内容有图像的采集、增强、复原、变换、编码、重建、分割、配准、嵌拼、融合、特征提取、模式识别和图像理解。数字图像处理是一个跨学科的前沿科技领域,它与数学、光学、电子学、计算机技术、成像技术、视觉心理学、视觉生理学、计算机视觉和人工智能密切相关。数字图像处理最早出现于20世纪50年代,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量。输入的是质量低的图像,输出的是改善质量后的图像。首次获得实际成功应用的是美国喷气推进实验室。他们对航天探测器在1964年发回的几千张月球照片使用了图像处理技术,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。数字图像处理取得的另一个巨大成就是在医学上获得的成果。1972年英国工程师HOUNSFIELD发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT。CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类做出了划时代的贡献。从70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。人们已开始研究图像理解或计算机视觉。很多发达国家投入更多的人力、物力到这项研究,取得了不少重要的研究成果。12数字图像处理的研究现状近年来图像处理技术发展非常迅速,应用也越来越广,已经渗透到工程、工业、医疗保险、航天航空、军事、科研等各个方面,有些技术已经相当成熟并取得了惊人的效益。20世纪20年代,图像处理首次得到应用。20世纪60年代中期,随电子计算机的发展得到普遍应用。60年代末,图像处理技术不断完善,逐渐成为一个新兴的学科。利用数字图像处理主要是为了修改图形,改善图像质量,或是从图像中提取有效信息,还有利用数字图像处理可以对图像进行体积压缩,便于传输和保存。数字图像处理主要研究以下内容傅立叶变换、小波变换等各种图像变换;对图像进行编码和压缩;采用各种方法对图像进行复原和增强;对图像进行分割、描述和识别等。随着技术的发展,数字图像处理主要应用于通讯技术、宇宙探索遥感技术和生物工程等领域。数字图像处理因易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强,精度高,处理方法灵活,信息保存、传送可靠的图像处理技术。主要用于图像变换、量测、模式识别、模拟以及图像产生。广泛应用在遥感、宇宙观测、影像医学、通信、刑侦及多种工业领域。基于数字图像的矩形芯片定位方法研究与实现2图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。随着科学技术的发展,数字图像处理技术的应用领域也将随之不断扩大。进入21世纪,随着计算机技术的迅猛发展和相关理论的不断完善,数字图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就。属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等。该技术成为一门引人注目、前景远大的新型学科。数字图像处理技术在航空航天、工业生产、医疗诊断、资源环境、气象及交通监测、文化教育等领域有着广泛的应用,创造了巨额社会价值;同时还远远不能满足社会需求,自身也在不断完善和发展,有很多新的方面要探索。它必将向更深入、更完善的方向发展处理算法更优化,处理速度更快,实现图形的智能生成、处理、识别和理解。13矩形芯片研究的实际意义基于数字图像的研究国内已有很多例子,例如基于SPCA563B芯片的图像识别系统,是凌阳科技公司推出的一颗用于图像识别领域的IC,不仅具有一般单片机的控制功能,而且具有图像识别与处理能力。该图像识别系统就是以它为核心进行数据处理与控制。该系统已实现的功能有物体颜色和形状识别、字符识别以及手势识别等。利用这些识别的结果,可以开发游戏、趣味教学、智能玩具、文字输入以及智能识别等应用系统。还有近年来对各种车牌图像的提取文献都用到了图像识别的方法,对车牌的定位,车牌的边缘检测以及对车牌上各种字符(英文字母和数字)的识别,还要有一定得图像分割与模式匹配,得到车牌上的各种字符。本课题是基于数字图像的矩形芯片的定位研究,主要通过对芯片在电路板上的扫描图像,识别图像的外观、形态及坐标,利用正确的算法计算芯片在电路板上放置的正确性,从而达到芯片正确焊接的目的。本课题的工作主要分为以下三个方面一是读入矩形芯片的图像,得到图像的坐标和每个坐标对应的RGB值,研究图片的灰度信息。二是针对矩形芯片的特征设计边缘检测算法,得到图像的边缘并把边缘提取出来。三是在已经得到的矩形芯片图片的边缘与轮廓的基础上,利用计算机编程技术对得到的参数数据进行研究,分析出芯片中心坐标和芯片与水平线的夹角,为后期的准确焊接提供数据支持。基于数字图像的矩形芯片定位方法研究与实现3第二章数字图像编程基础21WINDOWS编程简介WINDOWS编程是基于MICROSOFT公司的WINDOW操作系统的编程,WINDOWS编程可以为WINDOWS操作系统制作软件,而且WINDOWS编程是基于窗口的不像以前的DOS编程只有一个屏幕,而WINDOW可以在可见化的世界里任意施展,WINDOW32全部都是用C写的下面简单介绍一下与WINDOWS系统密切相关的几个基本概念窗口窗口是WINDOWS本身以及WINDOWS环境下的应用程序的基本界面单位。从用户的角度看,窗口就是显示在屏幕上的一个矩形区域,其外观独立于应用程序,事实上它就是生成该窗口的应用程序与用户间的直观接口;从应用程序的角度看,窗口是受其控制的一部分矩形屏幕区。应用程序生成并控制与窗口有关的一切内容,包括窗口的大小、风格、位置以及窗口内显示的内容等。用户打开一个应用程序后,程序将创建一个窗口,并在那里默默地等待用户的要求。每当用户选择窗口中的选项,程序即对此做出响应。程序通常说的程序都是指一个能让计算机识别的文件,接触得最多的便是EXE型的可执行文件。进程所谓进程就是应用程序的执行实例(或称一个执行程序)。需要注意的是进程是程序动态的描述,而上面说到的程序是静态的描述,两者有本质的区别。线程线程是进程中的一个执行单元,同一个进程中的各个线程对应于一组CPU指令、一组CPU寄存器以及一些堆栈。进程本来就具有动态的含义,然而实质上是通过线程来执行体现的,从这个意义上说,WINDOWS进程的动态性意义已经不是很明显了,只算是给程序所占的资源划定一个范围而已,真正具有动态性意义的是线程。消息我们几乎做每一个动作都会产生一个消息,在用鼠标指点江山的今天,鼠标被移动会产生WM_MOUSEMOVE消息,鼠标左键被按下会产生WM_LBUTTONDOWN的消息,鼠标右键按下便产生WM_RBUTTONDOWN消息等等。所有的这些都可以通过GETMESSAGE,SENDMESSAGE等函数得到。事件从它的字面意思我们就可以明白它的含义,如在程序运行的过程中改变窗口的大小或者移动窗口等,都会触发相应的“事件”。句柄单单一个“柄”字便可以解释它的意思了,我们天气热时摇扇子的时候只要抓住扇柄便可以控制整个扇子的运动了,在程序中也差不多是这个意思。通常一个句柄就可以传递我们所要做的事情。有经验的读者肯定清楚,编写程序总是要和各种句柄打交道的,句柄是系统用来标识不同对象类型的工具,如窗口、菜单等,这些东西在系统中被视为不同类型的对象,用不同的句柄将他们区分开来。211VISUALC简介VISUALC是一个功能强大的可视化软件开发工具。自1993年MICROSOFT公司推出VISUALC10后,随着其新版本的不断问世,VISUALC已成为专业程序员进行软件开基于数字图像的矩形芯片定位方法研究与实现4发的首选工具。VISUALC60不仅是一个C编译器,而且是一个基于WINDOWS操作系统的可视化集成开发环境(INTEGRATEDDEVELOPMENTENVIRONMENT,IDE)。VISUALC60由许多组件组成,包括编辑器、调试器以及程序向导APPWIZARD、类向导CLASSWIZARD等开发工具。这些组件通过一个名为DEVELOPERSTUDIO的组件集成为和谐的开发环境。VISUALC它大概可以分成三个主要的部分1DEVELOPERSTUDIO,这是一个集成开发环境,我们日常工作的99都是在它上面完成的,再加上它的标题赫然写着“MICROSOFTVISUALC”,所以很多人理所当然的认为,那就是VISUALC了。其实不然,虽然DEVELOPERSTUDIO提供了一个很好的编辑器和很多WIZARD,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道,DEVELOPERSTUDIO并不是专门用于VC的,它也同样用于VB,VJ,VID等VISUALSTUDIO家族的其他同胞兄弟。所以不要把DEVELOPERSTUDIO当成VISUALC,它充其量只是VISUALC的一个壳子而已。2MFC。从理论上来讲,MFC也不是专用于VISUALC,BORLANDC,CBUILDER和SYMANTECC同样可以处理MFC。同时,用VISUALC编写代码也并不意味着一定要用MFC,只要愿意,用VISUALC来编写SDK程序,或者使用STL,ATL,一样没有限制。不过,VISUALC本来就是为MFC打造的,VISUALC中的许多特征和语言扩展也是为MFC而设计的,所以用VISUALC而不用MFC就等于抛弃了VISUALC中很大的一部分功能。但是,VISUALC也不等于MFC。3PLATFORMSDK。这才是VISUALC和整个VISUALSTUDIO的精华和灵魂,虽然我们很少能直接接触到它。大致说来,PLATFORMSDK是以MICROSOFTC/C编译器为核心,配合MASM,辅以其他一些工具和文档资料。上面说到DEVELOPERSTUDIO没有编译程序的功能,那么这项工作是由谁来完成的呢是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成VISUALSTUDIO的基石。212VISUALC数字图像编程基础一幅图像定义为一个二维函数FX,Y,这里X和Y是空间坐标,在任何一对空间坐标X,Y上的幅值F称为该点图像的强度或灰度。当幅值F为有限的、离散的数值时,称该图像为数字图像。数字图像由有限的元素组成,每个元素都有一个特定的位置和幅值,这些元素称为像素(图像元素或画面元素)。数字图像从数学的角度其实就是一个二维矩阵,因此数字图像处理本质上就是矩阵运算通常所说的数字图像处理是指计算机对图像信息的处理。总的来说,数字图像处理包括以下几项内容点运算,几何处理,图像增强,图像复原,图像形态学处理,图像编码,图像重建,模式识别等。点运算主要针对图像的像素进行加减乘除等运算。图像的点运算可以有效的改变图像的直方图分布。基于数字图像的矩形芯片定位方法研究与实现5几何处理主要包括图像的坐标转换,图像的移动、缩小、放大和旋转,多个图像的配准以及图像扭曲校正等。几何处理是最常见的图像处理手段。图像增强和图像复原影响系统图像清晰程度的因素很多,例如室外光照度不够均匀就会造成图像灰度过于集中;由CCD(摄像头)获得的图像经过A/D(数/模转换,该功能在图像系统中由数字采集卡来实现)转换、线路传送都会产生噪声污染等等。因此图像质量不可避免的降低了,轻者表现为图像不干净,难于看清细节;重者表现为图像模糊不清,连概貌也看不出来。因此,在对图像进行分析之前,必须要对图像质量进行改善,一般情况下改善的方法有两类图像增强和图像复原。图像增强不考虑图像质量下降的原因,只将图像中感兴趣的特征有选择的突出,而衰减不需要的特征,它的目的主要是提高图像的可懂度。图像增强的方法分为空域法和频域法两类,空域法主要是对图像中的各个像素点进行操作;而频域法是在图像的某个变换域内,对图像进行操作,修改变换后的系数,例如傅里叶变换、DCT变换等的系数,然后再进行反变换得到处理后的图像。图像复原技术与增强技术不同,它需要了解图像质量下降的原因,首先要建立“降质模型“,再利用该模型,恢复原始图像。图像压缩(图像编码)图像压缩是指以较少的比特有损或无损地表示原来的像素矩阵的技术,也称图像编码。图像数据之所以能被压缩,就是因为数据中存在着冗余。图像数据的冗余主要表现为图像中相邻像素间的相关性引起的空间冗余;图像序列中不同帧之间存在相关性引起的时间冗余;不同彩色平面或频谱带的相关性引起的频谱冗余。数据压缩的目的就是通过去除这些数据冗余来减少表示数据所需的比特数。由于图像数据量的庞大,在存储、传输、处理时非常困难,因此图像数据的压缩就显得非常重要。模式识别模式识别是指对表征事物或现象的各种形式的信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程。它是信息科学和人工智能的重要组成部分,主要应用领域是图像分析与处理、语音识别、声音分类、通信、计算机辅助诊断、数据挖掘等学科。图像重建指通过对离散图像进行线性空间内插或线性空间滤波来重新获得连续图像的方法。22开发平台1硬件平台PC一台2系统平台WINDOWS2000或者WINDOWSXP操作系统3开发环境MICROSOFTVISUALC60基于数字图像的矩形芯片定位方法研究与实现6第三章数字图像处理典型算法31BMP图像简介BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选1BIT、4BIT、8BIT及24BIT。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是WINDOWS环境中交换图像数据的一种标准,因此在WINDOWS环境中运行的图形图像软件都支持BMP图像格式。典型的BMP图像文件由三部分组成位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。在BMP位图中,位图每行的灰度值要填充到一个四字节边界,即位图每行所占的存储长度为四字节的倍数,不足时将多余位用0填充。本文所研究的芯片图片格式是BMP24BIT图像深度。32边缘检测原理所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征。边缘存在于目标、背景和区域之间,所以,它是图像分割所依赖的最重要的依据。由于边缘是位置的标志,对灰度的变化不敏感,因此,边缘也是图像匹配的重要特征。两个具有不同灰度值的相邻区域之间总存在边缘,边缘是灰度值不连续的表现。常见的边缘点有阶梯型边缘(STEPEDGE),即从一个灰度(或线性灰度)到达比它高(或低)很多的另一个灰度;屋顶型边缘(ROOFEDGE),它的灰度是慢慢增加(减少)到一定程度然后慢慢减小(增加);线性边缘(LINEEDGE),它是灰度线性变换中出现的灰度脉冲。在计算机视觉和图像处理过程中,边缘检测是捕获图像中物体的重要特征的过程。这些特征包括物体光学度、几何、物理等的不连续性。在灰度图像中,这些信息产生了灰度的变化,这些变化包括不连续性和极大值。边缘检测的目的就是定位这些变化和鉴别产生变化的物理现象。边缘检测的结果提供了图像的重要特征。许多边缘检测操作都是基于亮度的一阶导数这样就得到了原始数据亮度的梯度。使用这个信息我们能够在图像的亮度梯度中搜寻峰值。如果IX表示点X的亮度,IX表示点X的一阶导数(亮度梯度),这样我们就会发现对于更高性能的图像处理来说,一阶导数能够通过带有掩码的原始数据(1维)卷积计算得到。其它一些边缘检测操作是基于亮度的二阶导数。这实质上是亮度梯度的变化率。在理想的连续变化情况下,在二阶导数中检测零点将得到梯度中的局部最大值。另基于数字图像的矩形芯片定位方法研究与实现7一方面,二阶导数中的峰值检测是边线检测,只要图像操作使用一个合适的尺度表示。如上所述,边线是双重边缘,这样我们就可以在边线的一边看到一个亮度梯度,而在另一边看到相反的梯度。这样如果图像中有边线出现的话我们就能在亮度梯度上看到非常大的变化。为了找到这些边线,我们可以在图像亮度梯度的二阶导数中寻找过零点。如果IX表示点X的亮度,IX表示点X亮度的二阶导数,那么同样许多算法也使用卷积掩码快速处理图像数据。一旦我们计算出导数之后,下一步要做的就是给出一个阈值来确定哪里是边缘位置。阈值越低,能够检测出的边线越多,结果也就越容易受到图片噪声的影响,并且越容易从图像中挑出不相关的特性。与此相反,一个高的阈值将会遗失细的或者短的线段。一个常用的这种方法是带有滞后作用的阈值选择。这个方法使用不同的阈值去寻找边缘。首先使用一个阈值上限去寻找边线开始的地方。一旦找到了一个开始点,我们在图像上逐点跟踪边缘路径,当大于门槛下限时一直纪录边缘位置,直到数值小于下限之后才停止纪录。这种方法假设边缘是连续的界线,并且我们能够跟踪前面所看到的边缘的模糊部分,而不会将图像中的噪声点标记为边缘。33四种典型边缘检测算子如果一个像素落在图像中某一个物体的边界上,那么它的邻域将成为一个灰度级变化的带。对这种变化最有用的两个特征是灰度的变化率和方向,它们分别以梯度向量的幅度和方向来表示。边缘检测算子检查每个像素的邻域井并对灰度变化率进行量化,通常也包括方向的确定有若干种方法可以使用,其中大多数是基于方向导数掩模求卷积的方法。331ROBERTS边缘检测算子ROBERTS边缘检测算子是一种利用局部差分算子寻找边缘的算子,ROBERT算子图像处理后结果边缘不是很平滑。经分析,由于ROBERT算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。它由公式(31)给出GX,Y21,YXFYF2(31),1FF1其中FX,Y是具有整数像素坐标的输入图像。其中的平方根运算使该处理类似于人类视觉系统中发生的过程。332SOBEL边缘检测算子索贝尔算子(SOBELOPERATOR)是图像处理中的算子之一,主要用作边缘检测。在技基于数字图像的矩形芯片定位方法研究与实现8术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。图31所示的两个卷积核形成了SOBEL边缘算子。图像中的每个点都用这两个核做卷积。一个核对通常的垂直边缘响应最大而另一个对水平边缘响应最大。两个卷积的最大值作为该点的输出值、运算结果是一幅边缘幅度图像。GXANDGYA102A120图31SOBEL边缘算子图像的每一个像素的横向及纵向梯度近似值可用(32)公式结合,来计算梯度的大小。G(3222YX)然后可用(33)公式计算梯度方向。XYGARCTN(33)如果以上的角度等于零,即代表图像该处拥有纵向边缘,并且左方较右方暗。333PREWITT边缘检测算子在一个较大区域中,用两点的偏导数值来求梯度幅度值,受噪声干扰很大。若对两个点的各自一定领域内的灰度值求和,并根据两个灰度值和的差来计算X,Y的偏导数,则会在很大程度上降低噪声干扰。源于这种思想,PREWITT于1970年提出了提取边缘的PREWITT算子,其系数加权模板如表31和32表31PREWITT算子模板1111000基于数字图像的矩形芯片定位方法研究与实现8111表32PREWITT算子模板2101101101上图所示的两个卷积核形成了PREWITT边缘算子。与使用SOBEL算子的方法一样,图像中的每个点都用这两个核进行卷积,取最大值作为输出。PREWITT算子也产生一幅边缘幅度图像。334拉普拉斯边缘检测算子拉普拉斯算子是对二维函数进行运算的二阶导数算子,通常使用的拉普拉斯算子如表33和34表33拉普拉斯算子1010141010表34拉普拉斯算子2111181111由于拉普拉斯算子是一个二阶导数,他将在边缘处产生一个陡峭的零交叉,由于噪声对边缘检测有一定得影响,所以拉普拉斯算子是效果较好的边缘检测器。根据图像边缘处的一阶微分(梯度)是极限值点,图像边缘处的二阶微分应为零,确定过零点的位置要比确定极值点容易得多,而且比较精确。但二阶微分对噪音更为敏感。基于数字图像的矩形芯片定位方法研究与实现10因此,在通常情况下,在对图像进行拉普拉斯算子进行边缘处理前,应先对图像进行平滑滤波器处理,一般采用的是高斯滤波器。把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来,先平滑噪声,再进行边缘检测的方法叫做高斯拉普拉斯算子(简写LOG算子)。常用的LOG算子是55的模块,如表35。表35LOG算子模块24442408044824844080424442在LOG算子中对边缘进行判断时采用的技术是零交叉检测,可以把零交叉检测进行推广,我们只要在检测前用指定的滤波器对图像进行滤波,然后再寻找零交叉点作为边缘。34四种典型算子的不足之处由上述边缘算子产生的边缘图像看来很相似。它们看起来像一个绘画者从图片中做出的线条画。ROBERT算子是22算子,对具有陡峭的低噪声图像响应最好。其它三个算子,都是33算子,对灰度渐变和噪声较多的图像处理得较好。使用两个掩模板组成边缘检测器时,通常取较大得幅度作为输出值。这使得它们对边缘的走向有些敏感。取它们的平方和的开方可以获得性能更一致的全方位响应。这与真实的梯度值更接近。但是以上三种经典算子检测出来的边缘在本文的芯片定位中所达到的效果却不是很好,因为本文的主要目的是通过边缘检测得出芯片的偏角和中心坐标,这些经典的算法只能把边缘显示出来,但之后要求的偏角和中心坐标却难以求出,所以边缘检测的算法必须重新设计。基于数字图像的矩形芯片定位方法研究与实现10第四章系统功能设计与实现41总体设计本系统主要通过对芯片在电路板上的扫描图像,识别图像的外观、形态及坐标,利用正确的算法计算芯片在电路板上放置的正确性,从而达到芯片正确焊接的目的。本课题总共分为以下几个模块模块一读入矩形芯片的图像,得到图像的坐标和每个坐标对应的RGB值。模块二设计边缘检测算法,得到图像的边缘。包括1最优K的计算2纵向扫描和横向扫描,得出边缘所在直线的截距3画出边缘直线模块三求出芯片与水平线的夹角和芯片中心坐标。系统模块如图41,子模块如图42所示矩形芯片定位方法与实现读入图像并得到图像坐标和RGB值边缘检测得到图像边缘求出芯片与水平线夹角和中心坐标图41系统模块基于数字图像的矩形芯片定位方法研究与实现12边缘检测最优K的计算纵向扫描横向扫描画出边缘直线图42子模块42界面设计本设计是在VC60的编程环境下实现的,在MFCAPPWIZARDEXE中创建一个新的单文档实现图像的打开和读取。然后在编辑栏下添加边缘检测等菜单,并做相应的消息映射。界面如图43图43界面显示基于数字图像的矩形芯片定位方法研究与实现1343矩形芯片图像的获取431灰度图简介本文主要研究BMP灰度图,灰度图(GRAYSCALE)是指只含亮度信息,不含色彩信息的图像,就像我们平时看到亮度由暗到明的黑白照片,亮度变化是连续的,因此要表示灰度图,就需要把亮度值进行量化,通常划分为0255共256个级别,0最暗,255最亮。BMP格式的文件可以用256色的调色板来表示灰度图,只不过这个调色板有点特殊,每一个RGB值都是相同的,也就是RGB值从(0,0,0)一直到(255,255,255)。灰度图使用比较方便,首先RGB值都一样,其次图像数据即调色板索引值,也就是实际的RGB的亮度值。432矩形芯片的读取与显示1)本矩形芯片的图像是典型的256色BMP文件格式,芯片图像的读取是在CBMP256DOC文件的SERIALIZE函数中,通过ARWRITE函数和ARREAD函数来读取图像的位图文件头、位图信息头、颜色表和位图数据本身。ARWRITEM_BUFFER,M_INFOHEADERBIWIDTHM_INFOHEADERBIHEIGHT为位图分配一定空间的缓冲区。2)在CBMP256VIEW文件中,如果缓冲区不为空,通过ONDRAW函数调用SHOWBUFFER函数把缓冲区中的图像显示在内存设备环境中。IFPDOCM_BUFFERNULLM_HEIGHTPDOCM_INFOHEADERBIHEIGHTM_WIDTHPDOCM_INFOHEADERBIWIDTHM_BUFFERPDOCM_BUFFERM_INFOHEADERPDOCM_INFOHEADERSHOWBUFFER0,0/调用函数3)图像信息显示出来后,在CBMP256VIEW文件中设计一ONMOUSEMOVE函数,通过指针P计算出任一点处的RGB值,并显示出任一点处的(X,Y)坐标及对应的RGB值。BYTESM_INFOHEADERBIBITCOUNT/8PM_BUFFERM_HEIGHTPOINTYM_WIDTHPOINTXBYTES/灰度值基于数字图像的矩形芯片定位方法研究与实现14IFBYTES1/如果是8位灰度图,就输出灰度值SPRINTFMESSAGE,“X3DY3DGRAY3D“,POINTX,POINTY,P/8位IFBYTES3/如果是24位灰度图,就输出RGB值SPRINTFMESSAGE,“X3DY3DR3DG3DB3D“,POINTX,POINTY,P2,P1,P/24位4)图像显示如图44图44读入图像显示说明因为实验的图像为24位BMP位图,图像下方的X,Y,R,G,B值均根据鼠标的移动在不断变化,同时,当鼠标移动到位图外时,只显示(X,Y)坐标信息。44矩形芯片边缘检测的设计本课题的边缘检测分为以下几个部分(1)最优K的求取,根据最优K进行横向扫描和纵向扫描,得到边缘直线基于数字图像的矩形芯片定位方法研究与实现15(2)根据直线斜率得出芯片与水平线的偏角(3)根据四条边缘直线方程计算得出位图的中心坐标。441边缘检测算法的设计思路考虑到本图像中芯片的形状是矩形,在图像任一点的灰度值已经求出的前提下,把对图像的扫描分为横向扫描和纵向扫描,横向扫描时,从原点开始做固定斜率且互相平行的直线,该直线在Y轴上的截距是逐渐加1变化的,当直线恰好扫描到矩形芯片的边缘时,此时该直线上的所有像素点的灰度值的和变化最大,此时可以确定该直线,得到边缘所在直线在Y轴上的截距,以便于后面的边缘提取。纵向扫描时的边缘检测原理同理于横向扫描。1)在求直线上像素点之和的时候,需要注意有时候直线经过的点并不是像素点,此时需要求出该直线之上的像素点值和直线之下的像素点,并通过一定得比例(LAMEDA)相加求出该点的灰度值。即PM_BUFFERM_HEIGHTIM_WIDTHX1BYTES/灰度值T11RPPM_BUFFERM_HEIGHTIM_WIDTHX2BYTES/灰度值T1RPCHECKMJT1/直线上的灰度值之和此时所求的才是直线式的灰度之和,R就为LAMEDA,是通过RFABSXX1求得。2)下面为对于不同斜率的直线在横向扫描时所得的直线上的灰度值之和FORM1M0RETURNF2/截距点横向扫描时最优K一定后,横向扫描的斜率根据垂直定律和坐标平移原理得出即为K。所以此时扫描时的直线设为YKIJFORJBHJ0RETURNF3/截距点说明当然阈值的确定是个很难的过程,在横向扫描和纵向扫描的算法弄明白以后,需要一步步的进行实验来确定阈值,在这个过程中,我尝试过很多方法,为了避免过大的误差,只能一步步的代入接近边缘的灰度值,对不同的图像进行试验,最终会得到一个比较适合的阈值。444边界提取方案1)在得到矩形边缘所在直线在纵坐标上的截距点后,根据已知的斜率,由点斜式公式在ONDRAW函数中画出矩形的边。M_TOPLSUMM_LEFTHSUM2)简单代码如下ONDRAWPDCMOVETOM_TOP,0/画出已知的一条纵向直线,为矩形的一条边PDCLINETOINTKM_HEIGHTM_TOP,M_HEIGHTPDCMOVETOM_TOP238,0/在离已知纵向直线固定距离处画平行的另外一条边PDCLINETOINTKM_HEIGHTM_TOP238,M_HEIGHTPDCMOVETO0,M_LEFT画出已知的一条横向直线,为矩形的一条边PDCLINETOM_WIDTH,INTM_LEFTKM_WIDTHPDCMOVETO0,M_LEFT380在离已知纵向直线固定距离处画平行的另外一条边PDCLINETOM_WIDTH,INTM_LEFT380KM_WIDTH基于数字图像的矩形芯片定位方法研究与实现20说明此时固定数值238与380为矩形芯片图像的宽度和长度。通过平行原理,根据其中一条边已确定求出平行于矩形芯片的另一条边,这是矩形芯片的形状优势所在。3)边界直线如图46所示图47边缘检测后的图像显示45矩形芯片偏角的计算1)最优K求出以后,根据斜率与角度的数学关系求出该位图的偏角偏角ATAN斜率180/314并通过MESSAGEBOX输出结果2)伪代码如下DEGREEINTATANK180/314/偏角STR2FORMAT“该矩形芯片的偏角为D度“,DEGREEMESSAGEBOXSTR23)边缘检测后,点击偏角即得如图47所示的对话框,输出该位图的偏角。基于数字图像的矩形芯片定位方法研究与实现21图48偏角对话框46矩形芯片中心坐标的计算1)在已知斜率和截距点的前提下,求出平行于矩形两长边并且截距等于两长边在纵坐标上的截距之差的1/2时的直线,同理,再求出平行于矩形两短边并且截距等于两短边在纵坐标上的截距之差的1/2时的直线,两条直线的方程形成方程组,求出两直线的交点,即为矩形芯片的中心坐标。由方程组1YKXH_JU2XKYL_JU得出的(X,Y)即为中心坐标即(H_CENTER,L_CENTER)2)伪代码如下INTH_JU,L_JU,H_CENTER,L_CENTERGET_TOP_LEFTH_JUM_TOP238/2L_JUM_LEFT380/2K_NOOPTIMALKM_CHECKKFLOAT02FK_NOFLOATDELTA_KH_CENTERINTK/KK1L_JU1/KK1H_JUL_CENTERINTKH_CENTERL_JUSTR1FORMAT“该矩形芯片的中心坐标D,D“,H_CENTER,L_CENTERMESSAGEBOXSTR13)边缘检测后,点击中心坐标即得如图48所示的对话框,输出该位图的中心坐标。图49中心坐标对话框47功能总结基于数字图像的矩形芯片定位方法研究与实现21本课题的算法是通过扫描位图信息,得到矩形芯片边缘的四条直线,由这四条规则的直线可以得出中心坐标和夹角,是一个方便而又有效的算法。当然其中也不乏有阈值确定时的误差,需要大量的实验验证才能精确,同时阈值设定的算法很简单,仍需改进。总的来说,本算法实现了任务预期的结果,达到了最终的目的。第五章小结与感受51VC编程感受通过做毕设这几个月对VC的学习,对WINDOWS编程逐步熟悉起来,同时也认识到学习就是一个循序渐进的过程,所以,坚持最终要,只要坚持住了,就会有收获,一点一点的积累就好,时间也是很重要的,没有实践,只是不会从理论过渡到一个应用的过程,没有实际的操作,就不可能把知识掌握牢。在没有熟练C、C及编程思想前,一定不要接触VC的图形界面编程和MFC类库,否则你就会对VC望而却步的。由于毕业设计的需要我必须从头学VC界面编程和使用MFC类库,当然之前C是必须要有一定基础的,这样才能学起来不算太难。现在毕业设计已接近尾声,我总结了自己编程方面的感受。我认为首先在有了一定的编程基础后,看别人的程序,尤其是好程序,是非常有益的,其帮助也会很大。不过在这同时你一定要动手去编,不然只能算是你看明白了或者“懂”了,而不能说你会了、“掌握”了,这之间有很大的差别。当然,我并不否认读程序,其实“看别人的”和“自己写”几乎同等重要。有时我觉得总写一些程序,似乎没什么新东西,原来很久没看新东西了,看一看,似乎会有点发现,新的或者原来问题的解决办法。其实学习就是这样看看,记记,然后就掌握了。有时看别人一个程序,能解决自己长期的困惑。通过近几个月的学习VC这个工具,对它的熟悉也不断提高,对它的方便之处深有体会,在这个过程中,启发出了不少的想法,也对大学中学习到的知识或多或少的进行了复习,也不乏是个好的学习的机会。VC的核心就是MFC,MFC是个C类库,就像结构化程序设计时代的C语言函数库一样,给程序员提供了丰富的编程接口,简化了程序的设计。而MFC就是直接把WINDOWS的C语言编程接口API函数用C的类封装而成这样既实现了面向对象的编程思想,又直接使用了WINDOWS的原始编程接口,代码的效率是最高的基于数字图像的矩形芯片定位方法研究与实现221WINDOW是由许多DLL搭起来的系统的总称,开发WINDOW程序就是如何调用这些DLL,对于C程序员,它提供了H/LIB,这些东西和一些文档就构成SDK,DDK。他们在任何支持DLL调用的开发环境中都可以使用(即函数指针)。2通常SDK指与WINDOW核心调用有关的,但并不是专用名称。也用于其他地方VC只是一个编程工具,就如BC、BCB、DELPHI一样,其实对于编程最根本的就是三个方面,语言、开发包、操作系统API,他们三个方面应该说是相对比较独立的。VC是MS开发的,所以针对的是WIND
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论