数字图像处理实验三
- 格式:doc
- 大小:245.00 KB
- 文档页数:5
实验三图像滤波实验(模板运算)一.实验目的:模板运算是空间域图象增强的方法,也叫模板卷积。
(1)平滑:平滑的目的是模糊和消除噪声。
平滑是用低通滤波器来完成,在空域中全是正值。
(2)锐化:锐化的目的是增强被模糊的细节。
锐化是用高通滤波器来完成,在空域中,接近原点处为正,在远离原点处为负。
二.实验内容:(1)利用线性空间滤波(均值滤波)对一幅图象进行平滑,验证模板尺寸和滤波参数对图象的模糊效果的影响。
(2)利用非线性空间滤波器(中值滤波)对一幅噪声图象(椒盐噪声)进行平滑去噪,同时检验两种滤波模板(分别使用一个5×5的线性邻域平均模板和一个非线性模板:3×3中值滤波器)对噪声的滤波效果。
(3)利用线性空间滤波器,对灰度图象分别利用二阶标准Laplacian算子和对角线Laplacian算子对其进行锐化操作,增强图像边缘,验证检测效果。
三.实验原理:1.用31×31均值滤波模板,并分别采用参数boundary_options默认值和‘replicate’对图像test_pattern进行平滑处理;用3×3,5×5,7×7均值滤波模板对图像lena平滑处理,观察不同参数、不同模板尺寸对滤波效果的影响。
1.线性空间滤波函数imfilter来实现线性空间滤波,语法为:g = imfilter(f, w, filtering_mode, boundary_options, size_options)其中,f是输入图像,w为滤波模板,g为滤波结果,filtering_mode用于指定在滤波过程中是使用相关运算(‘corr’)还是卷积运算(‘conv’),相关就是按模板在图像上逐步移动运算的过程,卷积则是先将模板旋转180度,再在图像上逐步移动的过程,显然,若模板中心对称,则相关和卷积运算是相同操作,默认为相关运算;boundary_options用于处理边界充零问题,默认为赋零,若该参数为’replicate’表示输出图像边界通过复制原图像边界的值来扩展;size_options可以是’full’或’same’,默认为’same’,表示输出图像与输入图像的大小相同。
数字图像处理实验报告中南⼤学数字图像处理实验报告⽬录⼀、实验⼀:数字图像基本操作及灰度调整1.实验⽬的 (1)2.实验基本原理 (1)3.实验内容与要求 (3)4. 实验具体实现 (4)⼆、实验⼆:数字图像的空间域滤波和频域滤波1.实验⽬的 (9)2.实验基本原理 (9)3.实验内容与要求 (12)4. 实验具体实现 (14)三、实验三:图像分割与边缘检测1.实验⽬的 (32)2.实验基本原理 (32)3.实验内容与要求 (34)4. 实验具体实现 (35)实验⼀:数字图像基本操作及灰度调整1.实验⽬的1) 掌握读、写图像的基本⽅法。
2) 掌握MATLAB 语⾔中图像数据与信息的读取⽅法。
3) 理解图像灰度变换处理在图像增强的作⽤。
4) 掌握绘制灰度直⽅图的⽅法,理解灰度直⽅图的灰度变换及均衡化的⽅法。
2.实验原理1. 灰度变换灰度变换是图像增强的⼀种重要⼿段,它常⽤于改变图象的灰度范围及分布,是图象数字化及图象显⽰的重要⼯具。
1) 图像反转灰度级范围为[0, L-1]的图像反转可由下式获得r L s --=12) 对数运算:有时原图的动态范围太⼤,超出某些显⽰设备的允许动态范围,如直接使⽤原图,则⼀部分细节可能丢失。
解决的⽅法是对原图进⾏灰度压缩,如对数变换:s = c log(1 + r ),c 为常数,r ≥ 03) 幂次变换:0,0,≥≥=γγc cr s4) 对⽐拉伸:在实际应⽤中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某⼀范围的灰度值,或对不同范围的灰度值进⾏不同的拉伸处理,即分段线性拉伸:其对应的数学表达式为:2. 直⽅图均衡化灰度直⽅图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计特征。
依据定义,在离散形式下,⽤r k 代表离散灰度级,⽤p r (r k )代表p r (r ),并且有下式成⽴:nnr P k k r =)( 1,,2,1,010-=≤≤l k r k式中:n k 为图像中出现r k 级灰度的像素数,n 是图像像素总数,⽽n k /n 即为频数。
实验三空域滤波一实验目的1了解空域滤波的方法。
2掌握几种模板的基本原理。
二实验条件PC微机一台和MATLAB软件。
三实验内容1使用函数fspecial( ) 生成几种特定的模板。
2使用函数imfilter( ) 配合模板对图象数据进行二维卷积。
3比较各种滤波器的效果。
四实验步骤空域滤波一般分为线性滤波和非线性滤波。
空域滤波器根据功能分为平滑滤波器和锐化滤波器。
1)平滑空间滤波:平滑的目的有两种:一是模糊,即在提取较大的目标前去除太小的细节或将目标内的小间断连接起来;另一种是消除噪声。
线性平滑(低通)滤波器:线性平滑空域滤波器的输出是包含在滤波掩膜邻域内像素的简单平均值。
线性平滑滤波器也称为均值滤波器,这种滤波器的所有系数都是正数,对3*3的模板来说,最简单的是取所有系数为1,为了保持输出图像仍然在原来图像的灰度值范围内,模板与像素邻域的乘积都要除以9。
a用h=fspecial(‘average’) 得到的h 为3×3的邻域平均模板,然后用h来对图象lenna.gif进行平滑处理。
>> x=imread('lenna.gif');h=fspecial('average');y=imfilter(x,h);imshow(x);title('原始图像');subplot(1,2,2);imshow(y);title('均值滤波后图像')实验结果如图:b 把模板大小依次改为7×7,9×9和11×11,观察其效果有什么不同?>>x=imread('lenna.gif');subplot(1,4,1);imshow(x);title('原始图像');h=fspecial('average',7);y=imfilter(x,h);subplot(1,4,2);imshow(y);title('模板大小7*7的图像');h1=fspecial('average',9);y1=imfilter(x,h1);subplot(1,4,3);imshow(y1);title('模板大小9*9的图像');h2=fspecial('average',11);y2=imfilter(x,h2);subplot(1,4,4);title('模板大小11*11的图像')比较效果:造成图像的模糊,n选取的越大,模糊越严重。
数字图像处理实验报告光信13-2班2013210191韩照夏数字图像处理实验报告实验一数字图像空间域平滑一、实验目的掌握图像空间域平滑的原理和程序设计;观察对图像进行平滑增强的效果。
二、实验设备计算机,Matlab程序平台。
三、实验原理图像平滑处理的目的是改善图像质量和抽出对象特征。
任何一幅未经处理的原始图像,都存在着一定程度的噪声干扰。
噪声恶化了图像质量,使图像模糊,甚至淹没特征,给分析带来困难。
消除图像噪声的工作称为图像平滑或滤波。
针对不同噪声源(如光栅扫描、底片颗粒、机械元件、信道传输等)引起的不同种类噪声(如加性噪声、乘性噪声、量化噪声等),平滑方法也不同。
平滑可以在空间域进行,也可以在频率域进行。
1.局部平均法局部平滑法是一种直接在空间域上进行平滑处理的技术。
假设图像由许多灰度恒定的小块组成,相邻象素间存在很高的空间相关性,而噪声则是统计独立的。
因此,可用邻域内各象素的灰度平均值代替该象素原来的灰度值,实现图像的平滑。
对图像采用3×3的邻域平均法,其作用相当于用以下模板与图像进行卷积运算。
2. 超限象素平滑法 对邻域平均法稍加改进,可导出超限象素平滑法。
其原理是将f(x,y)和邻域平均g(x,y)差的绝对值与选定的阈值进行比较,根据比较结果决定点(x,y )的最后灰度g ´(x,y)。
其表达式为3. 二维中值滤波中值滤波就是用一个奇数点的移动窗口, 将窗口中心点的值用窗口内各点的中值代替。
二维中值滤波可由下式表示常用的窗口有:四、实验步骤1.实验准备:打开计算机,进入Matlab 程序界面。
2.输入图像空间域平滑处理程序,程序如下:⎩⎨⎧>-= ),(),(),( ),,(),('其他,当y x f T y x g y x f y x g y x g )},({),(y x f Med y x g A=程序1.1 图像平滑处理clear;clc;I=imread('lena.jpg');subplot(3,2,1);imshow(I);title('原图像');I1=imnoise(I,'salt & pepper',0.02);subplot(3,2,2);imshow(I1);title('对I加椒盐噪声的图像');h2=fspecial('average',[3 3]);I2=imfilter(I1,h2,'replicate');subplot(3,2,3);imshow(I2);title('3×3邻域平滑');h3=fspecial('average',[5 5]);I3=imfilter(I1,h3,'replicate');subplot(3,2,4);imshow(I3);title('5×5邻域平滑');I4=I1;I4((abs(I1-I2))>64)=I2((abs(I1-I2))>64);subplot(3,2,5);imshow(I4);title('3×3超限象素平滑(T=64)'); I5=I1;I5((abs(I1-I3))>48)=I3((abs(I1-I3))>48);subplot(3,2,6);imshow(I5);title('5×5超限象素平滑(T=48)');程序1.2 图像平均平滑与中值滤波clear;clc;I=imread('lena.jpg');subplot(3,3,1);imshow(I);title('原图像');I1=imnoise(I,'gaussian',0.02);subplot(3,3,2);imshow(I1);title('高斯噪声');I2=imnoise(I,'salt & pepper',0.02);subplot(3,3,3);imshow(I1);title('椒盐噪声');h1=fspecial('average',[3 3]);I3=imfilter(I1,h1,'replicate');subplot(3,3,4);imshow(I3);title('对I1 3×3邻域平滑');h2=fspecial('average',[3 3]);I4=imfilter(I2,h2,'replicate');subplot(3,3,5);imshow(I4);title('对I2 3×3邻域平滑');I5=medfilt2(I1,[5 5]);subplot(3,3,6);imshow(I5);title('对I1 5×5中值滤波');I6=medfilt2(I2,[5 5]);subplot(3,3,7);imshow(I6);title('对I2 5×5中值滤波');3.运行图像处理程序,并保存处理结果图像。
《数字图像处理》实验教案一、实验目的与要求1. 实验目的(1)理解数字图像处理的基本概念和原理;(2)掌握常用数字图像处理算法和技巧;(3)培养实际操作能力和动手能力,提高解决实际问题的能力。
2. 实验要求(1)熟悉实验环境和相关软件;(2)了解实验原理和流程;二、实验环境与工具1. 实验环境(1)计算机操作系统:Windows 10/Linux/macOS;(2)编程语言:MATLAB/Python/C++等;(3)图像处理软件:Photoshop/OpenCV等。
2. 实验工具(1)编程环境:MATLAB/Python/C++开发工具;(2)图像处理软件:Photoshop/OpenCV;(3)实验教材和参考资料。
三、实验内容与步骤1. 实验一:图像读取与显示(1)打开图像处理软件,导入一幅图像;(2)了解图像的基本信息,如像素大小、分辨率等;(3)将图像显示在界面上,进行观察和分析。
2. 实验二:图像基本运算(1)对图像进行灰度化处理;(2)进行图像的直方图均衡化;(3)实现图像的滤波处理,如高斯滤波、中值滤波等。
3. 实验三:边缘检测(1)实现Sobel边缘检测算法;(2)实现Canny边缘检测算法;(3)分析不同边缘检测算法的效果和特点。
4. 实验四:图像分割(1)利用阈值分割法对图像进行分割;(2)利用区域生长法对图像进行分割;(3)分析不同图像分割算法的效果和特点。
5. 实验五:特征提取与匹配(1)提取图像的关键点,如角点、边缘点等;(2)利用特征匹配算法,如SIFT、SURF等,进行图像配准;(3)分析不同特征提取与匹配算法的效果和特点。
四、实验注意事项1. 严格遵循实验要求和步骤,确保实验的正确性;2. 注意实验环境和工具的使用,防止计算机和设备的损坏;3. 尊重知识产权,不得抄袭和剽窃他人成果;4. 实验过程中遇到问题,应及时请教老师和同学。
五、实验报告要求1. 报告内容:实验目的、实验环境、实验内容、实验步骤、实验结果及分析;2. 报告格式:文字描述清晰,条理分明,公式和图像正确无误;3. 报告篇幅:不少于2000字;4. 提交时间:实验结束后一周内。
实验三图像分割实验一.实验目的1. 掌握基本的图像分割方法2.观察图像分割的效果3.加深对边缘提取的理解二.实验原理1.边缘检测:图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。
图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位。
2.灰度阈值分割即是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中各个像素的灰度值与这个阈值相比较:划分成像素灰度大于阈值的一类和小于阈值的一类。
3. 双峰法的原理及其简单:它认为图像由前景和背景组成,在灰度直方图上,前后二景都形成高峰,在双峰之间的最低谷处就是图像的阈值所在三.实验内容1.实验步骤1.打开matlab编程环境;2.利用“imread”函数导入图像数据;3.利用“imshow”显示所读入的图像数据;4.进行图像分割处理;5.记录和整理实验报告;2. 按下面要求编写程序并运行结果1. 用sobel方法对一幅灰度图像进行边缘提I=imread('cameraman.bmp');R=double(I(:,:,1));G=double(I(:,:,2));B=double(I(:,:,3));[rows,cols]=size(R);I=0.299*R+0.587*G+0.114*B;[H,W]=size(I);M=double(I);J=M;for i=2:H-1for j=2:W-1J(i,j)=abs(M(i-1,j+1)-M(i-1,j-1)+2*M(i,j+1)-2*M(i,j-1)+M(i+1,j+1)-M(i+1,j-1))+abs(M(i-1,j-1)-M(i+1,j-1)+2*M(i-1,j)-2*M(i+1,j)+M(i-1,j+1)-M(i+1,j+1));end;end;for i=2:H-1for j=2:W-1if J(i,j)>254J(i,j)=255;elseJ(i,j)=0;endendendsubplot(1,2,1);imshow(uint8(I));title('原图');subplot(1,2,2);imshow(uint8(J));title('Sobel 处理后');2.用 Laplacian-Gaussian方法对一幅灰度图像进行边缘提取I = imread('cameraman.bmp');R=double(I(:,:,1));G=double(I(:,:,2));B=double(I(:,:,3));[rows,cols]=size(R);I=0.299*R+0.587*G+0.114*B;s=fftshift(fft2(I));[M,N]=size(s);n=2;d0=400;n1=floor(M/2);n2=floor(N/2);for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);h=1*exp(-1/2*(d^2/d0^2));s(i,j)=h*s(i,j);endends=ifftshift(s);s=uint8(real(ifft2(s))); subplot(1,2,1),imshow(s);title('GLPF滤波');s=double(s);[r,c]= size(s);R=zeros(r,c);core1=[-1 -1 -1;-1 8 -1;-1 -1 -1];core2=[0 -1 0;-1 4 -1;0 -1 0];for x=2:r-1for y=2:c-1Z=[s(x-1,y-1) s(x-1,y) s(x-1,y+1);s(x,y-1) s(x,y) s(x,y+1);s(x+1,y-1) s(x+1,y) s(x+1,y+1)];A=core1*Z;B=core2*Z;R(x,y)=max(abs(sum(sum(A))),abs(sum(sum(B))));endendfor x=2:r-1for y=2:c-1if R(x,y)>250R(x,y)=255;elseR(x,y)=0;endendendsubplot(1,2,2),imshow(uint8(R));title('拉普拉斯处理后 ');3. 利用双峰法对一幅灰度图像进行灰度分割处理I = imread('lena.bmp');I=double(I);sum_obj=0;obj_counter=0;sum_backgnd=0;backgnd_counter=0;[rows,cols]=size(I);cols_c=floor(cols/20);rows_c=floor(rows/20);corners=[I(1:rows_c,1:cols_c);I(1:rows_c,(end-cols_c+1):end);I((en d-rows_c+1):end,1:cols_c);I((end-rows_c+1):end,(end-cols_c+1):end) ];threshold=mean(mean(corners));while 1for i=1:rowsfor j=1:colsif(I(i,j)>threshold)sum_obj=sum_obj+I(i,j);obj_counter=obj_counter+1;elsesum_backgnd=sum_backgnd+I(i,j);backgnd_counter=backgnd_counter+1;endendendnew_threshold=((sum_backgnd/backgnd_counter)+(sum_obj/obj_counter))/2 ;if(abs(threshold-new_threshold)<=0.01)break;endthreshold=new_threshold;endfor i=1:rowsfor j=1:colsIf(I(i,j)<=threshold)I(i,j)=0;elseI(i,j)=255;endendendimshow(I);四.实验结果及分析1. sobel边缘提取placian-Gaussian方法边缘提取3.双峰法对一幅灰度图像进行灰度分割处理五.实验小结与体会1.本次实验以图像分割为主线,涉及边缘提取2. 通过实验结果的比较,对课堂上的理论有了直观的认识,也为更好的理解理论奠定了基础,培养了兴趣。
数字图像处理实验报告学院:班级:学号:时间:2012.11.29实验三:数字图像的空间域滤波——锐化滤波1.实验目的1.掌握图像滤波的基本定义及目的。
2.理解空间域滤波的基本原理及方法。
3.掌握进行图像的空域滤波的方法。
2.实验基本原理1.空间域增强空间域滤波是在图像空间中借助模板对图像进行领域操作,处理图像每一个像素的取值都是根据模板对输入像素相应领域内的像素值进行计算得到的。
空域滤波基本上是让图像在频域空间内某个范围的分量受到抑制,同时保证其他分量不变,从而改变输出图像的频率分布,达到增强图像的目的。
空域滤波一般分为线性滤波和非线性滤波两类。
线性滤波器的设计常基于对傅立叶变换的分析,非线性空域滤波器则一般直接对领域进行操作。
各种空域滤波器根据功能主要分为平滑滤波器和锐化滤波器。
平滑可用低通来实现,平滑的目的可分为两类:一类是模糊,目的是在提取较大的目标前去除太小的细节或将目标内的小肩端连接起来;另一类是消除噪声。
锐化可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。
结合这两种分类方法,可将空间滤波增强分为四类:线性平滑滤波器(低通)非线性平滑滤波器(低通)线性锐化滤波器(高通)非线性锐化滤波器(高通)空间滤波器都是基于模板卷积,其主要工作步骤是:1)将模板在图中移动,并将模板中心与图中某个像素位置重合;2)将模板上的系数与模板下对应的像素相乘;3)将所有乘积相加;4)将和(模板的输出响应)赋给图中对应模板中心位置的像素。
2.锐化滤波器图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,需要利用图像锐化技术,使图像的边缘变得清晰。
1)线性锐化滤波器线性高通滤波器是最常用的线性锐化滤波器。
这种滤波器的中心系数都是正的,而周围的系数都是负的,所有的系数之和为0。
对3×3 的模板来说,典型的系数取值为:[-1 -1 -1;-1 8 -1;-1 -1 -1]事实上这是拉普拉斯算子。
数字图像处理第二次实验注意提交实验报告的文件名格式(姓名+学号+实验报告二.doc)实验三灰度变换增强一、实验目的1.熟悉matlab图像处理工具箱及直方图函数的使用;2.了解灰度变换增强的Matlab实现方法3.掌握直方图灰度变换方法4.理解和掌握直方图原理和方法;二、实验内容1.线段上像素灰度分布读入灰度图像'',采用交互式操作,用improfile绘制一条线段的灰度值。
imshow(rgb2gray(imread('')))improfile读入RGB图像‘’,显示所选线段上红、绿、蓝颜色分量的分布imshow('')improfile2.直方图变换A)直方图显示在matlab环境中,程序首先读取图像'',然后调用直方图函数,设置相关参数,再输出处理后的图像。
I=imread(''); %读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题读入图像‘’,在一个窗口中显示灰度级n=64,128和256的图像直方图。
I=imread('');imshow(I)figure,imhist(I,64)figure,imhist(I,128)figure,imhist(I,256)B)直方图灰度调节利用函数imadjust调解图像灰度范围,观察变换后的图像及其直方图的变化。
I=imread('');imshow(I)figure,imhist(I)J=imadjust(I,[ ],[0 1]);figure,imhist(J)figure,imshow(J)I=imread(''); imshow(I)figure,imhist(I)J=imadjust(I,[0 ],[ 1]); figure,imhist(J) figure,imshow(J)C)直方图均衡化在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。
实验三图像的几何变换一.实验目的及要求掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。
二、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1. 图像缩放clear all, close allI = imread('cameraman.tif');Scale = 1.35; % 将图像放大1.35倍J1 = imresize(I, Scale, 'nearest'); %using the nearest neighbor interpolationJ2 = imresize(I, Scale, 'bilinear'); %using the bilinear interpolationimshow(I), title('Original Image');figure, imshow(J1), title('Resized Image-- using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image-- using the bilinear interpolation ');% 查看imresize使用帮助help imresizeCommand窗口显示如下:IMRESIZE Resize image.B = IMRESIZE(A, SCALE) returns an image that is SCALE times thesize of A, which is a grayscale, RGB, or binary image.B = IMRESIZE(A, [NUMROWS NUMCOLS]) resizes the image so that it hasthe specified number of rows and columns. Either NUMROWS or NUMCOLS may be NaN, in which case IMRESIZE computes the number of rows orcolumns automatically in order to preserve the image aspect ratio.[Y, NEWMAP] = IMRESIZE(X, MAP, SCALE) resizes an indexed image.[Y, NEWMAP] = IMRESIZE(X, MAP, [NUMROWS NUMCOLS]) resizes an indexed image.T o control the interpolation method used by IMRESIZE, add a METHODargument to any of the syntaxes above, like this:IMRESIZE(A, SCALE, METHOD)IMRESIZE(A, [NUMROWS NUMCOLS], METHOD),IMRESIZE(X, MAP, M, METHOD)IMRESIZE(X, MAP, [NUMROWS NUMCOLS], METHOD) METHOD can be a string naming a general interpolation method: 'nearest' - nearest-neighbor interpolation'bilinear' - bilinear interpolation'bicubic' - cubic interpolation; the default method METHOD can also be a string naming an interpolation kernel: 'box' - interpolation with a box-shaped kernel'triangle' - interpolation with a triangular kernel(equivalent to 'bilinear')'cubic' - interpolation with a cubic kernel(equivalent to 'bicubic')'lanczos2' - interpolation with a Lanczos-2 kernel'lanczos3' - interpolation with a Lanczos-3 kernelFinally, METHOD can be a two-element cell array of the form {f,w}, where f is the function handle for a custom interpolation kernel, andw is the custom kernel's width. f(x) must be zero outside the interval -w/2 <= x < w/2. Your function handle f may be called with a scalar or a vector input.You can achieve additional control over IMRESIZE by using parameter/value pairs following any of the syntaxes above. For example:B = IMRESIZE(A, SCALE, PARAM1, VALUE1, PARAM2, VALUE2, ...)Parameters include:'Antialiasing' - true or false; specifies whether to performantialiasing when shrinking an image. Thedefault value depends on the interpolationmethod you choose. For the 'nearest' method,the default is false; for all other methods,the default is true.'Colormap' - (only relevant for indexed images) 'original'or 'optimized'; if 'original', then theoutput newmap is the same as the input map.If it is 'optimized', then a new optimizedcolormap is created. The default value is'optimized'.'Dither' - (only for indexed images) true or false;specifies whether to perform colordithering. The default value is true.'Method' - As described above'OutputSize' - A two-element vector, [MROWS NCOLS],specifying the output size. One element maybe NaN, in which case the other value iscomputed automatically to preserve the aspectratio of the image.'Scale' - A scalar or two-element vector specifying theresize scale factors. If it is a scalar, thesame scale factor is applied to eachdimension. If it is a vector, it containsthe scale factors for the row and columndimensions, respectively.Examples--------Shrink by factor of two using the defaults of bicubic interpolation and antialiasing.I = imread('rice.png');J = imresize(I, 0.5);figure, imshow(I), figure, imshow(J)Shrink by factor of two using nearest-neighbor interpolation. (This is the fastest method, but it has the lowest quality.)J2 = imresize(I, 0.5, 'nearest');Resize an indexed image.[X, map] = imread('trees.tif');[Y, newmap] = imresize(X, map, 0.5);imshow(Y, newmap)Resize an RGB image to have 64 rows. The number of columns is computed automatically.RGB = imread('peppers.png');RGB2 = imresize(RGB, [64 NaN]);Note----The function IMRESIZE in previous versions of the Image ProcessingT oolbox used a somewhat different algorithm by default. If you need the same results produced by the previous implementation, call the function IMRESIZE_OLD.Class Support-------------The input image A can be numeric or logical and it must be nonsparse. The output image is of the same class as the input image. The inputindexed image X can be uint8, uint16, or double.See also imresize_old, imrotate, imtransform, tformarray.Reference page in Help browserdoc imresize执行程序所得结果如下:改变参数Scale =0.5得到图形结果如下:对以上实验结果,分析如下:通过查看命令窗口查看imresize函数的使用方法。
数字图像处理实验报告
学院:电子信息与自动化
专业:电子信息工程
班级:120224
实验人:张文君(12022419)
同组人:姚朱晨(12022417)
实验三: 数字图像的频域增强:低通滤波
一.实验目的
1. 掌握图像滤波的基本定义及目的。
2. 理解频域滤波的基本原理及方法。
3. 掌握进行图像的低通滤波的方法。
二.实验基本原理
频域增强是利用图像变换方法将原来的图像空间中的图像以某种形式转换到其他空间中,然后利用该空间的特有性质方便地进行图像处理,最后再转换回原来的图像空间中,从而得到处理后的图像。
频域增强的主要步骤是:
1.选择变换方法,将输入图像变换到频域空间。
2.在频域空间中,根据处理目的设计一个转移函数,并进行处理。
3.将所得结果用反变换得到增强的图像。
常用的频域增强方法有低通滤波和高通滤波。
低通滤波
图像的能量大部分集中在幅度谱的低频和中频部分,而图像的边缘和噪声对应于高频部分。
因此能降低高频成分幅度的滤波器就能减弱噪声的影响。
由卷积定理,在频域实现低通滤波的数学表达式:
G (u ,v ) =H (u ,v )F (u ,v )
1) 理想低通滤波器(ILPF )
{
0),u (0
),(10)v ,u (≤>=
v D v u D H
2) 巴特沃斯低通滤波器(BLPF )
n
D v u D v u H 20),()12(11
),(⎥⎦⎤
⎢
⎣⎡-+=
3)指数型低通滤波器(ELPF )
2
0),(),(n D v u D e
v u H ⎥
⎦⎤⎢⎣⎡-=
三.实验内容与要求
平滑频域滤波
1) 设计理想低通滤波器、巴特沃斯低通滤波器和指数型低通滤波器,截止频率自选。
2) 读出cameraman.tif 这幅图像,加入椒盐躁声,分别采用理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器对其进行滤波(截止频率自选),再做反变换得到低通滤波后的空域图像。
四.实验程序
I=imread('cameraman.tif');%读入图像
figure;
subplot(2,3,1),imshow(I);
title('原图');
I=imnoise(I,'salt & pepper',0.02); %加入椒盐躁声
subplot(2,3,2),imshow(I);
title('加入椒盐躁声图');
f=double(I); % 由于MATLAB 不支持unsigned int 型图像计算,故将图像数据变为double 型
g=fft2(f); % 傅里叶变换
g=fftshift(g); % 将傅里叶变化零频率搬移到频谱中间
[M,N]=size(g); % 确定图像大小,M 为行数,N 为列数
D0=100; %截止频率
m=fix(M/2); n=fix(N/2);% 确定傅里叶变化原点(即直流部分),并且数据向0 取整result=zeros(M,N);
for i=1:1:M
for j=1:1:N
d=sqrt((i-m)^2+(j-n)^2);%计算D(u,v)
if(d<=D0)
h=1;%如果D(u,v)<=D0, H(u,v)=1
else
h=0;%如果D(u,v)>D0, H(u,v)=0
end
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);% 傅里叶逆移频,由于之前做过fftshift
J1=ifft2(result);% 傅里叶反变换
J2=uint8(real(J1));%提取J1 的实部,并将该数据定义为8 位无符号整数
subplot(2,3,3),imshow(J2) ;
title('理想低通滤波图');
n=2;%二阶
D0=150; %截止频率
m=fix(M/2); n=fix(N/2);% 确定傅里叶变化原点(即直流部分),并且数据向0 取整result=zeros(M,N);
for i=1:1:M
for j=1:1:N
d=sqrt((i-m)^2+(j-n)^2);%计算D(u,v)
h=1/(1+0.414*(d/D0)^(2*n));
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);% 傅里叶逆移频,由于之前做过fftshift
J1=ifft2(result);% 傅里叶反变换
J2=uint8(real(J1));%提取J1 的实部,并将该数据定义为8 位无符号整数
subplot(2,3,4),imshow(J2) ;
title('巴特沃斯低通滤波图');
D0=150; %截止频率
m=fix(M/2); n=fix(N/2);% 确定傅里叶变化原点(即直流部分),并且数据向0 取整result=zeros(M,N);
for i=1:1:M
for j=1:1:N
d=sqrt((i-m)^2+(j-n)^2);%计算D(u,v)
h=2.718^(-((d/D0)^(2*n))/1.414);
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);% 傅里叶逆移频,由于之前做过fftshift
J1=ifft2(result);% 傅里叶反变换
J2=uint8(real(J1));%提取J1 的实部,并将该数据定义为8 位无符号整数
subplot(2,3,5),imshow(J2) ;
title('指数型低通滤波图');
五.实验结果
原图加入椒盐躁声图理想低通滤波图
巴特沃斯低通滤波图指数型低通滤波图
六.分析三种低通滤波器的效果、区别
理想低通滤波器,虽然有陡峭的截止频率,却不能产生良好的效果,图像由于高频分量的滤波而变得模糊,同时还产生振铃效应;巴特沃斯滤波器通频带内的频率响应曲线最大限度平坦,没有起伏,而阻频带则逐渐下降为零。
在振幅的对数角频率的Bode图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减小,趋于负无穷大。
由于转移特性曲线的尾部保留较多的高频,所以噪声的平滑效果不如理想低通滤波器;指数型低通滤波器具有较平滑的过滤带,经此平滑后的图像没有“振铃”现象,而与巴特沃斯相比,它具有更快的衰减特性,处理图像稍微模糊一些。