版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章绪论1.1引言
近几年来,数字图像技术越来越受到人们广泛的关注。大多数人们接受信息是来自于视觉信息也就是图像信息,因此这是人类最有效和最重要的信息获取、交流方式。随着科技的发展把图像当作检测和传递信息的手段或载体,直接对得到的图像进行分析处理从而获得我们感兴趣的信息已经成为重要的分析和测量手段。
图像技术的加入解决单纯依靠人工进行硬币的统计分析存在的操作费时、复杂和精度不高等缺陷,而且重要的是用计算机可对硬币图像作各种处理,既加快了分析处理的速度,又可以突出人们需要的信息。很多人工直接观察不到的重要信息,通过计算机图像处理分析之后能够很清楚地看到,还可对硬币图像作测量和统计分析等,大大扩展了人眼能看到接收到的信息量。这种技术不仅解决了银行系统和公交系统针对硬币的处理难度,而且大大提高了对硬币的计数和整理。对我们的生活有着积极的作用。1.2研究意义
图像方法应用于硬币检测可以大幅度提高速度,减少所用时间,提高准确性,并且通过软件分析可以实现各种参数的实时分析,图像曲线显示等各种功能,应用前景广阔。正因为图像方法的重要性和其具有的巨大潜力,图像的处理和分析方法研究一直受到广泛重视。其中关于如何从硬币图像中准确获得硬币外观轮廓的信息,并进一步测量硬币的特征参数已经成为研究的热点,各种对硬币计数的方法相继而来。
因为硬币图像分析研究的特殊性和复杂性,还有大量的问题需要解决。各种以图像方法为基础的硬币检测系统实际工作时会受大量其他因素影响,如光照条件、成像方向的变化,硬币的种类,图像采集设备的光电特性产生噪声等,都会对硬币的计数产生一定的影响,这使得问题变得比较复杂。本次课题研究的意义在于通过探索硬币的数字图像处理和分析技术的新方法和新手段,以达到数字图像技术在对硬币检测过程中提高检测速度、准确性以及检测应用的广泛性。针对多种情况作了各自的处理,大大提高了对硬币检测的可能性,面对各种情况,通过不同的方法,可以有针对性地分别处理,从而可以准确的获得硬币的数量。1.3国内外现状
目前,欧美国家对图像物体的统计开展了大量相关的研究。上世纪90年代,美国就组织麻省理工大学等高校开始研究用于民事和军事的数字图像处理技术。
国内在MATLAB数字图像的领域也开展了大量的研究工作,在人脸识别、车辆识别、车牌识别等方面取得了巨大的成就。但是相对于国外的研究现状而言,我国对计算机视觉技术在农产品领域中的应用起步较晚,技术相对还不成熟。1.4
MATLAB平台简介
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
由于这些MATLAB自带的特点,让MATLAB处理数字图像方面的研究课题变得较为方便,因此我们选用MATLAB为这次设计的主要研究工具。第二章系统的总体设计2.1系统的设计目标我国是一个经济大国,各种硬币有很多,人工拣选的话虽然成本低廉,但违背了解放生产力的根本目标,我们经常看到银行的工作人员花几个小时在哪里数硬币,这种做法效率太低,所以针对这种问题的研究变得越来越深入,人们已经研究出了许多的解决方法。本课题的设计目标是设计一个基于MATLAB的自动计数系统,将测试硬币均匀分布的图片通过自动摄像头读取程序读入MATLAB中,然后对其进行预处理后,再经过对其进行一系列的处理运算和算法运算以后,得到最终要计数的图片,最后运用统计计算函数,计算出图像中硬币的数目。2.2系统的设计总框图本次设计主要包括对图像预处理,图像分割,图像填充和统计计算等部分,具体的设计总框图如图1所示:读取图像图像分割图像滤波图像灰度化读取图像图像分割图像滤波图像灰度化统计计数边缘处理膨胀与填充边缘检测统计计数边缘处理膨胀与填充边缘检测图1系统总框图第三章硬币计数的具体实现3.1图像的预处理图像预处理首先是将拍摄到的硬币图片导入到系统中,具体的处理步骤包括图像灰度图的转化、图像增强,滤波,边缘检测、图像膨胀与填充以及图像的腐蚀等。这些工作都是为了去除干扰和增加最后的效果图,使灰度图的硬币区域显得更明显,处理之后在对硬币进行统计计数。3.1.1图像的读取目前图像的格式有很多,用的比较多的有.bmp、.jpg、.gif、.tiff、.pcx等格式。本次设计仿真主要采用.jpg的图像格式,因为它是目前被用的最普遍的图像格式,而且可以压缩的很小,不占地方,并且大部分图片也都以用这种格式保存,使用起来占用空间小还比较方便。首先将要处理的图片复制到MATLAB中,这有利于我们对图片进行反复的分析和使用,利用MATLAB对拍摄到的名为photo.jpg的图片进行读取,下面是在本次仿真中读取原图像并显示的程序语句:clear;Closeall;p1=imread('photo.jpg');figure(1),imshow(p1);title('原图');运行程序后得到如图2:图2原图像3.1.2图像灰度化的处理由于该图像为彩色RGB格式图像,而将图像转换为灰度图图像进行处理,才能充分发挥MATLAB的语言进行图像分析的特长。在本次设计仿真中将彩色图像转化为灰度图像使用的函数是rgb2gray(),该函数的功能是将真彩色图像转换为灰度图像,即灰度化处理。对于将原图灰度化,下面是图像灰度值H的计算公式:(1)(2)公式(1)用的是权值法,公式(2)用的是均值法,在本次设计仿真中将彩色图像转化为灰度图像用的函数rgb2gray()利用的就是权值法,它的优点就是可以突出某个通道,得到灰度图像后就可以更方便地进行后边的操作。为了更好地观察灰度图像的灰度分布信息,可以用imhist函数创建一个描述图像灰度分布的直方图,并且可以显示在一张图片上。该函数用于获取图像数据直方图,在图像增强技术中,图像灰度级直方图有着重要的意义,是直方图修改技术、直方图均衡化等一些图像处理技术的基础。可以通过以下程序代码将图像进行格式转换和显示具体的灰度分布信息: p2=rgb2gray(p1);figure(2),subplot(1,2,1),imshow(p2);title('灰度图');figure(2),subplot(1,2,2),imhist(p2);title('灰度图直方图');运行程序后得到如图3:图3灰度图像及灰度图直方图3.1.3图像滤波处理由于图片一般都有杂质或其他影响因素,为进一步提高图片的清晰度,提高图像质量,对图像进行中值滤波处理,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。本次滤波采用的是中值滤波,中值滤波是由Turky在1971年提出,最初用于时间序列分析,后来被用于图像处理,并在去噪复原中取得了较好的效果。中值滤波器是基于次序统计完成信号恢复的一种典型的非线性滤波器,其基本原理是把图像或序列中心点位置的值用该域的中值替代,具有运算简单、速度快、除噪效果好等优点,曾被认为是非线性滤波的代表。然而,一方面中值滤波因不具有平均作用,在滤除诸如高斯噪声时会严重损失信号的高频信息,使图像的边缘等细节模糊;另一方面中值滤波的滤波效果常受到噪声强度以及滤波窗口的大小和形状等因素的制约,为使中值滤波器具有更好的细节保护特性及适应性,人们提出了许多中值滤波器的改进算法。在进行中值滤波前,先对图片进行对比度的调整,以满足更好地进行中值滤波,本次设计采用的是imadjust函数,该函数是一个计算机函数,用于调节灰度图像的亮度或彩色图像的颜色矩阵。此外,在进行调整之前,需要找到一个分割阈值向量来改变图像的对比度。Matlab中的stretchlim主要用于自适应找到一个分割阈值向量来改变一幅图像的对比度,其通用调用格式如下:low_high=stretchlim(f,tol);可得到一个灰度变换自适应最佳阈值,不用人为规定,再将其带入imadjust函数中便可实现灰度图像对比度的增加或减弱。调整完对比度之后,接下来就是进行中值滤波,中值滤波是一种典型的低通滤波器,属于非线性滤波技术,它的目的是保护图像边缘的同时去除噪声。所谓中值滤波,是指把以某点(x,y)为中心的小窗口内的所有象素的灰度按从大到小的顺序排列,若窗口中的像素为奇数个,则将中间值作为(x,y)处的灰度值。若窗口中的像素为偶数个,则取两个中间值的平均值作为(x,y)处的灰度值。中值滤波对去除椒盐噪声很有效。中值滤波器的缺点是对所有象素点采用一致的处理,在滤除噪声的同时有可能改变真正象素点的值,引入误差,损坏图像的边缘和细节。具体的程序代码如下所示:tol=[01];low_high=stretchlim(p2,tol);tol_low=tol(1);tol_high=tol(2);ilowhigh=zeros(2,1);N=imhist(p2,255);cdf=cumsum(N)/sum(N);ilow=find(cdf>tol_low,1,'first');ihigh=find(cdf>=tol_high,1,'first');ifilow==ihigh;ilowhigh=[1;255];elseilowhigh=[ilow;ihigh];end;low_high=(ilowhigh-1)/(255-1);p3=imadjust(p2,low_high,[0;1]);p4=medfilt2(p3,[55]);figure(3),subplot(1,2,1),imshow(p4);title('中值滤波后的图像');figure(3),subplot(1,2,2),imhist(p4);title('中值滤波后直方图');运行程序后得到如图4所示: 图4中值滤波后灰度图像及灰度图直方图3.2图像分割图像经过滤波处理后,图像的预处理过程就结束了,已经获得了比较清晰的原始图像的灰度图。接下来就是对图像进行图像分割处理,提取所需目标的特征。由于目标图像与背景有较大区别,可以利用灰度的梯度信息来实现图像分割。通过图像分割,将原始图像中目标物体显示为黑色,背景区域显示为白色。首先利用graythresh()函数来获得一个合适的阈值,该函数使用最大类间方差法找到图片的一个合适的阈值。在使用im2bw函数将灰度图像转换为二值图像时,需要设定一个阈值,这个函数可以帮助我们获得一个合适的阈值。利用这个阈值通常比人为设定的阈值能更好地把一张灰度图像转换为二值图像。最大类间方差法是由日本学者大津(NobuyukiOtsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。如果不使用graythresh函数来获得阈值,可能需要多次尝试才能获得一个合适的阈值。获得合适的阈值后,再利用im2bw函数将灰度图像转换为二值图像,一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。程序代码如下图所示:level=graythresh(p4);p5=im2bw(p4,level);figure(4),imshow(p5);title(‘分割处理后的图像’);程序运行后得到的图像如下图5所示:图5图像分割处理后的图像执行程序后,从图片中可以看出,图中有许多杂质小黑点,这不利于实现正确计数,故在图像分割时所取阈值并不合适。从MATLAB的workspace中读取阈值level的值为0.4627,通过给定这个阈值来获取更好的图像分割效果。通过采取实验的方法评估level的值增加或者减少对图像的影响,通过实验取值分析,最后获得阈值为0.3。图像效果如图6所示:图6改变阈值后的图像3.3图像边缘检测通过图像阈值分割后,就得到了一个二值图像的图片,接下来需要对图像进行边缘检测,已获得该物体的形状,利用edge(I,'sobel',thresh)函数根据所指定的敏感度阈值thresh,本次采用的微分算子滤波获得边界。比较有名的微分滤波器算子包括Sobel算子、Prewitt算子和Roberts算子等等。在边缘检测中,常用的一种模板是Sobel算子。对于复杂图像一般用Prewitt算子或Sobel算子。与Prewitt算子相比,Sobel算子滤波能够降低图像的边缘模糊程度,对边界信息保留的较为完整,因此效果更好。用Sobel算子进行边缘检测,它忽略了所有小于阈值的边缘。当thresh为空时,自动选择阈值。sobel算子是像素图像边缘检测中最重要的算子之一,在机器学习、数字媒体、计算机视觉等信息科技领域起着举足轻重的作用。在技术上,它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值。在图像的任何一点使用此算子,将会产生该点对应的梯度矢量或是其法矢量。具体程序代码如下:p6=edge(p5,'sobel',0.3);figure(5),imshow(p6);title('边缘检测后的图像');运行程序后得到如图7所示:图7边缘检测后的图像3.4图像的膨胀与填充从以上的图像边缘检测中可以看出,物体的形状不是标准的,而且图像是不完整的,这对后面的统计有很大的影响,为了进一步最终能得出结果,需要将图片中的形状进行调整,并且对于边缘不完整的图形还需要删除。具体要通过膨胀和填充操作实现,既对图像边缘进行膨胀处理,将形状补充完整,然后利用填充命令进行闭合区域的填充。膨胀是将与物体接触的所有背景点合并到该物体上,使边界向外部扩张,通过膨胀可以填充图像中的小孔及在图像边缘处的小凹陷部分。将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。利用它可以填补物体中的空洞。B对X膨胀所产生的二值图像D是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么它与X的交集非空。
数学表达式:C=A⊕B。在MATLAB
图像处理工具箱中的strel函数可以生成任意维数和形状的结构元素。Strel
函数支持生成一般的形状,例如线型、菱形、圆盘、球形、矩形等结构元素。对图像进行膨胀可以使用MATLAB图像处理工具箱中的Imdilate函数。具体代码如下所示:se90=strel('line',50,90);se0=strel('line',50,0);p7=imdilate(p6,[se90,se0]);figure(6),imshow(p7);title('膨胀处理后的图像');运行程序后得到如图8所示:图8膨胀处理后的图像图像膨胀处理后,需要进行闭合区域的填充,以便于后面对物体的统计,进行填充可以利用MATLAB中的imfill函数,具体的代码如下所示:p8=imfill(p7,'holes');figure(7),imshow(p8);title('填充处理后的图像');运行程序后得到如图9所示:图9填充处理后的图像3.4图像的统计计数
bwlabel是用来标记二维的二值图像中的connected
components的,简言之,就是黑背景下面有多少白的块,运行结果能从返回一个和L一样的矩阵大小和BW一样一个读入二值图像后产生的BW数组(也可能自己创建,只要符合元素是0或者1就行)中,区别出其中的相互不连接的1有多少块。N应该是的四方面或者是八方面的联通应该是表示一个数组和周围四个或者是周围八个,用这个方法来确定其中颗粒的边界。
返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。 四连通或八连通是图像处理里的基本概念:而8连通,是说一个像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连接着,则认为他们是联通的;4连通是指,如果像素的位置在其他像素相邻的上、下、左或右,则认为他们是连接着的,连通的,在左上角、左下角、右上角或右下角连接,则不认为他们连通。通过以下代码可以实现统计计算,计算图片中物体的数目: [labelednumpills]=bwlabel(p9,4); Numpills; 得出的最后结果为: numpills=7;3.5图像的边缘处理有的图像经过膨胀和填充处理后依然存在不完整的图像元素,也就是存在不完整的硬币,在这种情况下需要删去图像边缘不完整的部分。例如对下面这张图片,图像边缘有不完整的硬币时:在对图片进行上述步骤到最后统计计数时,这时需要对边缘不完整的硬币进行处理,利用MATLAB中的
imclearborder(IM,conn)函数,作用是可以抑制和图像边界相连的亮对象。若IM是二值图,imclearborder将删除和图像边界相连的对象。默认情况conn=8。利用该函数可以得到最后的结果。利用以下代码可以实现对边缘的处理:p9=imclearborder(p8,4);figure(8),imshow(p9);title('边缘处理后的图像');在完成上述步骤后的图片为:最后的统计结果如下图所示:第四章总结与展望在本次设计中,主要用到的是matlab中对图片的读取,以及matlab中对数字图像灰度化,二值化等其他的预处理代码,对硬币的统计则用到了bwlabel用于甄别二值化图像中连通区域的函数。系统的主要难点在于前端对输入图像的预处理使其达到bwlabel函数能鉴别的条件,我也是在经过大量的实验和调试后,才做出最后的运行结果。本次设计依然有许多不足的地方,由于存在许多外界因素的影响,不能全面的考虑到,这也是需要进一步修改的地方,例如,针对图像中硬币挨着的情况,我在经过多次试验后,依然没有找到合适的预处理方法,很难得到最后的正确结果,由于时间的关系,这一点还需要在以后继续努力研究。本次设计的课题用matlab来设计的主要原因也是因为它拥有丰富的函数调用库,这给我们提供了巨大的便利。我可以在学习各函数调用原理的基础上更加深入的对如何应用不同的函数以达到实验目的,当然调用的函数我都是分析理解了其源代码才结合自己的需要进行调用的,这样可以更加方便的在其他的地方使用这个硬币数量统计系统。
代码:Clc;Clear;p1=imread('photo.jpg');figure(1),imshow(p1);title('原图');p2=rgb2gray(p1);figure(2),subplot(1,2,1),imshow(p2);title('灰度图');figure(2),subplot(1,2,2),imhist(p2);title('灰度图直方图');tol=[01];low_high=stretchlim(p2,tol);tol_low=tol(1);tol_high=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 历史文化场地场平施工合同
- 物流行业万能工聘用合同
- 工程保险代理合同
- 信息技术电气工程改造合同
- 教育培训班临时租赁协议
- 商场季节性植物租赁合同
- 酒水销售兼职协议
- 西餐厅水电路施工合同
- 河道整治与城市排水合同
- 高速公路工程招投标合同模板
- 烟酒店合作经营合同
- 资金托盘协议书
- 仓库管理教学总结与反思
- MOOC 中国电影经典影片鉴赏-北京师范大学 中国大学慕课答案
- MOOC 英汉语言对比-华中科技大学 中国大学慕课答案
- 20K607 防排烟及暖通防火设计审查与安装
- 《金刚石、石墨和C60》第一课时名师课件
- 2024年安徽合肥市建设工程监测中心有限责任公司招聘笔试参考题库含答案解析
- 滑雪指导员理论考试复习题库(含答案)
- 两癌筛查年度工作计划实施方案
- 2024年常德市高三一模语文试卷(含答案)
评论
0/150
提交评论