实验5 图像频域增强
- 格式:doc
- 大小:451.44 KB
- 文档页数:9
实验五 图像的频域增强一、实验目的1、了解图像滤波的基本定义及目的;2、了解频域滤波的基本原理及方法;3、掌握用MA TLAB 语言进行图像的频域滤波的方法。
二、实验原理1、低通滤波一般来说,图像的边缘和噪声都对应于傅立叶变换中的高频部分,所以能够 让低频信号畅通无阻而同时滤掉高频分量的低通滤波器能够平滑图像,去除噪声.常用的几种有,理想的低通滤波器,巴特沃斯低通滤波器,指数滤波器等.传递函数形式如下所示.理想的低通滤波器:001(,)(,)0(,)D u v D H u v D u v D ≤⎧=⎨>⎩巴特沃斯低通滤波器201(,)1[(,)/]n H u v D u v D =+ 指数滤波器 0[(,)/](,)n D u v D H u v e -=(,)D u v 表示(,)u v 到原点的距离,0D 表示截止频率点到原点的距离。
傅立叶变换的主要能量集中在频谱的中心,合理的选择截止频率对保留图象的能量至关重要。
理想的低通滤波后的图象将会出现一种“振铃”特性,造成图象不同程度的模糊,0D 越小,模糊的程度越明显。
造成这种模糊的原因在于理想的低通滤波器的传递函数在0D 处有1突变为0,经傅立叶反变换后在空域中表现为同心圆的形式。
2、高通滤波与图像中灰度发生骤变的部分与其频谱的高频分量相对应,所以采用高通滤波器衰减或抑制低频分量,是高频分量畅通并对图象进行锐化处理。
常用的高通滤波器有理想的高通滤波器、巴特沃斯高滤波器,指数高通滤波等。
传递函数如下。
理的高通滤波器:001(,)(,)0(,)D u v D H u v D u v D ≥⎧=⎨<⎩巴特沃斯低通滤波器201(,)1[/(,)]nH u v D D u v =+指数滤波器0[/(,)](,)nD D u v H u v e -=由于经过高通滤波后图像丢失了许多低频信息,所以图像平滑区基本会消失。
为此,需要采用高频加强滤波来弥补。
实验五图像频域变换一、实验目的1.了解傅里叶变换在图像处理中的应用2.利用Matlab语言编程实现图像的频域变换。
二、实验内容1. 打开并显示一幅图像,对其进行Fourier变换,观察其频谱图像。
2. 用两种方法将图像的频域中心移动到图像中心,然后观察其Fourier变换后的频谱图像。
(见Fourier变换的性质:f(x,y) (-1)x+y F(u-N/2,v-N/2))对图像的Fourier变换频谱进行滤波,如:将频谱超过某个给定的值(均值或2/3均值)的变换值变为0,然后再求其Fourier逆变换,比较所得图像与原图像的差别。
3.对图像进行离散余弦变换,并观察其变换域图像。
要求:用Matlab语言进行编程实现上述功能,同时也应该熟悉用Matlab中现有的函数来实现。
傅里叶变换A)傅里叶变换基本操作I = imread(你的图像);imshow(I);title('源图像');J = fft2(I);figure, imshow(J);title('傅里叶变换');%频移JSh = fftshift(J);figure, imshow(JSh);title('傅里叶变换频移');%直接傅里叶反变换Ji = ifft2(J);figure, imshow(Ji/256);title('直接傅里叶反变换');%幅度JA = abs(J);iJA = ifft2(JA);figure, imshow(iJA/256);title('幅度傅里叶反变换');%相位JP = angle(J);iJP = ifft2(JP);figure, imshow(abs(iJP)*100);title('相位傅里叶反变换');B)利用MATLAB软件实现数字图像傅里叶变换的程序I=imread(‘原图像名.gif’); %读入原图像文件imshow(I); %显示原图像fftI=fft2(I); %二维离散傅里叶变换sfftI=fftshift(fftI); %直流分量移到频谱中心RR=real(sfftI); %取傅里叶变换的实部II=imag(sfftI); %取傅里叶变换的虚部A=sqrt(RR.^2+II.^2);%计算频谱幅值A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;%归一化figure; %设定窗口imshow(A); %显示原图像的频谱C)绘制一个二值图像矩阵,并将其傅里叶函数可视化。
实验五图像增强实验五图像增强⼀、实验⽬的1.了解灰度变换增强和空域滤波增强的Matlab实现⽅法2.掌握直⽅图灰度变换⽅法3.掌握噪声模拟和图像滤波函数的使⽤⽅法4.了解图像复原的Matlab实现⽅法⼆、实验步骤1、打开MATLAB软件,设置⼯作路径,新建M⽂件。
2、将图⽚放到当前⼯作路径下3、写⼊图像增强(包括灰度变换增强、空域滤波增强)程序保存并调试运⾏。
程序具体要求:1)灰度变换增强A)线段上像素灰度分布B)直⽅图变换(直⽅图显⽰、直⽅图灰度调节、直⽅图均衡化)2)空域滤波增强A)噪声模拟B)空域滤波空域滤波对上述噪声图像进⾏均值滤波和中值滤波,⽐较滤波效果。
总结均值滤波和中值滤波的特点及使⽤场合。
*对图像'saturn.tif'采⽤'laplacian'⾼通滤波器进⾏锐化滤波。
4、保存实验结果并完善实验报告。
三、实验程序1.灰度变换增强A)线段上像素灰度分布读⼊灰度图像‘cameraman.tif’,采⽤交互式操作,⽤improfile绘制⼀条线段的灰度值。
imshow('cameraman.tif')improfile读⼊RGB图像‘trees.tif’,显⽰所选线段上红、绿、蓝颜⾊分量的分布imshow('trees.tif')i mprofileB)直⽅图变换直⽅图显⽰读⼊图像‘trees.tif’,在⼀个窗⼝中显⽰灰度级n=64,128和256的图像直⽅图。
I=imread('trees.tif');imshow(I)figure,imhist(I,64)figure,imhist(I,128)figure,imhist(I,256)直⽅图灰度调节利⽤函数imadjust调解图像灰度范围,观察变换后的图像及其直⽅图的变化。
I=imread('trees.tif');imshow(I)figure,imhist(I)J=imadjust(I,[0.15 0.9],[0 1]);figure,imhist(J)figure,imshow(J)I=imread('cameraman.tif');imshow(I)figure,imhist(I)J=imadjust(I,[0 0.2],[0.5 1]);figure,imhist(J)figure,imshow(J)直⽅图均衡化分别对图像‘pout.tif’和‘tire.tif’进⾏直⽅图均衡化处理,⽐较处理前后图像及直⽅图分布的变化。
遥感图象的频率增强与多光谱增强一、实验目的:学习并掌握遥感图象频率域增强的原理与方法,理解频率域增强的意义。
学习和掌握主成分变换,缨帽变换和色彩变换的基本原理与方法,理解三种变换方法处理的效果及意义二、实验内容:频率域平滑频率域锐化主成分变换缨帽变换色彩变换三、实验原理与方法:频率域增强的方法的基本过程:将空间域图象通过傅立叶变换为频率域图象,然后选择合适的滤波器频谱成分进行增强,再经过傅立叶逆变换变回空间域,得到增强后的图象。
K-L变换是离散(Karhunen-Loeve)变换的简称,又被称作主成分变换。
它是对某一多光谱图像X,利用K-L变换矩阵A进行线性组合,而产生一组新的多光谱图像Y,表达式为Y=AX对图像中每一个像元矢量逐个乘以矩阵A,便得到新图像中每一个像元矢量。
A的作用是给多波段的像元亮度加权系数,实现线性变换。
由于变换前各波段之间有很强的相关性,经过K-L变换组合,输出图像Y的各分量yi之间将具有最小的相关性,这就是变换矩阵A 的作用K-T变换是Kauth-Thomas变换的简称,也称缨帽变换。
这种变换也是一种线性组合变换,其变换公式为:Y=BX彩色变换实际上就是根据人眼对色彩的分辨力远远大于对灰度的分辨力,将RGB色彩系统和IHS色彩系统相互转化来提高图像被人眼感知的效果四、实验步骤:(省略)实验原图:傅立叶变换图Butterworth滤波器处理Butterworth 高通滤波器Butterworth 低通滤波器Ideal滤波器Ideal 低通滤波器Ideal 高通滤波器Ideal 低通滤波器处理Ideal 高通滤波器处理Butterworth 高通滤波器处理Butterworth低通滤波器处理实验原图主成分正变换后图像实验原主成分处理后再经逆变换处理后图像实验原图缨帽变换后图像原RGB图像HIS图像五、结果分析和讨论:1.比较滤波处理前后的图像,分析低通滤波和高通滤波处理的效果1)经过高通滤波器处理后的图像,图像被锐化,边缘出现抖动现象,2)经过低通滤波处理后的图像,可以有效的消除噪声,由于高频部分含有大量边缘信息,导致边缘损失,图像边缘模糊。
图像频域增强方法研究一、设计目的1.掌握图像频域增强的概念及其计算方法。
2.熟练掌握傅立叶变换和卷积的计算过程。
3.熟练掌握频域滤波中常用的Butterworth低通滤波器。
4.利用MATLAB程序进行图像增强。
二、设计要求1.熟练掌握MATLAB的运行环境,并能熟练应用。
2.掌握并理解MATLAB的各种编程方式及函数定义。
3.加深对数字图像处理的研究。
三、设计方案1.图像频域增强原理图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。
其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。
图像增强的方法分为空域法和频域法两类,空域法主要是对图像中的各个像素点进行操作;而频域法是在图像的某个变换域内,对图像进行操作,修改变换后的系数,例如傅立叶变换、DCT变换等的系数,然后再进行反变换得到处理后的图像。
卷积理论是频域技术的基础。
设函数f(x,y)与线性位不变算子h(x,y)的卷积结果是g(x,y),即g(x,y)=h(x,y)*f(x,y),那么根据卷积定理在频域有:G(u,v)=H(u,v)F(u,v) (1)其中G(u,v),H(u,v),F(u,v)分别是g(x,y),h(x,y),f(x,y)的傅立叶变换。
用线性系统理论的话来说,H(u,v)是转移函数。
在具体的增强应用中,f(x,y)是给定的(所以F(u,v)可利用变换得到),需要确定的是H(u,v),这样具有所需特性的g(x,y)就可由式(1)算出G(u,v)而得到:g(x,y)=F-1[H(u,v)F(u,v)] (2)2.MATLAB简介它的名称源自Matrix Laboratory ,它是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB 产品的开放式结构,可以非常容易地对MATLAB 的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB 产品以提高产品自身的竞争能力。
试验5 图像频域增强一.试验目的通过本实验使学生掌握使用MATLAB的二维傅里叶变换进行频域增强的方法。
二.试验内容(一)dftuv函数:function [U,V]=dftuv(M,N)u=0:(M-1);v=0:(N-1);idx=find(u>M/2);u(idx)=u(idx)-M;idy=find(v>N/2);u(idy)=v(idy)-N;[V,U]=meshgrid(v,u);低通滤波器函数:function [H,D]=lpfilter(type,M,N,D0,n)[U,V]=dftuv(M,N);D=sqrt(U.^2+V.^2);switch typecase'ideal'H=double(D<=D0);case'btw'if nargin==4n=1;endH=1./(1+(D./D0).^(2*n));case'gaussian'H=exp(-(D.^2)./(2*(D0^2)));otherwiseerror('Unknown filter type')end教材程序:%====================¶ÁÈëÔ-ͼÏñ====================================== lena=imread('d:\test_images\lena_gray_1.tif','tif');figure(1);subplot(1,2,1);imshow(lena);title('origin');size(lena);%===ÁãÑÓÍØ===lena_B=padarray(lena,[512,512],'post');%0 padd fp 2subplot(1,2,2);imshow(lena_B);title('lena_B');%====°áÒÆ====for i=1:1024for j=1:1024lena_B_2(i,j)=(-1).^(i+j).*lena_B(i,j);endendfigure(2);subplot(1,2,1);imshow(lena_B_2);title('banyi');S=abs(fft2(lena_B));%δ°áÒÆµÄƵÆ×Fc_lena=fftshift(fft2(lena_B));subplot(1,2,2);imshow(abs(Fc_lena),[]);title('Spectum lena');%4[H1,D1]=lpfilter('gaussian',1024,1024,50,1);F=fft2(lena_B,size(H1,1),size(H1,2));G=real(ifft2(H1.*F));Gf=G(1:size(lena_B,1),1:size(lena_B,2));figure(3);subplot(1,2,1);imshow(uint8(Gf));title('δ²Ã¼ôµÄͼÏñ'); Gf1=G(1:size(lena,1),1:size(lena,2));subplot(1,2,2);imshow(uint8(Gf1));;title('»Ö¸´µÄͼÏñ');origin lenaBbanyi Spectum lena未裁剪的图像恢复的图像(二)频域低通滤波器(白条)f1=zeros(64,64);f1(12:52,24:40)=255;subplot(1,3,1);imshow(f1);title('origin');F1=padarray(f1,[64,64],'post');%==理想滤波器=======H=lpfilter('ideal',128,128,60);F=fft2(F1,size(H,1),size(H,2));G=real(ifft2(H.*F));GF=G(1:size(f1,1),1:size(f1,2));subplot(1,3,2);imshow(GF);title('ideallp');%==巴特沃斯滤波器===========[H1,D1]=lpfilter('btw',128,128,70);F1=fft2(F1,size(H1,1),size(H1,2));G1=real(ifft2(H1.*F1));GF1=G1(1:size(f1,1),1:size(f1,2));subplot(1,3,3);imshow(GF1);title('btwlp');origin ideallp btwlp频域低通滤波器(lena)lena_gray=imread('lena_gray.tif','tif');lena_gauss=imnoise(lena_gray,'gauss',0.03);subplot(1,3,1);imshow(lena_gauss);title('origin');LENA=padarray(lena_gauss,[512,512],'post');%==理想滤波器=========H=lpfilter('ideal',1024,1024,80);F=fft2(LENA,size(H,1),size(H,2));G=real(ifft2(H.*F));GF=G(1:size(lena_gauss,1),1:size(lena_gauss,2));subplot(1,3,2);imshow(uint8(GF));title('ideallp');%==巴特沃斯滤波器=======H1=lpfilter('btw',1024,1024,100);F1=fft2(LENA,size(H1,1),size(H1,2));G1=real(ifft2(H1.*F1));GF1=G1(1:size(lena_gauss,1),1:size(lena_gauss,2));subplot(1,3,3);imshow(uint8(GF1));title('btwlp');origin ideallp btwlp(3)低通滤波器函数:function [H,D]=hpfilter(type,M,N,D0,n)[U,V]=dftuv(M,N);D=sqrt(U.^2+V.^2);switch typecase'ideal'H=double(D>=D0);case'btw'if nargin==4n=1;endH=1-1./(1+(D./D0).^(2*n));case'gaussian'H=1-exp(-(D.^2)./(2*(D0^2)));otherwiseerror('Unknow filter type')end频域低通滤波器(白条)f1=zeros(64,64);f1(12:52,24:40)=255;subplot(1,3,1);imshow(f1);title('origin');F1=padarray(f1,[64,64],'post');%==理想滤波器=========H=hpfilter('ideal',128,128,50);F=fft2(F1,size(H,1),size(H,2));G=real(ifft2(H.*F));GF=G(1:size(f1,1),1:size(f1,2));subplot(1,3,2);imshow(GF);title('ideallp'); %==巴特沃斯滤波器=============[H0,D]=hpfilter('btw',128,128,50);F0=fft2(F1,size(H0,1),size(H0,2));G0=real(ifft2(H0.*F0));GF0=G0(1:size(f1,1),1:size(f1,2));subplot(1,3,3);imshow(GF0);title('btwlp');origin ideallp btwlp频域低通滤波器(lena)lena_gray=imread('lena_gray.tif','tif');lena_gauss=imnoise(lena_gray,'gauss',0.02);subplot(1,3,1);imshow(lena_gauss);title('origin');LENA=padarray(lena_gauss,[512,512],'post');%==H=hpfilter('ideal',1024,1024,150);F=fft2(LENA,size(H,1),size(H,2));G=real(ifft2(H.*F));GF=G(1:size(lena_gauss,1),1:size(lena_gauss,2));subplot(1,3,2);imshow(uint8(GF));title('ideallp');%==H0=hpfilter('btw',1024,1024,50);F0=fft2(LENA,size(H0,1),size(H0,2));G0=real(ifft2(H0.*F0));GF0=G0(1:size(lena_gauss,1),1:size(lena_gauss,2));subplot(1,3,3);imshow(uint8(GF0));title('btwlp');origin ideallp btwlp三.思考理想低通滤波器会产生振铃现象,巴特沃斯不会,但高阶的滤波器会产生振铃;低通滤波器会保留大部分信息,即低频成分,而高通滤波器会滤掉低频成分,剩下图像的大体形状。
实验5 图像频域增强一、实验目的通过本实验使学生掌握使用MATLAB的二维傅里叶变换进行频域增强的方法。
二、实验原理本实验是基于数字图像处理课程中的图像频域增强理论来设计的。
本实验的准备知识:第四章频域图像增强中的一维傅里叶变换和二维傅里叶变换,频域图像增强的步骤,频域滤波器。
根据教材285页到320页的内容,开展本实验。
可能用到的函数:1、延拓函数padarray例:A=[1,2;3,4];B=padarray(A,[2,3],’post’);则结果为B =1 2 0 0 03 4 0 0 00 0 0 0 00 0 0 0 0使用该函数实现图像的0延拓。
Padarray还有其它用法,请用help查询。
2、低通滤波器生成函数首先编写dftuv函数,如下function [U,V]=dftuv(M,N)%DFTUV Computes meshgrid frequency matrices.% [U,V]=DFTUV(M,N] computes meshgrid frequency matrices U and V. Uand V are useful for computing frequency-domain filter functions thatcan be used with DFTFILT. U and V are both M-by-N.% Set up range of variables.u=0:(M-1);v=0:(N-1);% Compute the indices for use in meshgrid.idx=find(u>M/2);u(idx)=u(idx)-M;idy=find(v>N/2);v(idy)=v(idy)-N;%Compute the meshgrid arrays.[V,U]=meshgrid(v,u);然后编写低通滤波器函数function [H,D]=lpfilter(type,M,N,D0,n)% LPFILTER computers frequency domain lowpass filters.% H=lpfilter(TYPE,M,N,D0,n) creates the transfer function of a lowpassfilter, H, of the specified TYPE and size(M-by-N). To view the filter asan image or mesh plot, it should be centered using H=fftshift(H).% valid values for TYPE, D0, and n are:% 'ideal' Ideal lowpass filter with cutoff frequency D0. n need notbe supplied. D0 must be positive.% 'btw' Butterworth lowpass filter of ordern, and cutoff D0. Thedefault value for n is 1. D0 must be positive.% 'gaussian' Gaussian lowpass filter with cutoff (standard deviation)D0.n need not be supplied. D0 must be positive.%Use function dftuv to set up the meshgrid arrays needed for computingthe required distances.[U,V]=dftuv(M,N); %D=sqrt(U.^2+V.^2); % Compute the distances D(U,V)% Begin filter computations.switch typecase 'ideal'H=double(D<=D0);case 'btw'if nargin==4n=1;endH=1./(1+(D./D0).^(2*n));case 'gaussian'H=exp(-(D.^2)./(2*(D0^2)));otherwiseerror('Unknown filter type')end通过调用函数lpfilter可生成相应的滤波器掩膜矩阵。
5. 图像的频域增强及傅里叶变换傅立叶变换在图像处理中有非常非常的作用。
因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法,比如离散余弦变换,gabor与小波在图像处理中也有重要的分量。
印象中,傅立叶变换在图像处理以下几个话题都有重要作用:1.图像增强与图像去噪绝大部分噪音都是图像的高频分量,通过低通滤波器来滤除高频——噪声; 边缘也是图像的高频分量,可以通过添加高频分量来增强原始图像的边缘;2.图像分割之边缘检测提取图像高频分量3.图像特征提取:形状特征:傅里叶描述子纹理特征:直接通过傅里叶系数来计算纹理特征其他特征:将提取的特征值进行傅里叶变换来使特征具有平移、伸缩、旋转不变性4.图像压缩可以直接通过傅里叶系数来压缩数据;常用的离散余弦变换是傅立叶变换的实变换;傅立叶变换傅里叶变换是将时域信号分解为不同频率的正弦信号或余弦函数叠加之和。
连续情况下要求原始信号在一个周期内满足绝对可积条件。
离散情况下,傅里叶变换一定存在。
冈萨雷斯版<图像处理>里面的解释非常形象:一个恰当的比喻是将傅里叶变换比作一个玻璃棱镜。
棱镜是可以将光分解为不同颜色的物理仪器,每个成分的颜色由波长(或频率)来决定。
傅里叶变换可以看作是数学上的棱镜,将函数基于频率分解为不同的成分。
当我们考虑光时,讨论它的光谱或频率谱。
同样,傅立叶变换使我们能通过频率成分来分析一个函数。
傅立叶变换有很多优良的性质。
比如线性,对称性(可以用在计算信号的傅里叶变换里面);时移性:函数在时域中的时移,对应于其在频率域中附加产生的相移,而幅度频谱则保持不变;频移性:函数在时域中乘以,可以使整个频谱搬移w。
这个也叫调制定理,通讯里面信号的频分复用需要用到这个特性(将不同的信号调制到不同的频段上同时传输);卷积定理:时域卷积等于频域乘积;时域乘积等于频域卷积(附加一个系数)。
(图像处理里面这个是个重点)信号在频率域的表现在频域中,频率越大说明原始信号变化速度越快;频率越小说明原始信号越平缓。
计算机与信息工程学院验证性实验报告一、实验目的1.掌握怎样利用傅立叶变换进行频域滤波 2.掌握频域滤波的概念及方法 3.熟练掌握频域空间的各类滤波器 4.利用MATLAB 程序进行频域滤波二、实验原理及知识点频域滤波分为低通滤波和高通滤波两类,对应的滤波器分别为低通滤波器和高通滤波器。
频域低通过滤的基本思想:G (u,v )=F (u,v )H (u,v )F (u,v )是需要钝化图像的傅立叶变换形式,H (u,v )是选取的一个低通过滤器变换函数,G (u,v )是通过H (u,v )减少F (u,v )的高频部分来得到的结果,运用傅立叶逆变换得到钝化后的图像。
理想地通滤波器(ILPF)具有传递函数:01(,)(,)0(,)ifD u v D H u v ifD u v D ≤⎧=⎨>⎩其中,0D 为指定的非负数,(,)D u v 为(u,v )到滤波器的中心的距离。
0(,)D u v D =的点的轨迹为一个圆。
n 阶巴特沃兹低通滤波器(BLPF)(在距离原点0D 处出现截至频率)的传递函数为201(,)1[(,)]nH u v D u v D =+与理想地通滤波器不同的是,巴特沃兹率通滤波器的传递函数并不是在0D 处突然不连续。
高斯低通滤波器(GLPF)的传递函数为222),(),(σv u D ev u H =其中,σ为标准差。
相应的高通滤波器也包括:理想高通滤波器、n 阶巴特沃兹高通滤波器、高斯高通滤波器。
给定一个低通滤波器的传递函数(,)lp H u v ,通过使用如下的简单关系,可以获得相应高通滤波器的传递函数:1(,)hp lp H H u v =-利用MATLAB 实现频域滤波的程序f=imread('room.tif');F=fft2(f); %对图像进行傅立叶变换%对变换后图像进行队数变化,并对其坐标平移,使其中心化 S=fftshift(log(1+abs(F)));S=gscale(S); %将频谱图像标度在0-256的范围内 imshow(S) %显示频谱图像h=fspecial('sobel'); %产生空间‘sobel’模版 freqz2(h) %查看相应频域滤波器的图像 PQ=paddedsize(size(f)); %产生滤波时所需大小的矩阵 H=freqz2(h,PQ(1),PQ(2)); %产生频域中的‘sobel’滤波器H1=ifftshift(H); %重排数据序列,使得原点位于频率矩阵的左上角 imshow(abs(H),[]) %以图形形式显示滤波器 figure,imshow(abs(H1),[])gs=imfilter(double(f),h); %用模版h 进行空域滤波gf=dftfilt(f,H1); %用滤波器对图像进行频域滤波 figure,imshow(gs,[]) figure,imshow(gf,[])figure,imshow(abs(gs),[]) figure,imshow(abs(gf),[])f=imread('number.tif'); %读取图片PQ=paddedsize(size(f)); %产生滤波时所需大小的矩阵 D0=0.05*PQ(1); %设定高斯高通滤波器的阈值H=hpfilter('gaussian',PQ(1),PQ(2),D0); %产生高斯高通滤波器 g=dftfilt(f,H); %对图像进行滤波 figure,imshow(f) %显示原图像figure,imshow(g,[]) %显示滤波后图像三、实验步骤:1.调入并显示所需的图片;2.利用MATLAB 提供的低通滤波器实现图像信号的滤波运算,并与空间滤波进行比较。
基于matlab 软件的图像频率域增强实验一.实验内容:1 滤波器定义2 频率域的处理3 频率域处理的评价<一> 滤波器定义1 首先知道定义低通滤波器(1) 定义截止频率D0(2) 根据低通滤波的三个公式:A 理想低通滤波器的定义一个二维的理想低通滤波器(ILPF )的转换(传递)函数满足(是一个分段函数)B 一个截止频率在与原点距离为D 0的n 阶Butterworth 低通滤波器(BLPF )的转换函数:H(u,v) = 0.5, 当 D 0 = D(u,v)C 高斯滤波器 FFT图像 F(u,v)H(u,v) H(u,v)FFT -增强图⎩⎨⎧>≤=0),(0),(1),(D v u D D v uD v u H 其中:D 0 为截止频率 D(u,v)为距离函数 D(u,v)=(u 2+v 2)1/22 能够用定义的滤波器与频率图像计算1) 图像傅立叶变换F=fft2(I);F=fftshift(F);2) 图像与滤波器点击G(u,v)=F(u,v)H(u,v)3) 图像反傅立叶变换G=ifftshift(G);g=abs(ifft2(G));二.实验目的:利用matlab 软件对图像进行处理,要求利用傅里叶变换函数fft2进行对图像的傅里叶变换,利用频谱中心化函数fftshift 对图像进行频谱中心化操作,最后检查保存处理后的图像。
三.实验步骤:1.打开matlab 软件,读取目标图像2.利用函数fft2对图像进行傅里叶变换操作3.利用函数fftshift 对图像进行频谱中心化处理4.检查并保存处理后图像四.实验结果:1/222(,)22M N D u v u v ⎡⎤⎛⎫⎛⎫=-+-⎢⎥ ⎪ ⎪⎝⎭⎝⎭⎢⎥⎣⎦五.实验心得:通过本次实验,学习了matlab软件对图像进行频率域增强处理时的基本功能和函数指令操作,让我认识到matlab软件功能的强大,以及自己在研究软件处理图像时的不足,对傅里叶变换和频谱中心操作时函数指令的认识和理解不够透彻。
实验5 图像频域增强一、实验目的通过本实验使学生掌握使用MATLAB的二维傅里叶变换进行频域增强的方法。
二、实验原理本实验是基于数字图像处理课程中的图像频域增强理论来设计的。
本实验的准备知识:第四章频域图像增强中的一维傅里叶变换和二维傅里叶变换,频域图像增强的步骤,频域滤波器。
根据教材285页到320页的内容,开展本实验。
可能用到的函数:1、延拓函数 padarray例:A=[1,2;3,4];B=padarray(A,[2,3],’post’);则结果为B =1 2 0 0 03 4 0 0 00 0 0 0 00 0 0 0 0使用该函数实现图像的0延拓。
Padarray还有其它用法,请用help查询。
2、低通滤波器生成函数首先编写dftuv函数,如下function [U,V]=dftuv(M,N)%DFTUV Computes meshgrid frequency matrices.% [U,V]=DFTUV(M,N] computes meshgrid frequency matrices U and V. Uand V are useful for computing frequency-domain filter functions thatcan be used with DFTFILT. U and V are both M-by-N.% Set up range of variables.u=0:(M-1);v=0:(N-1);% Compute the indices for use in meshgrid.idx=find(u>M/2);u(idx)=u(idx)-M;idy=find(v>N/2);v(idy)=v(idy)-N;%Compute the meshgrid arrays.[V,U]=meshgrid(v,u);然后编写低通滤波器函数function [H,D]=lpfilter(type,M,N,D0,n)% LPFILTER computers frequency domain lowpass filters.% H=lpfilter(TYPE,M,N,D0,n) creates the transfer function of a lowpassfilter, H, of the specified TYPE and size(M-by-N). To view the filter as an image or mesh plot, it should be centered using H=fftshift(H).% valid values for TYPE, D0, and n are:% 'ideal' Ideal lowpass filter with cutoff frequency D0. n need not be supplied. D0 must be positive.% 'btw' Butterworth lowpass filter of ordern, and cutoff D0. The default value for n is 1. D0 must be positive.% 'gaussian' Gaussian lowpass filter with cutoff (standard deviation)D0.n need not be supplied. D0 must be positive.%Use function dftuv to set up the meshgrid arrays needed for computing the required distances.[U,V]=dftuv(M,N); %D=sqrt(U.^2+V.^2); % Compute the distances D(U,V)% Begin filter computations.switch typecase 'ideal'H=double(D<=D0);case 'btw'if nargin==4n=1;endH=1./(1+(D./D0).^(2*n));case 'gaussian'H=exp(-(D.^2)./(2*(D0^2)));otherwiseerror('Unknown filter type')end通过调用函数lpfilter可生成相应的滤波器掩膜矩阵。
参考该函数可相应的生成高通滤波器函数。
3、频域滤波F=fft2(f,size(H,1),size(H,2)); % 对延拓的 f 计算 FFT。
注意,这里隐含着对 f 的延拓。
G=real(ifft2(H.*F)); % 滤波Gf=G(1:size(f,1),1:size(f,2)); %裁剪后的图像三、实验内容(一)图像频域增强的步骤参考教材286页的Figure 4.36,重复该图像中的步骤,并将相应的结果显示出来。
(二)频域低通滤波产生实验四中的白条图像。
设计不同截止频率的理想低通滤波器、Butterworth低通滤波器,对其进行频域增强。
观察频域滤波效果,并解释之。
设计不同截止频率的理想低通滤波器、Butterworth低通滤波器,对含高斯噪声的lena 图像进行频域增强。
观察频域滤波效果,并解释之。
(三)频域高通滤波设计不同截止频率的理想高通滤波器、Butterworth高通滤波器,对上述白条图像进行频域增强。
观察频域滤波效果,并解释之。
设计不同截止频率的理想高通滤波器、Butterworth高通滤波器,对含高斯噪声的lena 图像进行频域增强。
观察频域滤波效果,并解释之。
四、实验步骤(二)频域低通滤波理想低通滤波器1. D0=5程序:A=zeros(64,64);A(32-20:32+20,32-8:32+8)=255;subplot(1,2,1)imshow(A);s=fftshift(fft2(A));[M,N]=size(s);n1=floor(M/2); %对M/2进行取整n2=floor(N/2);d0=5;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离h=1*exp(-1/2*(d^2/d0^2)); %GLPF滤波函数s(i,j)=h*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s);s=uint8(real(ifft2(s)));subplot(1,2,2); %创建图形图像对象imshow(s);运行结果:2.D0=50程序:A=zeros(64,64);A(32-20:32+20,32-8:32+8)=255;subplot(1,2,1)imshow(A);s=fftshift(fft2(A));[M,N]=size(s);n1=floor(M/2); %对M/2进行取整n2=floor(N/2);d0=50;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离h=1*exp(-1/2*(d^2/d0^2)); %GLPF滤波函数s(i,j)=h*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s);s=uint8(real(ifft2(s)));subplot(1,2,2); %创建图形图像对象imshow(s);运行结果:Butterworth 低通滤波器1.程序A=zeros(64,64);A(32-20:32+20,32-8:32+8)=255;subplot(1,2,1)imshow(A);s=fftshift(fft2(A));[M,N]=size(s);n1=floor(M/2); %对M/2进行取整n2=floor(N/2);d0=5;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离h=1/(1+0.414*(d/d0)^(2*n));s(i,j)=h*s(i,j); %GLPF滤波后的频域表示 endends=ifftshift(s);s=uint8(real(ifft2(s)));subplot(1,2,2); %创建图形图像对象imshow(s);运行结果:含高斯噪声的lena图像进行频域增强clear all;A=imread('D:\pic\lena.bmp')subplot(2,3,1),imshow(A,[]);title('原图') %把图像显示出来B=imnoise(A,'gauss',0.02)subplot(2,3,3),imshow(B,[]); %添加高斯噪声后的图像title('添加高斯噪声后的图像')f=double(B); %图像存储类型转换g=fft2(f); %傅立叶变换g=fftshift(g); %转换数据矩阵[N1,N2]=size(g); %测量图像尺寸参数n=2;d0=50;n1=fix(N1/2);n2=fix(N2/2);for i=1:N1for j=1:N2d=sqrt((i-n1)^+(j-n2)^2)c=double(d<=d0); %result(i,j)=c*g(i,j);endendresul=ifftshift(result); %傅立叶逆变换X2=ifft2(result);X3=uint8(real(X2));subplot(2,3,5)imshow(X3) %显示频域增强后的图像D0=20,butterworth 滤波器D0=50,低通滤波器D0=50,butterworth 滤波器title('D0=50,低通滤波器')运行结果:原图添加高斯噪声后的图像D0=20,低通滤波器(三)频域高通滤波理想高通滤波器 A=zeros(64,64);A(32-20:32+20,32-8:32+8)=255;subplot(1,2,1);imshow(A);s=fftshift(fft2(A));[M,N]=size(s);n1=floor(M/2);%对M/2进行取整n2=floor(N/2);d0=5;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离h=1-(1*exp(-1/2*(d^2/d0^2)));s(i,j)=h*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s);s=uint8(real(ifft2(s)));subplot(1,2,2); %创建图形图像对象imshow(s);Butterworth 高通滤波器A=zeros(64,64);A(32-20:32+20,32-8:32+8)=255;subplot(1,2,1);imshow(A);s=fftshift(fft2(A));[M,N]=size(s);n1=floor(M/2); %对M/2进行取整n2=floor(N/2);d0=5;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离h=1-(1/(1+0.414*(d/d0)^(2*n)));s(i,j)=h*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s);s=uint8(real(ifft2(s)));subplot(1,2,2); %创建图形图像对象imshow(s);对含高斯噪声的lena图像理想高通滤波器A1= imread('D:\pic\lena.bmp')A=imnoise(A1, 'gauss', 0.02);subplot(1,2,1);imshow(A);s=fftshift(fft2(A));[M,N]=size(s);n1=floor(M/2); %对M/2进行取整n2=floor(N/2);d0=5;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离h=1-(1*exp(-1/2*(d^2/d0^2)));s(i,j)=h*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s);s=uint8(real(ifft2(s)));subplot(1,2,2); %创建图形图像对象imshow(s);运行结果:Butterworth 高通滤波器A1= imread('D:\pic\lena.bmp')A=imnoise(A1, 'gauss', 0.02);subplot(1,2,1)imshow(A);s=fftshift(fft2(A));[M,N]=size(s);n1=floor(M/2); %对M/2进行取整n2=floor(N/2);d0=5;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离h=1-(1/(1+0.414*(d/d0)^(2*n)));s(i,j)=h*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s);s=uint8(real(ifft2(s)));subplot(1,2,2); %创建图形图像对象imshow(s);五、实验心得通过MATLAB软件实现了原理程序及仿真图像。