应用图像处理-MATLAB软件课程设计_第1页
应用图像处理-MATLAB软件课程设计_第2页
应用图像处理-MATLAB软件课程设计_第3页
应用图像处理-MATLAB软件课程设计_第4页
应用图像处理-MATLAB软件课程设计_第5页
已阅读5页,还剩31页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE36-MATLAB软件课程设计设计题目:应用图像处理班级:学号:姓名:指导老师:设计时间:2013年4月8日-4月14日目录摘要………………………31、概述………………………42、课程设计及要求…………………..42.1设计要求…………………………42.2设计任务……………………53、系统设计……………….53.1系统方案…………………………53.1.1结构框图………………..53.1.2系统工作原理………………………..63.2单元模块设计…………………83.2.1单元模块的设计………83.2.2元模块的连接………………………164、系统调试……………………………...194.1系统的连接…………………...194.2系统的运行…………………...194.3运行的结果…………………...234.4故障分析……………………335、收获、心得………………………346、参考文献…………………………….35摘要应用图像处理系统是一种专门针对图像需求处理的软件设计,图像处理包括图像数字化,图像增强和复原,图像数字编码,图像分割,图像识别和图像理解等。这种系统广泛应用于IT行业,尤其是对图像的识别处理有重要的意义。本文针对课程设计的要求,分别设计了常用处理模块、图像压缩模块、噪声处理模块、彩色增强模块、灰度变换模块等五大单元模块。基本实现了图像处理功能的需求。常用处理模块设计了图像的旋转、底片效果、边缘信息、运动模糊处理功能,运用imrotate,imcomplement,edge,fspecial等函数来实现。针对课程任务内容一,设计了图像压缩模块。采用了DCT变换、小波变换和双线插值等方法,实现了图片压缩的效果。针对课程任务内容二,设计了图像增强模块。采用了RGB分量、亮度切割和伪彩色等方法,实现了对图像彩色的增强效果。针对课程任务内容三,设计了灰度变换模块。采用了直方图均衡化和规定化等方法,实现了对图像灰度变换的效果。针对课程任务内容四,设计了噪声处理模块。运用imnoise函数,添加了高斯、椒盐、乘性等三种噪声。设计了均值滤波、中值滤波、维纳滤波、线性滤波等滤波器,实现了对加入噪声图像滤波的功能。其中,中值滤波对椒盐噪声的滤波效果好一点。关键词:图像处理、DCT变换、小波变换、RGB分量、亮度切割均衡化、规定化、噪声处理1.概述进入二十一世纪,人类已步入信息社会,新信息技术革命使人类被日益增多的多媒体信息所包围,这也正好迎合了人类对提高视觉信息的需求性。多媒体信息主要有三种形式:文本、声音和图像。从信息传输的发展史(电报、电话、传真、收音机、电视机直至现在的网络)可以看出,人们逐渐将信息传输的重点从声音转向图像,然而图像是三种信息形式中数据量最大的,这给图像的传输和存储带来了极大的困难。MATLAB是由美国Math-Works公司推出的用于数值计算和图形处理的科学计算软件,MATLAB不仅提供了丰富的图形命令和图形函数,而且其面向对象的图形系统具有强大的图形用户界面(GraphicUserInterface,GUI)生成能力。这样,用户就可以充分利用系统提供的GUI特性,编写自己需要的图形界面,从而可以高效地制作出理想的应用软件。在MATLAB中有个重要的图像处理工具包,该工具包是由一系列支持图像处理操作的函数组成的,按功能可以分为以下几类:图像显示、图像文件输入与输出、几何操作、像素值统计、图像增强、图像识别、图像滤波、图像变换、邻域和块操作、二值图像操作、颜色映射和颜色空间转换、图像格式转换等。和其他工具包一样,用户还可以根据需要书写自己的函数,以满足特定的需要;也可以将这个工具包和信号处理工具包或小波工具包等其他工具包联合起来使用。本文利用MATLAB提供的交互式GUI开发环境,设计了图像处理软件的主界面和各个子功能界面,实现了图像处理的需求功能。2.课程设计任务及要求2.1设计任务1.在图像的变换和压缩中,常常用到离散余弦变换(DCT)。DCT变换用于图像的压缩实例。请在测试图像中验证你的结论。2.请编程实现图像的真彩色增强。3.通过直方图均衡化的方法实现图像的灰度变换,在测试图像中验证你的结论,分析程序结果。4.使用常用的滤波器对数字图像进行处理。如均值滤波器、中值滤波器、维纳滤波器等。5.额外拓展功能,如图像的旋转、底片处理、模糊处理等一些功能。2.2设计要求1.程序代码附有必要的注释。2.报告中对实验的基本算法原理要进行简要叙述。3.系统设计3.1系统方案3.1.1结构框图系统主界面系统主界面常用处理模块图像压缩模块噪声处理模块加入噪声彩色增强模块滤波处理灰度变换模块图3-1图像处理结构框图首先键入guide命令,弹出GUI图形用户设计面板。在该设计面板中,左上角设计了菜单栏选项:文件(打开、保存、退出)、编辑(还原、撤销、截图)、帮助等。主界面分别设计了5个单元模块,包括常用处理模块(旋转、底片处理、边缘信息、模糊处理),图像压缩模块(DCT变换、小波变换、线性插值),噪声处理模块(加入噪声和滤波处理),彩色增强模块(RGB分量法、亮度切割法、伪彩色处理),灰度变换模块(均衡化、规定化、灰度加深)。各单元模块中分别加入控件(PushButton和Pop-upMenu)来实现对各功能的控制操作。系统整体结构框图如上图3-1所示。3.2单元模块设计主界面包括常用处理模块、图像压缩模块、噪声处理模块、彩色增强模块、灰度变换模块。具体设计如下面所述:3.2.1常用处理模块的设计常用模块中设计了图片旋转、底片处理、边缘信息、模糊处理等功能。原理简介如下所述:1.图片旋转原理简介通过imrotate函数来旋转图像。imrotate函数主要包括两个参数:需要旋转的图像和旋转的角度。如果指定一个正的旋转角度,那么imrotate函数将使用指定的插值方法和旋转角度将图像逆时针旋转;如果指定一个负值,那么将按顺时针方向旋转。如果命令中没有指定插补方法,则函数采用默认的最近邻插补方法。对于最近邻插补方法,为了确定插值像素点的数据值,用户必须在输入图像中查找到与输出像素相应的点。2.底片处理原理简介实现底片效果,即完成对二值图像的求补运算,将二值图像进行黑白两色互换,就是把黑色部分变成白的,把白色部分变成黑的。运用imcomplement函数来实现图像取反,形成底片效果。3.边缘信息原理简介图像边缘信息是指其周围像素灰度有阶跃变化或“屋顶”变化的那些像素的集合。边缘广泛存在于物体与背景之间、物体与物体之间、基元与基元之间。经典的边缘提取方法是考察图像的每个像素在某个邻域内灰度的变化,利用边缘邻近一阶或二阶方向导数变化规律,用简单的方法检测边缘,这种方法称为边缘检测局部算子法。如果一个像素落在图像中某一个物体的边界上,那么它的邻域将成为一个灰度级的变化带,对这种变化最有用的2个特征(灰度的变化率和方向),它们分别以梯度向量的幅度和方向来表示。边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,也包括方向的确定。设计中采用edge函数来实现边缘信息的获取。4.模糊处理原理简介运动模糊图像中,在运动方向上大多数模糊图像的背景像素点具有很强的相关性,即沿着运动模糊的轨迹,背景像素点的灰度值逐渐变化或者不变。通过文献的学习,先对模糊图像进行一阶微分,然后进行自相关运算,可得一条鉴别曲线,曲线上会出现对称的相关峰,峰值为负,两相关峰之间的距离等于运动模糊长度。3.2.2图像压缩模块的设计1.DCT变换原理简介离散余弦变换(DCT)是一种与离散傅立叶变换紧密相关的正交变换,8×8的二维离散余弦变换可以将图像的空间表达式转换到频率域,只用少量的数据点来表达图像,用f(x,y)表示8×8的图像块像素值,F(u,v)表示二维离散余弦变换后的值,具体表达式如下:式式(3-1)其反变换如下式:式(3-2)其中,式(3-3)二维离散余弦变换具有可分离性,即可以先对每行进行一维离散余弦变换,再对每列进行一维离散余弦变换,因此,二维离散余弦变换可表示为:式(3-4)式(3-5)如果直接按照公式计算,其计算量很大,所以,实际应用中普遍采用快速傅立叶变换(FFT)算法来实现离散余弦变换的快速算法。任何连续的事物堆成函数的傅里叶变换中只含有余弦项,因此余弦变换与傅里叶变换一样,有明确的物理意义。DCT实现将整体图像分成N*N像素块,然后对N*N像素块逐一进行DCT变换。由于大多数的图像的高频分量较小,相应于高频成分的系数经常为零,加上人眼对高频成分的失真不太敏感,所以可以用更粗的量化。因此传送变换系数所用的数码率要大大小于传送图像像素所用的数码率。到达接收端后再通过反离散余弦变换回到样值,虽然会有一定的失真,但是能基本接受。N代表像素数,一般N=8,8*8的二位数据块经DCT后变成8*8个变换系数,这些系数都有着明确的物理意义:U代表水平像素号,V代表处置像素号。随着U、V值增大,相应的系数分别代表逐步压缩的水平空间频率分量和垂直空间频率分量的大小。在JPEG图像压缩算法里,输入图像被分为8*8小块,然后对每一小块进行二位DCT变换,变换后的系数量化、编码并传输,JPEG格式文件解码量化了的DCT系数,对每一块计算二位逆DCT变换,最后把结果块拼接成一个完整的图像。在DCT变换后舍弃那些不严重影响图像重构接近0的系数。2.小波变换原理简介先对一维小波变换作一简单介绍。设f(x)为一维输入信号,记,,这里与分别称为定标函数与子波函数,与为二个正交基函数的集合。记P0f=f,在第级上的一维离散小波变换DWT(DiscreteWaveletTransform)通过正交投影Pjf与Qjf将Pj-1f分解为:式(3-6)其中:,,式(3-7)这里,{h(n)}与{g(n)}分别为低通与高通权系数,它们由基函数与来确定,p为权系数的长度。为信号的输入数据,N为输入信号的长度,L为所需的级数。由上式(3-6)、(3-7)可见,每级一维DWT与一维卷积计算很相似。所不同的是:在DWT中,输出数据下标增加1时,权系数在输入数据的对应点下标增加2,这称为“间隔取样”。在实际应用中,很多情况下采用紧支集小波(CompactlySupportedWavelets),这时相应的尺度系数和小波系数都是有限长度的,不失一般性设尺度系数只有有限个非零值:h1,…,hN,N为偶数,同样取小波使其只有有限个非零值:g1,…,gN。为简单起见,设尺度系数与小波函数都是实数。对有限长度的输入数据序列:(其余点的值都看成0),它的离散小波变换为:式(3-8),式(3-9)其中J为实际中要求分解的步数,最多不超过log2M,其逆变换为,式(3-10)注意到尺度系数和输入系列都是有限长度的序列,上述和实际上都只有有限项。若完全按照上述公式计算,在经过J步分解后,所得到的J+1个序列和的非零项的个数之和一般要大于M,究竟这个项目增加到了多少?下面来分析一下上述计算过程。j=0时计算过程为:式(3-11)式(3-12)不难看出,的非零值范围为:即有个非零值。的非零值范围相同。继续往下分解时,非零项出现的规律相似。分解多步后非零项的个数可能比输入序列的长度增加较多。例如,若输入序列长度为100,N=4,则有51项非零,有27项非零,有15项非零,有9项非零,有6项非零,有4项非零,有4项非零。这样分解到6步后得到的序列的非零项个数的总和为116,超过了输入序列的长度。在数据压缩等应用中,希望总的长度基本不增加,这样可以提高压缩比、减少存储量并减少实现的难度。可以采用稍微改变计算公式的方法,使输出序列的非零项总和基本上和输入序列的非零项数相等,并且可以完全重构。这种方法也相当于把输入序列进行延长(增加非零项),因而称为延拓法。将小波分析映入图像压缩范畴也是一个重要手段,并有着它自己的特点。小波变换压缩特点在于压缩比高、压缩速度快,压缩后能保持信号与图像的特征基本不变,且在传输过程中抗干扰等等。一个图像做小波分解后,可得到一系列不同分辨率的子图像,对应的频率是不相同的。高分辨率子图像上大部分点的数值都接近于0,分辨率越高越明显。而对于一个图像来说,表现图像的最主要的部分是低频部分,所以压缩的方法是利用小波分解去掉图像高频部分二保留低频部分。3.2.3噪声处理模块的设计1.添加噪声(1)高斯噪声。所谓高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。(2)椒盐噪声。椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。大量的实验研究发现,由摄像机拍摄得到的图像受椒盐噪声的影响较严重。噪声给图像处理带来很多困难,对图像分割、特征提取、图像识别等具有直接影响。因此,实时采集的图像需进行滤波处理。消除图像中的噪声成份叫做图像的平滑化或滤波操作。滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式;二是为适应计算机处理的要求,消除图像数字化时所混入的噪声。对滤波处理的要求有两条:一是不能损坏图像轮廓及边缘等重要信息;二是使图像清晰,视觉效果好。(3)乘性噪声。一般由信道不理想引起,它们与信号的关系是相乘,信号在它在,信号不在它也就不在。一般通信中把乘性随机性看成系统的时变性(如衰落或者多普勒)或者非线性所造成的。通过imnoise函数来对原始图像加入各种噪声。2.滤波处理(1)均值滤波。它是一种典型的线性滤波算法,是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即g(x,y)=1/m∑f(x,y),m为该模板中包含当前像素在内的像素总个数。均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。(2)中值滤波。它是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。中值滤波首先是被应用在一维信号处理技术中,后来被二维图像信号处理技术所应用。在一定的条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。但是对一些细节多,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法。中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替。设有一个一维序列,,…,,取窗口长度为m(m为奇数),对此序列进行中值滤波,就是从输入序列中相继抽出m个数,,…,,…,,…,,…,,其中为窗口的中心位置,,再将这m个点按其数值大小排列,取其序号为正中间的那作为输出。用数学公式表示为:,式(3-13)例如:有一个序列为{0,3,4,0,7},则中值滤波为重新排序后的序列{0,0,3,4,7}中间的值为3。此例若用平均滤波,窗口也是取5,那么平均滤波输出为。因此平均滤波的一般输出为:式(3-14)对于二维序列进行中值滤波时,滤波窗口也是二维的,但这种二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维数据的中值滤波可以表示为:式(3-15)在实际使用窗口时,窗口的尺寸一般先用再取逐渐增大,直到其滤波效果满意为止。对于有缓变的较长轮廓线物体的图像,采用方形或圆形窗口为宜,对于包含尖顶角物体的图像,适宜用十字形窗口。使用二维中值滤波最值得注意的是保持图像中有效的细线状物体。与平均滤波器相比,中值滤波器从总体上来说,能够较好地保留原图像中的跃变部分。(3)维纳滤波。20世纪40年代,维纳奠定了关于最佳滤波器研究的基础。即假定线性滤波器的输入为有用信号和噪声之和,两者均为广义平稳过程且知它们的二阶统计特性,维纳根据最小均方误差准则(滤波器的输出信号与需要信号之差的均方值最小),求得了最佳线性滤波器的参数,这种滤波器被称为维纳滤波器。在维纳研究的基础上,人们还根据最大输出信噪比准则、统计检测准则以及其他最佳准则求得的最佳线性滤波器。实际上,在一定条件下,这些最佳滤波器与维纳滤波器是等价的。因而,讨论线性滤波器时,一般均以维纳滤波器作为参考。维纳滤波是40年代在线性滤波理论方面所取得的最重要的成果。(4)线性锐化滤波。线性高通滤波器是最常用的线性锐化滤波器。这种滤波器的中心系数都是正的,而周围的系数都是负的。对3*3的模板来说,典型的系数取值是:[-1–1–1;-18–1;-1–1-1]式(3-16)事实上这是拉普拉斯算子,所有的系数之和为0。当这样的模板放在图像中灰度值是常数或变化很小的区域时,其输出为0或很小。这个滤波器将原来的图像中的零频域分量去除了,也就是将输出的图像的平均值变为0,这样就会有一部分像素的灰度值小于0。在图像处理中我们一般只考虑正的灰度值,所以还有将输出图像的灰度值范围通过尺度变回到所要求的范围。3.2.4彩色增强模块的设计(1)RGB分量法。颜色分为无彩色和有彩色两种。无彩色指白色、黑色和各种不同程度的灰,无彩色图像也称灰度图像,使用[0,255]的值来表示其灰度值,0表示黑色,255表示白色,其间是各种深浅不同的灰色,整张图像的像素用一维数组表示即可。彩色指除去上述黑白灰以外的各种颜色,而RGB模型只是彩色模型的其中一种。

