数字图像处理实验指导书.doc_第1页
数字图像处理实验指导书.doc_第2页
数字图像处理实验指导书.doc_第3页
数字图像处理实验指导书.doc_第4页
数字图像处理实验指导书.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

实验须知一、预习要求1. 实验前认真阅读实验教程中有关内容,明确实验目的、内容和实验任务。2. 每次实验前做好充分的预习,对所需预备知识做到心中有数。3. 实验前应编好源程序,并对调试过程、实验结果进行预测。二、实验要求1. 实验课请勿迟到,缺席。2. 爱护设备,保持清洁,不随意更换设备。3. 认真完成实验任务,实验结果经教师检查。4. 发生事故,应立即切断电源,并马上向教师报告,检查原因,吸取教训。5. 实验完毕,请整理实验设备,再离开实验室。三、报告要求每次实验后,应递交一份实验报告,报告中应包含下列内容:1. 实验名称、实验人姓名、学号、班级,所用设备号。2. 实验目的、任务。3. 写出实验调试情况,包括上机时遇到的问题及解决办法、实验结果分析等,并附上调试好的程序清单(应加适量注释)。4. 总结实验中的心得体会,提出对实验内容、方案等的建议、意见或设想等。实验一 图像变换算法一、实验目的1、 理解几何运算的基本概念与定义;2、 掌握在MATLAB中进行插值的方法3、 运用MATLAB语言进行图像的插值缩放和插值旋转。二、实验原理几何运算可改变图像中各物体之间的空间关系。这种运算可以被看成是将(各)物体在图像内移动。一个几何运算需要两个独立的算法。首先,需要一个算法来定义空间变换本身,用它来描述每个像素如何从其初始位置“移动”到终止位置,即每个像素的“运动”。同时,还需要一个用于灰度插值的算法,这是因为,在一般情况下,输入图像的位置坐标(x,y)为整数,而输出图像的位置坐标为非整数,反过来也如此。因此插值就是对变换之后的整数坐标位置的像素值进行估计。MATLAB提供了一些函数实现这些功能。插值是常用的数学运算,通常是利用曲线拟合的方法,通过离散的采样点建立一个连续函数来逼近真实的曲线,用这个重建的函数便可以求出任意位置的函数值。最近邻插值是最简便的插值,在这种算法中,每一个插值输出像素的值就是在输入图像中与其最临近的采样点的值。该算法的数学表示为: 如果最近邻插值是工具箱函数默认使用的插值方法,而且这种插值方法的运算量非常小。不过,当图像中包含像素之间灰度级变化的细微结构时,最近邻插值法会在图像中产生人工的痕迹。双线性插值法的输出像素值是它在输入图像中22领域采样点的平均值,它根据某像素周围4个像素的灰度值在水平和垂直两个方向上对其插值。设,和是要插值点的坐标,则双线性插值的公式为:把按照上式计算出来的值赋予图像几何变换对应于处的像素,即可实现双线性插值。双三次插值的插值核为三次函数,其插值邻域的大小为44。它的插值效果比较好,但相应的计算量也比较大,在这里不做讨论。1、图像的缩放MATLAB图像处理工具箱中的函数imresize可以用上述的三种方法对图像进行插值缩放,如果不指定插值方法,则默认为最邻近插值法。imresize函数的语法格式为:B = imresize(A, m, method)这里参数method用于指定插值的方法,可选用的值为nearest(最邻近法),bilinear(双线性插值),bicubic(双三次插值),默认为nearest。B = imresize(A, m, method)返回原图像A的m倍放大的图像(m小于1时效果是缩小)。例:I = imread(ic.tif);J = imresize(I, 1.25);imshow(I), title(原图像)figure,imshow(J), title(放大后的图像)2、图像的旋转在工具箱中的函数imrotate可用上述三种方法对图像进行插值旋转,默认的插值方法也是最邻近插值法。imrotate的语法格式为:B = imrotate(A, angle, method)函数imrotate对图像进行旋转,参数method用于指定插值的方法,可选用的值为nearest(最邻近法),bilinear(双线性插值),bicubic(双三次插值),默认为nearest。一般说来旋转后的图像会比原图大,超出原图部分值为0。例:I = imread(rice.tif);J = imrotate(I, 30, bilinear);imshow(I); title(原图像)figure, imshow(J); title(旋转后的图像)三、实验内容及要求1. 读出一幅图像并显示,然后将图像放大1.5倍,插值方法使用三种不同方法,显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;选用其它图像,重复实验。2. 图像缩小0.8、0.5倍,插值方法使用三种不同方法,显示并比较结果有什么差异。3. 图像分别顺时针旋转30度、45度,插值方法使用三种不同方法,显示旋转后的图像并比较结果有什么不同。4. 将图像进行平移、裁剪、错切、镜像等变化,比较其效果。5. (选做内容)用Matlab语言直接编程实现图像的缩放,插值方法采用最近邻插值。实验二 图像增强算法一、实验目的1、 理解图像增强的基本概念与定义;2、 掌握对比度调整与灰度直方图均衡化的方法;3、 掌握空域滤波的基本原理及方法。二、实验原理1、对比度调整如果原图像f(x, y)的灰度范围是m, M,我们希望对图像的灰度范围进行线性调整,调整后的图像g(x, y)的灰度范围是n, N,那么下述变换:就可以实现这一要求。MATLAB图像处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度调整。imadjust函数的语法格式为:J = imadjust(I,low_in high_in, low_out high_out)J = imadjust(I, low_in high_in, low_out high_out)返回原图像I经过直方图调整后的新图像J,low_in high_in为原图像中要变换的灰度范围,low_out high_out指定了变换后的灰度范围,灰度范围可以用 空矩阵表示默认范围,默认值为0, 1。例:I = imread(pout.tif);J = imadjust(I, 0.3 0.7, ); %输出灰度范围为默认范围,即为0, 1imshow(I), figure, imshow(J)不使用imadjust函数,利用matlab语言直接编程也很容易实现灰度图像的对比度调整。但运算的过程中应当注意以下问题,由于我们读出的图像数据一般是uint8型,而在MATLAB的矩阵运算中要求所有的运算变量为double型(双精度型)。因此读出的图像数据不能直接进行运算,必须将图像数据转换成双精度型数据。MATLAB中提供了这样的数据类型转换函数:im2double函数,其语法格式为:I2 = im2double(I1)运算之后的图像数据再显示时可以再转化成uint8型,格式为:I3 = uint8 (I2)线性运算示例:K1=imread(pout.tif)I=double(K1)J=I*0.43+60K2=uint8(J)subplot(1,2,1), imshow(K1)subplot(1,2,2), imshow(K2)非线性运算示例:K1=imread(pout.tif);Dm=double(max(max(K1)I=double(K1);J=( Dm/2)*(1+(1/sin(pi/4)*sin(pi/2)*(I/Dm)-0.5);K2=uint8(J);subplot(1,2,1), imshow(K1)subplot(1,2,2), imshow(K2)2、直方图均衡化直方图均衡化的目的是将原始图像的直方图变为均衡分布的形式,即将一已知灰度概率密度分布的图像,经过某种变换变成一幅具有均匀灰度概率密度分布的新图像,从而改善图像的灰度层次。MATLAB图像处理工具箱中提供的histeq函数,可以实现直方图的均衡化。对于灰度图像,histeq函数的基本调用格式为J=histeq(I, n)该函数返回原图像I经过直方图均衡化处理后的新图像J。n为指定的均衡化后的灰度级数,缺省值为64。例:I = imread(pout.tif);J = histeq(I);subplot(2,2,1), imshow(I);subplot(2,2,2), imhist(I, 64);subplot(2,2,3), imshow(J);subplot(2,2,4), imhist(J, 64);3、均值滤波均值滤波是在空间域对图像进行平滑处理的一种方法,易于实现,效果也挺好。设噪声(m,n)是加性噪声,其均值为0,方差(噪声功率)为2,而且噪声与图像f(m,n)不相关。其有噪声的图像f(m, n)为: (4.1)经均值滤波处理后的图像g(m, n)为: (4.2)其中s是(m, n)点的领域内的点集。除了对噪声有上述假定之外,该算法还基于这样一种假设:图像是由许多灰度值相近的小块组成。这个假设大体上反映了许多图像的结构特征。(4.2)式表达的算法是由某像素领域内各点灰度值的平均值来代替该像素原来的灰度值。可用模块反映领域平均算法的特征。对于四点领域和八点领域,可分别由下述摸板表征:(4.3)(4.4)模版沿水平和垂直两个方向逐点移动,相当于用这样一个模块与图像进行卷积运算,从而平滑了整幅图像。模版内各系数和为1,用这样的模版处理常数图像时,图像没有变化;对一般图像处理后,整幅图像灰度的平均值可不变。4、中值滤波中值滤波是一种非线性处理技术,能抑制图像中的噪声。它是基于图像的这样一种特性:噪声往往以孤立的点的形式出现,这些点对应的象素很少,而图像则是由像素数较多、面积较大的小块构成。在一维的情况下,中值滤波器是一个含有奇数个像素的窗口。在处理之后,位于窗口正中的像素的灰度值,用窗口内各像素灰度值的中值代替。例如若窗口长度为5,窗口中像素的灰度值为80、90、200、110、120,则中值为110,因为按小到大(或大到小)排序后,第三位的值是110。于是原理的窗口正中的灰度值200就由110取代。如果200是一个噪声的尖峰,则将被滤除。然而,如果它是一个信号,则滤波后就被消除,降低了分辨率。因此中值滤波在某些情况下抑制噪声,而在另一些情况下却会抑制信号。中值滤波很容易推广到二维的情况。二维窗口的形式可以是正方形、近似圆形的或十字形的。在图像增强的具体应用中,中值滤波只能是一种抑制噪声的特殊工具,在处理中应监视其效果,以决定最终是否采用这种方案。实施过程中的关键问题是探讨一些快速算法。MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:C = conv2(A, B)C = conv2(A, B)返回矩阵A和B的二维卷积C。若A为mana的矩阵,B为mbnb的矩阵,则C的大小为(ma+mb+1)(na+nb+1)。例:A=magic(5)A = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 B=1 2 1 ; 0 2 0; 3 1 3B = 1 2 1 0 2 0 3 1 3 C=conv2(A, B)C = 17 58 66 34 32 38 15 23 85 88 35 67 76 16 55 149 117 163 159 135 67 79 78 160 161 187 129 51 23 82 153 199 205 108 75 30 68 135 168 91 84 9 33 65 126 85 104 15 27MATLAB图像处理工具箱提供了基于卷积的图像滤波函数filter2。filter2的语法格式为:Y = filter2(h, X)其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。fspecial函数用于创建预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type, parameters)参数type指定算子类型,parameters指定相应的参数,具体格式为:type=average,为均值滤波,参数parameters为n,代表模版尺寸,用向量表示,默认值为3,3。type= gaussian,为高斯低通滤波器,参数parameters有两个,n表示模版尺寸,默认值为3,3,sigma表示滤波器的标准差,单位为像素,默认值为0.5。type= laplacian,为拉普拉斯算子,参数parameters为alpha,用于控制拉普拉斯算子的形状,取值范围为0,1,默认值为0.2。type= log,为拉普拉斯高斯算子,参数parameters有两个,n表示模版尺寸,默认值为3,3,sigma为滤波器的标准差,单位为像素,默认值为0.5type= prewitt,为prewitt算子,用于边缘增强,无参数。type= sobel,为著名的sobel算子,用于边缘提取,无参数。type= unsharp,为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为0,1,默认值为0.2。下面举一个均值滤波的例子:I=imread(rice.tif);J=imnoise(I, salt&pepper, 0.02);h=fspecial(average, 3);I2=filter2(h, J); % 本句也可改写为:I2 = imfilter(J, h); subplot(1,3,1), imshow(I), title(原图像);subplot(1,3,2), imshow(J), title(加噪声图像);subplot(1,3,3), imshow(I2, ), title(均值滤波后图像);(注意“imshow(I2, )”中的参数“ ”!它表示由程序自动调整图像数据的类型与范围,以便正确显示图像)在MATLAB图像处理工具箱中,提供了medfilt2函数用于实现中值滤波。Medfilt2函数的语法格式为:B = medfilt2(A) %用33的滤波窗口对图像A进行中值滤波。B = medfilt2(A,m n) %用指定大小为mn的窗口对图像A进行中值滤波。以下举例说明:I=imread(rice.tif);J=imnoise(I, gaussian, 0.02);I2=medfilt2(J, 3, 3);subplot(1,3,1), imshow(I), title(原图像);subplot(1,3,2), imshow(J), title(加噪声图像);subplot(1,3,3), imshow(I2), title(中值滤波后图像);三、实验内容及要求1、读入一幅图像,显示该图像及其直方图,对图像灰度进行线性和非线性调整,观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别;改变灰度值调整范围,观察调整后的图像的变化及其与原图像的差别,调整后的灰度直方图的变化及其与原灰度直方图的区别;进一步利用改变灰度值调整范围,实现图像的反转。2、(选做内容)不调用imadjust函数,利用matlab语言直接编程实现图像的对比度调整和图像的反转。3、读取一幅灰度图像,用histeq函数将原始图像的灰度直方图均衡化,同时观察均衡化后的图像与前面图像的差别,均衡化后的灰度直方图与前面的灰度直方图的区别。4、(选做内容)不调用histeq函数,利用matlab语言直接编程实现图像的直方图均衡化处理。5、给读出的图像加入高斯噪声。6、分别采用不同大小的模板对加有噪声的图像进行均值滤波,用一个图像处理对话框显示原图像、加有噪声的图像及均值滤波的图像。比较结果。7、分别采用不同大小的模板对加有噪声的图像进行中值滤波,用一个图像处理对话框显示原图像、加有噪声的图像及中值滤波的图像。比较结果。8、采用大小相同的模板对加有噪声的图像分别进行均值滤波和中值滤波,用一个图像处理对话框显示原图像、加有噪声的图像、均值滤波的图像及中值滤波的图像。比较结果。9、给图像加入不同类型的噪声,重复均值滤波和中值滤波,比较结果。10、(选做内容)不调用工具箱的函数,自编程序,实现均值滤波和中值滤波。实验三 图像分析预处理算法(一)一、实验目的1、理解图像边缘提取的基本概念;2、熟悉进行边缘提取的基本方法;3、掌握用MATLAB语言进行图像边缘提取的方法。4、掌握应用MATLAB语言进行FFT及逆变换的方法;5、熟悉图像在频域中处理方法二、实验原理1、边缘检测图像理解是图像处理的一个重要分支,他研究为完成某一任务需要从图像中提取哪些有用的信息,以及如何利用这些信息解释图像。边缘检测技术对于处理数字图像非常重要,因为边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。在图像中,边界表明一个特征区域的终结和另一个特征区域的开始,边界所分开区域的内部特征或属性是一致的,而不同的区域内部的特征或属性是不同的,边缘检测正是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度,颜色或者纹理特征。边缘检测实际上就是检测图像特征发生变化的位置。由于噪声和模糊的存在,检测到的边界可能会变宽或在某些点处发生间断,因此,边界检测包括两个基本内容:首先抽取出反映灰度变化的边缘点,然后剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。边缘检测的方法大多数是基于方向导数掩模求卷积的方法。导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值比较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。一阶导数与是最简单的导数算子,它们分别求出了灰度在x和y方向上的变化率,而方向上的灰度变化率可以用下面式子计算:对于数字图像,应该采用差分运算代替求导,相对应的一阶差分为:方向差分为:函数f在某点的方向导数取得最大值的方向是,方向导数的最大值是称为梯度模。利用梯度模算子来检测边缘是一种很好的方法,它不仅具有位移不变性,还具有各向同性。为了运算简便,实际中采用梯度模的近似形式,如:、及等。另外,还有一些常用的算子,如Roberts算子和Sobel算子。Roberts算子的表达式为:Sobel算子的表达式为:X方向算子: y方向算子:其中,由于Sobel算子是滤波算子的形式,用于提取边缘。我们可以利用快速卷积函数,简单有效,因此应用很广泛。拉普拉斯高斯(LoG)算法是一种二阶边缘检测方法。它通过寻找图像灰度值中二阶微分中的过零点(Zero Crossing)来检测边缘点。其原理为,灰度级变形成的边缘经过微分算子形成一个单峰函数,峰值位置对应边缘点;对单峰函数进行微分,则峰值处的微分值为0,峰值两侧符号相反,而原先的极值点对应于二阶微分中的过零点,通过检测过零点即可将图像的边缘提取出来。MATLAB的图像处理工具箱中提供的edge函数可以实现检测边缘的功能,其语法格式如下:BW = edge(I, sobel)BW = edge(I, sobel, direction)BW = edge(I, roberts)BW = edge(I, log)这里BW = edge(I, sobel)采用Sobel算子进行边缘检测。BW = edge(I, sobel, direction)可以指定算子方向,即:direction = horizontal,为水平方向;direction = vertical,为垂直方向;direction = both,为水平和垂直两个方向。BW = edge(I, roberts)和BW = edge(I, log)分别为用Roberts算子和拉普拉斯高斯算子进行边缘检测。例:用三种算子进行边缘检测。I=imread(eight.tif);imshow(I)BW1=edge(I, roberts);figure, imshow(BW1), title(用Roberts算子)BW2=edge(I, sobel);figure, imshow(BW2), title(用Sobel算子)BW3=edge(I, log);figure, imshow(BW3), title(用拉普拉斯高斯算子)2、傅立叶变换的基本知识在图像处理的广泛应用领域中,傅立叶变换起着非常重要的作用,具体表现在包括图像分析、图像增强及图像压缩等方面。假设f(x, y)是一个离散空间中的二维函数,则该函数的二维傅立叶变换的定义如下: p=0,1M-1 q=0,1N-1 (6.1)或 p=0,1M-1 q=0,1N-1 (6.2)离散傅立叶反变换的定义如下:m=0,1M-1 n=0,1N-1 (6.3)F(p, q)称为f(m, n)的离散傅立叶变换系数。这个式子表明,函数f(m, n)可以用无数个不同频率的复指数信号和表示,而在频率(w1,w2)处的复指数信号的幅度和相位是F(w1,w2)。例如,函数f(m, n)在一个矩形区域内函数值为1,而在其他区域为0,如图所示。了简便起见,假设f(m, n)为一个连续函数,则f(m, n)的傅立叶变换的幅度值(即)显示为网格图,如图所示。将傅立叶变换的结果进行可视化的另一种方法是用图像的方式显示变换结果的对数幅值,如图所示。几种简单函数的傅立叶变换的频谱可以直观的表示为图所示的样子。3、MATLAB提供的快速傅立叶变换函数(1) fft2fft2函数用于计算二维快速傅立叶变换,其语法格式为:B = fft2(I)B = fft2(I)返回图像I的二维fft变换矩阵,输入图像I和输出图像B大小相同。例如,计算图像的二维傅立叶变换,并显示其幅值的结果,如图所示,其命令格式如下load imdemos saturn2imshow(saturn2)B = fftshift(fft2(saturn2);imshow(log(abs(B), , notruesize)(2) fftshiftMATLAB提供的fftshift函数用于将变换后的图像频谱中心从矩阵的原点移到矩阵的中心,其语法格式为:B = fftshift(I)对于矩阵I,B = fftshift(I)将I的一、三象限和二、四象限进行互换。(3) ifft2ifft2函数用于计算图像的二维傅立叶反变换,其语法格式为:B = ifftn(I)B = ifftn(I)返回图像I的二维傅立叶反变换矩阵,输入图像I和输出图像B大小相同。其语法格式含义与fft2函数的语法格式相同,可以参考fft2函数的说明。4、简单低通滤波器的设计一个图像经过傅立叶变换后,就从空域变到了频域,因此我们可以用信号处理中对于频域信号的处理方法对一幅图像进行处理。比如对图像进行低通滤波等。一个二维的理想低通滤波器(ILPF),它的传递函数由下式确定: (6.4)式中D0是一个规定的非负的量,称为截止频率,虽然在计算机中必定能够模拟一个锐截止频率的理想低通滤波器,但它们不能用电子元件来实现。实际中比较常用的低通滤波器有:巴特沃思(Butterworth)滤波器、指数滤波器(ELPF)、梯形低通滤波器等。在实验中我们设计一个理想的低通滤波器。设计理想的低通滤波器由其定义可知只要设计一个与频域图像大小完全相同的矩阵。在某一个域值内该矩阵的值为1,其余为0即可。例:若图像的大小为128*128,则可以这样设计一个低通滤波器:H=zeros(128);H(32:96, 32:96)=1; %此处的范围是人为取定的,可以根据需要更改。若图像矩阵I的傅立叶变换是B(已经用fftshift将频谱中心移至矩阵的中心),则对这幅图像做低通滤波,再做傅立叶逆变换命令为LOWPASS=B.* H; %此处变换后的矩阵为LOWPASS,另注意这儿是矩阵的点乘。C=ifft2(LOWPASS)

温馨提示

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

评论

0/150

提交评论