您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于matlab编程的数字图像处理论文
郑州航空工业管理学院结课设计(论文)2008级电子信息工程专业0813083班级课程数字图像处理姓名苏冰山学号081308322指导教师陈宇职称讲师二О一一年十月十七一、引言数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务。数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。数字图像处理技术已经在各个领域上都有了比较广泛的应用。图像处理的信息量很大,对处理速度的要求也比较高。MATLAB强大的运算和图形展示功能,使图像处理变得更加的简单和直观。本次结课设计基于MATLAB的数字图像处理环境,利用MATLAB及其图像处理工具箱进行数字图像处理,并通过一些例子来说明利用MATLAB图像处理工具箱进行图像处理的方法。论述了利用MATLAB实现灰度图像增强技术研究与设计。二、设计内容此次设计探究了灰度图像增强技术在MATLAB的数字图像处理环境下的实现,主要包括空域变换增强和空域滤波增强的基本原理及编程实现。涉及对比度的增强、图像求反、线性平滑滤波器、非线性平滑滤波器、低通滤波、高通滤波的程序算法实现及运行后的效果图。灰度图像增强图像增强是一类基本的图像处理技术,其目的是对图像进行加工,以得到对具体应用来说视觉效果更好、更有用的图像。这里的好和有用要因具体的应用目的和要求而异,并且所需的具体增强技术也可不同。目前常用的增强技术根据其处理所进行的空间不同,可分为基于图像域的方法和基于变化域的方法。第一类,直接在图像所在的空间进行处理,也就是在像素组成的空间里直接对像素进行操作;第二类,在图像的变化域对图像进行间接处理。空域增强方法可表示为:g(x,y)=EH[f(x,y)]其中f(x,y)和g(x,y)分别为增强前后的图像,EH代表增强操作。1空域变换增强2.1增强对比度增强对比度实际是增强原图像的各部分的反差。实际中往往是通过原图中某两个灰度值之间的动态范围来实现的(如图2-1)图2-1增强对比度在图2.1中可以看出,通过变换可以使原图的较高的和较低的灰度值的动态范围减小了,而原图在二者之间的动态范围增加了,从而其范围的对比度增加了。MATLAB代码所示:X1=imread('cameraman.tif');figure,imshow(X1)f0=0;g0=0;f1=70;g1=30;f2=180;g2=230;f3=255;g3=255;r1=(g1-g0)/(f1-f0);b1=g0-r1*f0;r2=(g2-g1)/(f2-f1);b2=g1-r2*f1;r3=(g3-g2)/(f3-f2);b3=g2-r3*f2;[m,n]=size(X1);X2=double(X1);fori=1:mforj=1:nf=X2(i,j);g(i,j)=0;if(f=0)&(f=f1)g(i,j)=r1*f+b1;elseif(f=f1)&(f=f2)g(i,j)=r2*f+b2;elseif(f=f2)&(f=f3)g(i,j)=r3*f+b3;endendendfigure,imshow(mat2gray(g))图像处理图示(如图2-2和图2-3)图2-2原图图2-3增强对比度所得图像2.2图像求反对图像求反是将原来的灰度值翻转,简单的说就是使黑变白,使白变黑。普通的黑白底片和照片就是这样的关系。具体的变换就是将图像中每个像素的灰度值根据变换曲线进行映射。MATLAB代码所示:X1=imread('cameraman.tif');f1=200;g1=256;k=g1/f1;[m,n]=size(X1);X2=double(X1);fori=1:mforj=1:nf=X2(i,j);g(i,j)=0;if(f=0)&(f=f1)g(i,j)=g1-k*f;elseg(i,j)=0;endendendfigure,imshow(mat2gray(g))图像处理图如图2-4所示:图2-4图像求反后2空域滤波增强一般情况下,像素的邻域比该像素要大,也就是说这个像素的邻域中除了本身以外还包括其他像素。在这种情况下,g(x,y)在(x,y)位置处的值不仅取决于f(x,y)在以(x,y)为中心的邻域内所有的像素的值。如仍以s和t分别表示f(x,y)在(x,y)位置处的灰度值,并以n(s)代表f(x,y)在(x,y)邻域内像素的灰度值,则t=EA[s,n(s)]为在邻域内实现增强操作,常可利用模板与图像进行卷积。每个模板实际上是一个二维数组,其中各个元素的取值定了模板的功能,这种模板操作也称为空域滤波。2.1基本原理空域滤波可分为线形滤波和非线形滤波两类。线形滤波器的设计常基于对傅立叶变换的分析。非线形空域滤波器则一般直接对邻域进行操作。另外各种滤波器根据功能又主要分成平滑滤波和锐化滤波。平滑可用低通来实现,锐化可用高通来实现平滑滤波器:它能减弱或消除傅立叶空间的高频分量,但不影响在低频分量。因为高频分量对应图像中的区域边缘等灰度值具有较大较快变化的部分,滤波器将这些分量滤去可使图像平滑。锐化滤波器:它能减弱或消除傅立叶空间的高频分量空域滤波器都是利用模板卷积,主要步骤如下:(1)将模板在图中漫游,并将模板中心与图中某个像素位置重合;(2)将模板上的系数与模板下对应的像素相乘;(3)将所有的乘积相加;(4)将和(模板的输出响应)赋给图中对应的模板中心位置像素。下面分别介绍在MATLAB中如何应用平滑和锐化滤波器。2.2线性平滑滤波器线性低通滤波器是最常用的线性平滑滤波器。这种滤波器的所有系数都是正的。对3*3的模板来说,最简单的操作是取所有系数都为1。为保证输出图像仍在原来的灰度范围内,在计算R后要将其除以9再进行赋值。这种方法称为邻域平均法。MATLAB实现均值过滤器的代码所示:I=imread('saturn.tif');J=imnoise(I,'salt&pepper',0.02);imshow(I)figure,imshow(J)K1=filter2(fspecial('average',3),J)/255;figure,imshow(K1)title('3*3的均值滤波器')原图像,加入椒盐噪声的图像和均值滤波的图像分别如图1-5、图1-6和图1-7所示。图2-5原图图2-6加入椒盐噪声图像图2-73*3的均值滤波器处理结果2.3非线性平滑滤波器中值滤波器是最常用的非线性平滑滤波器。它是一种临域运算,类似于卷积,但计算的不是加权求和,而是把邻域中的像素按灰度级进行排序,然后选择改组的中间值作为输出的像素值。具体步骤:(1)将模板在图像中漫游,并将模板中心和图像某个像素的位置重合;(2)读取模板下对应像素的灰度值;(3)将这些灰度值从小到大排成一列;(4)找出这些值排在中间的一个;(5)将这个中间值赋给对应模板中心位置的像素。MATLAB实现中值滤波器代码所示:I=imread('saturn.tif');J=imnoise(I,'salt&pepper',0.02);K1=medfilt2(J,[3,3]);figure,imshow(K1)中值滤波的结果如图2-8所示。图2-8中值滤波结果2.4线性锐化滤波器线性高通滤波器是最常用的线性锐化滤波器。这种滤波器的中心系数都是正的,而周围的系数都是负的。对3*3的模板来说,典型的系数取值是:[-1–1–1;-18–1;-1–1-1]事实上这是拉普拉斯算子,所有的系数之和为0。当这样的模板放在图像中灰度值是常数或变化很小的区域时,其输出为0或很小。这个滤波器将原来的图像中的零频域分量去除了,也就是将输出的图像的平均值变为0,这样就会有一部分像素的灰度值小于0。在图像处理中我们一般只考虑正的灰度值,所以还有将输出图像的灰度值范围通过尺度变回到所要求的范围。MATLAB代码所示:I=imread('saturn.tif');m=fspecial('laplacian')I1=filter2(m,I)h=fspecial('unsharp',0.5);I2=filter2(h,I)/255;subplot(1,2,1);imshow(I1);title('高通滤波laplacian算子')subplot(1,2,2);imshow(I2);title('高通滤波unsharp')处理结果如图4-9所示:图2-9空域高通滤波3频域增强3.1基本原理卷积理论是频域技术的基础。设函数f(x,y)与线性位不变算子h(x,y)的卷积结果是g(x,y),即g(x,y)=h(x,y)*f(x,y)那么根据卷积定理在频域有:G(x,y)=H(u,v)F(u,v)其中G(x,y)、H(u,v)、F(u,v)分别是g(x,y)、h(x,y)、f(x,y)的傅立叶变换。频域增强的主要步骤是:(1)技术所需增强图的傅立叶变换;(2)将其与一个(根据需要设计的)转移函数相乘;(3)再将结果进行傅立叶反变换以得到增强的图。频域增强的两个关键步骤:(1)将图像从空域转换到频域所需的变换及将图像从频域空间转换回空域所需的变换;(2)在频域空间对图像进行增强加工操作。常用的频域增强方法有低通滤波和高通滤波。以下分别介绍在MATLAB中如何实现。3.2低通滤波图像的能量大部分集中在幅度谱的低频和中频度,而图像的边缘和噪声对应于高频部分。因此能降低高频成分幅度的滤波器就能减弱噪声的影响。Butterworth低通滤波器是一种物理上可以实现的低通滤波器,n阶,截断频率为d0的Butterworth低通滤波器的转移函数为:H(u,v)=nd2]0/vud[11),(用MATLAB实现Butterworth低通滤波器的代码所示:I1=imread('Saturn.tif');figure,imshow(I1)I2=imnoise(I1,'salt');figure,imshow(I2)f=double(I2);g=fft2(f);g=fftshift(g);[N1,N2]=size(g);n=2;d0=50;n1=fix(N1/2);n2=fix(N2/2);fori=1:N1forj=1:N2d=sqrt((i-n1)^2+(j-n2)^2);h=1/(1+0.414*(d/d0)^(2*n));result(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));figure,imshow(X3)原图和处理结果如图2-10和图2-11所示图2-10加噪图2-11去噪3.3高通滤波高通滤波也称高频滤波器,它的频值在0频率处单位为1,随着频率的增长,传递函数的值逐渐增加;当频率增加到一定值之后传递函数的值通常又回到0值或者降低到某个大于1的值。在前一种情况下,高频增强滤波器实际上是依照能够带通滤波器,只不过规定0频率处的增益为单位1。实际应用中,为了减少图像中面积大且缓慢变化的成分的对比度,有时让0频率处的增益小于单位1更合适。如果传递函数通过原点,则可以称为laplacian滤波器。n阶截断频率为d0的Butterworth高通滤波器的转移函数为:H(u,v)=nd2]vu/0d[11),(MATLAB实现Butterworth高通滤波器代码所示:I1=imread('blood1.tif');figure,imshow(I1)f=double(I1);g=fft2(f);g=fftshift(g);[N1,N2]=size(g);n=2;d0=5;n1=fix(N1/2);n2=fix(N2/2);fori=1:N1forj=1:N2d=sqrt((i-n1)^2+(j-n2)^2);ifd==0h=0;elseh=1/(1+(d0/d)^(2*n));endresult(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(r
本文标题:基于matlab编程的数字图像处理论文
链接地址:https://www.777doc.com/doc-5859896 .html