RGB模型建立在笛卡尔坐标系统里(三维),其三个轴分别为红R,绿G,蓝B,模型空间是正方体,原点对应黑色,离原点最远的顶点对应白色。RGB的每个分量都使用[0,255]内的值。对于彩色图像,它的每个像素都有三个分量R、G、B,这三个值一同来表示一个像素,也就是说,彩色图像的像素要用三维数组来表示。比如R轴上,从[1,0,0]、[2,0,0]直到[255,0,0],是个渐变,都是红色,就是深红浅红的问题。

在彩色图像中,黑色为RGB=[0,0,0],白色为RGB=[255,255,255]。这样就可以理解亮红色为RGB=[255,0,0],亮绿色为RGB=[0,255,0]等等。彩色图像中是三种基色红绿蓝的叠加,不是所谓黑白的叠加。即将图像从RGB分量图转换为HIS分量图,之后将I分量增强,最后再将其转换回RGB。(2)亮度切割法。imadjust函数用于数字图像的灰度或颜色调整,J=imadjust(I)将灰度图像I中的亮度值映射到J中的新值并使1%的数据是在低高强度和饱和,这增加了输出图像J的对比度值。J=imadjust(I,[low_in;high_in],[low_out;high_out]),将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。low_in以下与high_in以上的值被剪切掉了,也就是说,low_in以下的值映射到low_out,high_in以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[01]。如:i=imread('e:\w01.tif');j=imadjust(i,[0.3,0.7],[]);将图像i转换为j,使灰度值从0.3~0.7与缺省值0~1相匹配(3)伪彩色处理。伪彩色处理是指将黑白图像转化为彩色图像,或者是将单色图像变换成给定彩色分布图像。由于人眼对彩色的分辨能力远远高于对灰度的分辨能力,所以将灰度图像转化成彩色表示,就可以提高对图像细节的辨别力。因此,伪色彩处理的主要目的是为了提高人眼对图像细节的分辨能力,以达到图像增强的目的。伪彩色处理的基本原理是将黑白图像或者单色图像的各个灰度级匹配到彩色空间中的一点,从而使单色图像映射成彩色图像。对黑白图像中不同的灰度赋予不同的彩色。值得注意的是,伪彩色虽然能将黑白灰度转化为彩色,但这种彩色并不是真正表现图像的原始颜色,而仅仅是一种便于识别的伪彩色。3.2.5灰度变换模块的设计(1)直方图均衡化直方图均衡化又称直方图平坦化,是将一已知灰度概率密度分布的图像经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像。其结果是扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果。直方图均衡化的具体实现步骤如下:1).列出原始图像的灰度级式(3-17)2).统计各灰度级的像素数目式(3-18)3).计算原始图像直方图各灰度级的频数式(3-19)4).计算累积分布函数式(3-20)5).应用以下公式计算映射后的输出图像的灰度级,P为输出图像灰度级的个数,其中INT为取整符号。式(3-21)6).统计映射后各灰度级的像素数目ni,i=0,1,…,k,…P-1。7).计算输出直方图Pg(gi)=ni/n,i=0,1,…,P-1。8).用fj和gi的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。(2)直方图规定化直方图均衡化的优点是能自动增强整个图像的对比度,但它的具体增强效果不易控制,处理的结果总是得到全局的均衡化的直方图。实际工作中,有时需要变换直方图使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度,这时可采用比较灵活的直方图规定化方法。直方图规定化增强处理的步骤如下:令Pr(r)和Pz(z)分别为原始图像和期望图像的灰度概率密度函数。如果对原始图像和期望图像均作直方图均衡化处理,应有式(3-22)式(3-23)式(3-24)由于都是进行均衡化处理,处理后的原图像概率密度函数Ps(S)及理想图像概率密度函数PV(V)是相等的。于是,我们可以用变换后的原始图像灰度级S代替式(3-23)中的V。即Z=G-1(S)式(3-25)这时的灰度级Z便是所希望的图像的灰度级。此外,利用式(3-22)与式(3-23)式还可得到组合变换函数Z=G-1[T(r)]式(3-26)对连续图像,重要的是给出逆变换解析式。4.系统程序设计与调试分析4.1常用处理模块的设计1.图片旋转功能主要程序设计:functionxiaoguo_Callback(hObject,eventdata,handles)globalT%定义全局变量Tva=get(handles.lvbo,'Value');%得到句柄lvbo的Value,赋给vaval=get(hObject,'Value');switchval%用switch语句设置选项case1img=rgb2gray(T);%将T转化为二维的灰色图像,赋给imgprompt={'旋转角度:'};%设置提示字符串defans={'0'};%设置默认值p=inputdlg(prompt,'input',1,defans);%显示对话框p1=str2num(p{1});%将对话框转换为数值f=imrotate(img,p1,'bilinear','crop');%将图像进行旋转处理axes(handles.axes1);%将结果显示在axes1中imshow(f);title('旋转后图像');%显示旋转后的图像运行结果如下图4-1所示,弹出对话框,现在设置旋转角度为30,按“OK”运行结果如下图4-2所示:图4-1图4-2分析结果:图4-2是按逆时针旋转30°的结果,一般输入参数为正数时,图像按逆时针方向旋转;输入负数时,图像按顺时针方向旋转。运行结果正常。2.底片效果主要程序设计:case2%底片效果显示ig2=rgb2gray(T);%将T转化为二维的灰色图像,赋给ig2f2=imcomplement(ig2);%将图像ig2取反,达到黑白色变换,实现底片效果axes(handles.axes1);%将结果显示在axes1中imshow(f2);title('底片效果');%显示低片效果图像运行结果如下图4-3所示:图4-3分析结果:图4-3完成了对二值图像的求补运算,将二值图像进行黑白两色互换,就是把黑色部分变成白的,把白色部分变成黑的。运用imcomplement函数来实现图像取反,形成底片效果。程序运行正常。3.边缘信息程序设计:case3%显示边缘信息处理图像ig3=rgb2gray(T);%将T转化为二维的灰色图像,赋给ig3f3=edge(ig3,'canny');%将ig3进行边缘处理axes(handles.axes1);%将结果显示在axes1中imshow(f3);title('边缘信息');%显示边缘信息图像运行结果如下图4-4所示:图4-4结果分析:图4-4显示了边缘信息处理之后的图像,利用边缘邻近一阶或二阶方向导数变化规律,用简单的方法检测边缘。如果一个像素落在图像中某一个物体的边界上,那么它的邻域将成为一个灰度级的变化带,运用edge函数进行运算,达到了效果。程序运行正常。4.模糊处理程序设计:case4%显示运动模糊处理结果LEN=21;THETA=0;%表示摄像物体逆时针方向以0角度运动了21个像素PSF=fspecial('motion',LEN,THETA);%点扩展函数的卷积运算blurred=imfilter(T,PSF,'conv','circular');%对图像f进行滤波%W2=deconvwnr(blurred,PSF);%对滤波后的图像进行恢复axes(handles.axes1);%将结果显示在axes1中imshow(blurred);title('运动模糊');%显示运动模糊图像运行结果如下图4-5所示:图4-5结果分析:从图4-5所示,运行之后的图像明显比原图像模糊,程序运行正常。4.2图像压缩模块的设计DCT变换程序设计:functionyasuo_Callback(hObject,eventdata,handles)globalT定义全局变量Tva=get(handles.yasuo,'Value');%得到句柄yasuo的Value,赋给vaval=get(hObject,'Value');switchval%用switch语句设置选项case1%显示DCT变换图像i=rgb2gray(T);%将真彩色RGB图像转换成灰度图像(RGB并不发生变化)I=im2double(i);%把灰度图像的数据类型转换成双精度浮点类型T=dctmtx(8);%生成一个8*8DCT变换矩阵B=blkproc(I,[88],'P1*x*P2',T,T');%P1*x*P2相当于像素块的处理函数,P1=TP2=T',进行离散余弦变换mask=[11110000;11100000;11000000;10000000;00000000;00000000;00000000;00000000];%8*8的二维数据块经DCT后变成8*8个变换系数,代表低频成份的量分布于左上角,而越高频率成份越向右下角分布C=blkproc(B,[88],'P1.*x',mask);%数据压缩,丢弃右下角高频数据D=blkproc(C,[88],'P1*x*P2',T',T);%进行DCT反变换,得到压缩后的图像axes(handles.axes2);%将结果显示在axes2中imshow(D);title('DCT变换');%显示DCT变换之后的图像运行结果如下图4-6所示:图4-6结果分析:图4-6是一个8*8的二维离散余弦变换将图像的空间表达式转换到频率域,只用少量的数据点来表达图像。8*8的二维数据块经DCT后变成8*8个变换系数,代表低频成份的量分布于左上角,而越高频率成份越向右下角分布,经过运算,丢弃右下角高频数据,从而达到图像的压缩效果。2.小波变换程序设计:case2X=rgb2gray(T);X=double(X)/255;%归一化处理colormap(pink);%颜色映射[C,S]=wavedec2(X,1,'bior3.7');%对图像用‘bior3.7'小波进行1层小波分解thr=20;%设置小波系数阈值cal=appcoef2(C,S,'bior3.7',1);%提取小波分解结构中第1层的低频系数和高频系数ch1=detcoef2('h',C,S,1);cv1=detcoef2('v',C,S,1);cd1=detcoef2('d',C,S,1);a1=wrcoef2('a',C,S,'bior3.7',1);%分别对各频率成分进行重构h1=wrcoef2('h',C,S,'bior3.7',1);v1=wrcoef2('v',C,S,'bior3.7',1);d1=wrcoef2('d',C,S,'bior3.7',1);c1=[a1,h1;v1,d1];%进行图像压缩处理,保留小波分解第1层低频信息,进行图像的压缩%第1层的低频信息为ca2,显示第1层的低频信息ca1=appcoef2(C,S,'bior3.7',1);%首先对第1层信息进行量化编码ca1=wcodemat(ca1,440,'mat',0);ca1=0.5*ca1;%改变图像的高度axes(handles.axes2);%将结果显示在axes2中imshow(cal);title('小波变换');%显示小波变换之后的图像运行结果如下图4-8所示,4-7是选取的原始图片。图4-7图4-8结果分析:一个图像做小波分解后,可得到一系列不同分辨率的子图像,对应的频率是不相同的。高分辨率子图像上大部分点的数值都接近于0,分辨率越高越明显。而对于一个图像来说,表现图像的最主要的部分是低频部分,所以压缩的方法是利用小波分解去掉图像高频部分二保留低频部分。经过小波变换之后的图像比原来图像的字节数有所降低,达到了压缩图片的效果。4.3噪声处理模块的设计1.加入噪声1)椒盐噪声程序设计:functionzaosheng_Callback(hObject,eventdata,handles)globalT%设置全局变量Tva=get(handles.zaosheng,'Value');%得到句柄zaosheng的Value,赋给vaval=get(hObject,'Value');switchval%用switch语句设置选项case1%椒盐噪声prompt={'输入椒盐噪声参数1:'};%设置提示字符串defans={'0.01'};%设置默认值为0.01p=inputdlg(prompt,'input',1,defans);%显示对话框p1=str2num(p{1});%将字符串转化为数值f=imnoise(T,'salt&pepper',p1);%对图像T加入椒盐噪声axes(handles.axes6);%结果显示在axes6中imshow(f);title('椒盐噪声图像');%显示加入椒盐噪声后的图像程序运行结果如图4-9所示,这里直接设置默认的0.01值,点击“OK”,运行结果如下图4-10所示:图4-9图4-102)高斯噪声case2T=getimage;prompt={'输入高斯噪声1:','输入高斯噪声2'};%设置提示字符串,1为均值,2为方差值defans={'0','0.01'};%设置默认参数值均值为0,方差值为0.01p=inputdlg(prompt,'input',1,defans);%显示对话框p1=str2num(p{1});%将字符串转化为数值p2=str2num(p{2});%将字符串转化为数值f=imnoise(T,'gaussian',p1,p2);%对图像T加入高斯噪声axes(handles.axes6);%结果显示在axes6中imshow(f);title('高斯噪声图像');%显示加入高斯噪声后的图像运行结果如图4-11所示,这里直接设置默认的值为0和0.01,点击“OK”,运行结果如下图4-12所示:图4-11图4-123)乘性噪声case3T=getimage;prompt={'输入乘性噪声1:'};%设置提示字符串defans={'0.01'};%设置默认参数值均值为0.01p=inputdlg(prompt,'input',1,defans);%显示对话框p1=str2num(p{1});%将字符串转化为数值f=imnoise(T,'speckle',p1);%对图像T加入乘性噪声axes(handles.axes6);%结果显示在axes6中imshow(f);title('乘性噪声图像');%显示加入乘性噪声后的图像end运行结果如图4-13所示,这里直接设置默认的值为0和0.01,点击“OK”,运行结果如下图4-14所示:图4-13图4-142.滤波处理选择其中一种噪声,这里选取椒盐噪声,然后对椒盐噪声进行滤波处理操作,软件设计如下:均值滤波主程序设计:T=handles.img;f=fliplr(handles.img);handles.img=f;h=fspecial('average');%均值滤波函数,算子为“average”J1=imfilter(f,h);%对加入噪声的f进行均值滤波axes(handles.axes7);%结果显示在axes7中imshow(J1);title('均值滤波后图像');%显示均值滤波后的图像运行结果,这里设椒盐噪声的参数值为0.01,对椒盐噪声进行均值滤波后的结果如图4-16所示,4-15为设置的椒盐噪声的图像:图4-15图4-16均值滤波主程序设计:case2T=handles.img;f=fliplr(handles.img);handles.img=f;img=rgb2gray(f);%对图像f进行灰度转换f7=medfilt2(img);%对加入椒盐噪声的图像img进行中值运算axes(handles.axes7);%结果显示在axes7中imshow(f7);title('中值滤波后图像');%显示中值滤波后的图像运行结果,这里设椒盐噪声的参数值为0.01,对椒盐噪声进行中值滤波后的结果如图4-18所示,4-17为设置的椒盐噪声的图像:图4-17图4-18维纳滤波主程序设计:case3%摄像物体逆时针方向以0角度运动了21个像素LEN=21;THETA=0;PSF=fspecial('motion',LEN,THETA);%点扩展函数的卷积运算blurred=imfilter(T,PSF,'conv','circular');%对图像T进行滤波W2=deconvwnr(blurred,PSF);%对滤波后的图像进行恢复axes(handles.axes7);%结果显示在axes7中imshow(W2);title('维纳滤波后图像');%显示维纳滤波后的图像运行结果,这里设椒盐噪声的参数值为0.01,对椒盐噪声进行维纳滤波后的结果如图4-20所示,4-19为设置的椒盐噪声的图像:图4-19图4-20按照上面类似操作,选择另外两种噪声进行滤波分析,结合几种滤波器对各噪声的滤波效果,可以得到以下结论:中值滤波对椒盐噪声的滤波效果好一点,相对几种滤波器而言,滤波之后的图像显得更为清晰。在一定的条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。但是对一些细节多,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法。均值滤波是一种线性滤波。本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。4.4彩色增强模块的设计(1)RGB分量法程序设计:globalT%定义全局变量va=get(handles.caisechuli,'Value');%得到句柄caisechuli的Value,赋给vaval=get(hObject,'Value');switchval%用switch语句设置选项case1%原真彩色图像R=T(:,:,1);%分解三分量R、G、B,并增大R、G、B的值G=T(:,:,2);B=T(:,:,3);R=imadjust(R,[0.30.7],[00.8]);%R要变换的灰度范围[0.30.7],变换后的灰度范围[00.8]G=imadjust(G,[0.30.7],[00.8]);B=imadjust(B,[0.30.7],[00.8]);f=cat(3,R,G,B);%对加强后的三分量R、G、B进行还原axes(handles.axes3);%将结果显示在axes3中imshow(f);title('真彩色增强后图像');%显示真彩色增强后的图像运行结果,如图4-21所示:图4-21(2)亮度切割法程序设计:case2T=getimage;prompt={'调整倍数'};%设置字符串defans={'1'};%设置默认参数p=inputdlg(prompt,'input',1,defans);%建立对话框p1=str2num(p{1});%将字符串转化为数值y=imadjust(T,[],[],p1);%亮度调节axes(handles.axes3);%将结果显示在axes3中imshow(y);title('亮度增强后图像');%显示真彩色增强后的图像运行结果如图4-22所示,设置调整倍数为3,点击“OK”,结果显示在图4-23中:图4-22图4-23(3)伪彩处理程序设计:case3ig6=rgb2gray(T);%将图像T转化为灰色图像,赋给ig6S2=imadjust(ig6,[01],[10],1.5);%利用imadjust对ig6作均衡化处理axes(handles.axes3);%将结果显示在axes3中imshow(S2);title('伪彩处理后图像');%显示伪彩处理后的图像guidata(hObject,handles);运行结果如下图4-24所示:图4-244.5灰度变换模块的设计(1)均衡化处理程序设计:globalTva=get(handles.huidubianhuan,'Value');val=get(hObject,'Value');switchval%用switch语句设置选项case1%均衡化后图像及直方图a=rgb2gray(T);%将T转化为灰色图像I=double(a);[m,n]=size(I);%进行尺度大小定义H=zeros(1,256);%建立一个1*256的零矩阵fori=1:m%for语句的实现forj=1:nH(I(i,j)+1)=H(I(i,j)+1)+1;endends=zeros(1,256);t=zeros(1,256);%分别建立1*256的零矩阵赋给s,tfori=1:256s(i)=H(i)/(m*n);forj=1:it(i)=t(i)+s(j);endendt1=round(t*(256-1)+0.5);H1=zeros(1,256);fori=1:256H1(t1(i))=H1(t1(i))+s(i);endaxes(handles.axes4);%将结果显示在axes4中bar(H1);title('均衡化后直方图');I2=t1(I+1)-1;axes(handles.axes9);imshow(uint8(I2));title('均衡化后图像');%计算原图像与目标图像累计直方图数值的差的绝对值doubleScMin=zeros(256,256);forY=1:LforX=1:LScMin(X,Y)=abs(Rk(Y)'-Rk2(X)');endend%建立映射HisM=zeros(L:1);forP=1:Lmin=0;minV=ScMin(1,P);forQ=1:Lif(minV>ScMin(Q,P))minV=ScMin(Q,P);min=Q;endendHisM(P)=min;end%将原图像的每个像素灰度转换为直方图均衡化后的灰度forx=1:rowfory=1:colNum=double(I(x,y))+1;ifNum==iNew(x,y)=HisM(i);endendend运行结果如图4-25所示:图4-25(2)规定化处理程序设计:case2f=rgb2gray(T);I=f;J=I;New=I;L=256;%灰度级Ps=zeros(L,1);%存储原图像直方图概率数据nk=zeros(L,1);%存储原图像直方图数据nk2=zeros(L,1);%存储直方图规定化后的图像的直方图Rk=zeros(L,1);%存储原图像累积直方图数据Ps2=zeros(L,1);Rk2=zeros(L,1);[row,col]=size(I);%计算图像数据矩阵的行列数n=row*col;%总像素个数fori=1:rowforj=1:colnum=double(I(i,j))+1;%获取像素灰度级nk(num)=nk(num)+1;%统计nkendend%计算直方图概率估计fori=1:LPs(i)=nk(i)/n;%计算累积直方图ifi==1Rk(i)=Ps(i);else1<=256Rk(i)=Rk(i-1)+Ps(i);end%规定化直方图Ps2Temp=[0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,39),0.05,zeros(1,19),0.05,zeros(1,19),0.05,zeros(1,19),ones(1,80).*0.0045,ones(1,16).*0.0088];Ps2=Ps2Temp';%计算规定化累积直方图forc=1:Lifc==1Rk2(c)=Ps2(c);elseRk2(c)=Rk2(c-1)+Ps2(c);endend%计算原图像与目标图像累计直方图数值的差的绝对值doubleScMin=zeros(256,256);forY=1:LforX=1:LScMin(X,Y)=abs(Rk(Y)'-Rk2(X)');endend%建立映射HisM=zeros(L:1);forP=1:Lmin=0;minV=ScMin(1,P);forQ=1:Lif(minV>ScMin(Q,P))minV=ScMin(Q,P);min=Q;endendHisM(P)=min;%将原图像的每个像素灰度转换为直方图均衡化后的灰度forx=1:rowfory=1:colNum=double(I(x,y))+1;ifNum==iNew(x,y)=HisM(i);endendend%计算直方图规定化后的直方图forp=1:rowforq=1:colNN=double(New(p,q))+1;nk2(NN)=nk2(NN)+1;endendaxes(handles.axes9);imshow(New),title('规定化后图像');axes(handles.axes4);bar(Ps2),title('规定化后直方图');end程序运行结果如图4-26所示:图4-26对比直方图均衡化和规定化的方法,可以得出以下结论:均衡化之后的结果是扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果。其优点是能自动增强整个图像的对比度,但它的具体增强效果不易控制,处理的结果总是得到全局的均衡化的直方图。实际工作中,有时需要变换直方图使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度,这时可采用比较灵活的直方图规定化方法。5系统调试与故障分析5.1系统调试结果将各模块的程序加入到设计的界面系统中,运行结果如下图5-1所示:图5-1结论:程序运行基本正常,各功能都能实现,从总的界面系统中来看,各模块都建立了连接,可以相互调用原图像,只是有时某一个模块运行完之后,再调用下一个模块,需要一定的时间处理。5.2故障分析图像处理软件测试基本成功,课题所要求的功能均能较好实现,也额外添加了一些功能,如常用操作处理,伪彩色处理,规定化处理,小波变换等。但一些功能只支持灰度图像的处理,例如进行中值滤波时,需要将真彩色图像先转换为灰色图像。原因是彩色图像属于RGB三维图像,而进行中值滤波前需要将三维图像转化为二维灰色图像,建立一个二维向量矩阵,再进行滤波处理,这是值得注意的地方。6实验心得体会经过为期一周的matlab软件课程设计实践,使我对matlab的使用有了进一步的了解和熟悉,尤其是对GUI界面的设计,之前只是把程序写进里面命令窗口中直接运行,现在需要设计界面,加一些控件来操作,把功能函数代码写入对应的funtion下,再进行调试。这大大提高了我的应用软件设计的能力,对优化界面设计也有了一定的进步。当然,在实践的过程中我也遇到了不少问题。比如说,模块功能的代码怎样把它整合到一块,有些代码放到一起就不能工作了,但是分开来就可以运行,实现它的功能。对句柄使用以及一些函数使用的不恰当。为此,在实践中,我利用课余时间,翻看了以前的matlab教材,专门借阅了利用matlab进行图像处理的相关教程,通过索引网络上的相关资料,为课设做了较为充分的准备。在参考了相关材料及源程序,我对自己要做的课设内容有了进一步的了解,并对matlab的函数语句的使用有了更深的体会。随着设计的进行,对matlab的的熟悉度逐步加深。在基本功不断扎实的基础上,我开始进行一些扩张功能的尝试,比如还原操作、实现撤销多次前操作等。其中有些实验任务较为成功的完成,但在某些个功能上出现了些问题,由于对matlab中数组结构体与循环套用使用的不当,到实践结束之际也未实现所犯的错误,只能退而求次,实现执行撤销功能(恢复到上次操作)。总体来说,对本次的课程设计还是满意的。在学习的过程中,使我巩固了matlab的基础理论知识,还提高了我对matlab的实际操作运用能力,使得理论与实践相结合,为进一步学习专业知识打下坚实的基础。同时,在实践的过程中,也让我感觉到“一分耕耘,一分收获”,这种感觉,着实不错。第一次拿给老师检查时,虽然能基本实现实验所要求的功能,但是对一些功能的实现不够全面,界面设计也没有整合到一块。经过老师细心地指导,我利用了一天加一个晚上的时间,终于在检查的最后一天基本完成改进。期间,在整合函数时,调试的比较久,代码语法本身没有错误,就是出不来结果。经过不断地调试,找出了一些问题,对全局变量和局部变量的设置出现了问题,经过修改代码,最终调试出结果。参考文献[1]刘卫国.MATLAB实用教程.北京:高等教育出版社,2007.[2]飞思科技产品研发中心.Matlab6.5辅助图像处理.北京:电子工业出版社,2003.[3]布挺,董红政.MATLAB在数字图像处理教学中的应用.哈尔滨职业技术学院学报,2010,(2):87~88.[4]周伟.基于MATLAB的数字图像处理技术概述.信息与电脑,2005,(5):28.[5]郑继刚.MATLAB在数字图像处理中的应用.保山师专学报,2009,05(1):18~28.[6]王付军.基于数字图像处理的大米质量检测.安徽农业科学,2010,38(22):11998~11999.[7]晏晖,姜鹏,陈贝.基于MATLAB工具箱的数字图像处理技术.微计算机信息,2010,26(9):214~216.[8]关雪梅.MATLAB处理数字图像的方法研究.硅谷,2009,20(2):58~59.基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论