实验二 图像的频域变换
- 格式:pdf
- 大小:173.70 KB
- 文档页数:4
实验二、图像的频域处理一、实验类型:综合性实验二、实验目的1. 掌握二维傅里叶变换的原理。
2. 掌握二维傅里叶变换的性质。
三、实验设备:安装有MATLAB 软件的计算机四、实验原理傅里叶变换在图像增强、图像分析、图像恢复和图像压缩等方面扮演着重要的角色。
在计算机上使用傅里叶变换常常涉及到该变换的另一种形式——离散傅里叶变换(DFT )。
使用这种形式的傅里叶变换主要有以下两方面的理由:·DFT 的输入和输出都是离散的,这使得计算机处理更加方便;·求解DFT 问题有快速算法,即快速傅里叶变换(FFT )。
MATLAB 函数fft,fft2 和fftn 可以实现傅里叶变换算法,分别用来计算1 维DFT、2 维DFT 和n 维DFT。
函数ifft,ifft2 和ifftn 用来计算逆DFT。
下面结合一个例子进行演示。
五、实验内容部分一选择一幅图像,对其进行离散傅立叶变换,观察离散傅立叶频谱,并演示二维离散傅立叶变换的主要性质(如平移性、旋转性)。
六、实验步骤与结果(1)创建一个矩阵f,代表一个二值图像。
f=zeros(60,60); %创建一个60行,60列的零矩阵f(10:48,26:34)=1; %使矩阵f的10到48行,26到34列交叉部分置1 imshow(f,'InitialMagnification','fit')/imshow(f,'notruesize'); %显示得到二值图像f,如图所示:(2 )用以下命令计算f 的DFT 并可视化。
F=fft2(f); %对f图像进行傅立叶正变换F2=log(abs(F)); %对F变换得到傅立叶频谱,再用对数变换更好得显示图像imshow(F2,[-1,5],'InitialMagnification','fit'); %显示图像colormap(jet);colorbar %用彩色绘制网线,用彩条信号得到没有0 填充的离散傅里叶变换,如图所示:(3)为了获取傅里叶变换的更佳的取样数据,计算F 的DFT 时给它进行0 填充。
实验二 图像变换及频域滤波一.实验目的(1)编写快速傅里叶变换算法程序,验证二维傅里叶变换的平移性和旋转不变性;(2)实现图像频域滤波,加深对频域图像增强的理解。
二.实验环境及开发工具Windws XP 、MATALAB7.0三.实验原理及方法1.验证二维傅里叶变换的平移性和旋转不变性;a .要验证证其平移特性,就先建立一个二维图象,然后再对其平移,通过观察两者的频谱图来观察平移特性,为了方便起见,我们选择特殊情况来分析,令u0=v0=N/2,使),()1(),(12y x f y x f y x +-= F(u-N/2,v-N/2),达到将原始F(U,V)四周频谱移到中心的效果,及达到频谱中心化。
b .验证旋转不变性可以通过将原始数组的通过移动45度,然后再比较旋转后与旋转前的频谱,得出频谱旋转不变性的结论。
具体步骤:1)产生如图1所示图像),(1y x f (128×128大小,暗处=0,亮处=255)2)同屏显示原图1f 和)(FFT 1f 的幅度谱图。
3)若令),()1(),(12y x f y x f y x +-=,重复以上过程,比较二者幅度谱的异同。
4)将),(2y x f 顺时针旋转45度得到),(3y x f ,显示)(FFT 3f 的幅度谱,并与)(FFT 2f 的幅度谱进行比较。
2.实现图像频域滤波,加深对频域图像增强的理解。
频率域中进行增强是相当直观的,主要步骤有: 图1实验图象f 1(x , y )1)计算需要增强的图象的傅立叶变换;2)将其与一个(根据需要设计的)转移的函数相乘;3)再将结果反傅立叶变换以得到增强的图象.为了直观的展示频域增强,可以通过下面任务来展现:对如图2所示的数字图像lena.img (256×256大小、256级灰度)进行频域的理想低通、高通滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。
四.实验要求及分析1.验证二维傅里叶变换的平移性和旋转不变性1)建立一个二维数组并要求该数组能够显示成图1.a=zeros(128,128)for y=54:74for x=34:94a(x,y)=1;endend然后再用显示图象的函数显示即可, 在此我们用imshow(a)语句。
实验二图像变换
一、实验内容
1.对图像进行平移,掌握图像的傅里叶频谱和平移后的傅里叶频谱的对应关系;
2.对图像进行旋转,掌握图像的傅里叶频谱和旋转后的傅里叶频谱的对应关系。
2、实验原理
如果F(u,v)的频率变量u,v各移动了u0,v0距离,f(x,y)的变量x,y各移动了x0,y0距离,则傅里叶变换如下所示
因此傅里叶变换的平移性质表明函数与一个指数项相乘等于将变换后的空域中心移到新的位置,平移不改变频谱的幅值。
傅里叶旋转可以通过下面变换得到:
对f(x,y)旋转一个角度对应于将其傅里叶变换F(u,v)也旋转相同的角度。
3、实验方法和程序
1. 选取一副图像,进行离散傅里叶变换,将其中心移到零点,得到
其离散傅里叶变换。
参考例4.10
2. 选取一副图像,进行离散余弦变换,并对其进行离散余弦反变
换。
参考例4.13
3. 选取一副图像,采用butterworth高通滤波器对图像进行高通滤
波。
参考例5.7
4、实验结果与分析
Matlab代码以及结果图
5、思考题
1. 将图像分别进行X轴与Y轴上的平移,所得傅里叶频谱与原图像
的傅里叶频谱有什么变换?。
图像的频域变换处理1 实验目的 1. 掌握Fourier ,DCT 和Radon 变换与反变换的原理及算法实现,并初步理解Fourier 、Radon和DCT 变换的物理意义。
2、 利用傅里叶变换、离散余弦变换等处理图像,理解图像变换系数的特点。
3、 掌握图像的频谱分析方法。
4、 掌握图像频域压缩的方法。
5、 掌握二维数字滤波器处理图像的方法。
2 实验原理1、傅里叶变换 fft2函数:F=fft2(A);fftshift 函数:F1=fftshift(F);ifft2函数:M=ifft2(F);2、离散余弦变换:dct2函数 :F=dct2(f2);idct2函数:M=idct2(F);3、 小波变换对静态二维数字图像,可先对其进行若干次二维DWT 变换, 将图像信息分解为高频成分H 、V 和D 和低频成分A 。
对低频部分A ,由于它对压缩的结果影响很大,因此可采用无损编码方法, 如Huffman 、 DPCM 等;对H 、V 和D 部分,可对不同的层次采用不同策略的向量量化编码方法,这样便可大大减少数据量,而图像的解码过程刚好相反。
(1)dwt2[CA,CH,CV,CD]=dwt2(X,’wname’)[CA,CH,CV,CD]=dwt2(X,LO_D,HI_D’)()()⎰⎥⎦⎤⎢⎣⎡-ψ=dt a b t t Rf a 1b ,a W *()⎪⎭⎫ ⎝⎛-ψ=ψa b t a 1t b ,a 112()00(,)[(,)](,)ux vy M N j M N x y f x y eF f x y F u v π---+====∑∑1100(21)(21)(,)(,)()()cos cos 22M N x y x u y v F u v f x y C u C v M Nππ--==++=∑∑CA 图像分解的近似分量,CH 水平分量,CV 垂直分量,CD 细节分量; dwt2(X,’wname ’) 使用小波基wname 对X 进行小波分解。
实验五图像频域变换一、实验目的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.了解离散傅里叶变换的基本性质;2.熟练掌握图像傅里叶变换的方法及应用;3.通过实验了解二维频谱的分布特点;4.熟悉图像频域处理的意义和手段;5.通过本实验掌握利用MATLAB 的工具箱实现数字图像的频域处理。
二、 实验原理(一)傅立叶变换傅立叶变换是数字图像处理中应用最广的一种变换,其中图像增强、图像复原 和图像分析与描述等,每一类处理方法都要用到图像变换,尤其是图像的傅立 叶变换。
离散傅立叶(Fourier )变换的定义:二维离散傅立叶变换(DFT )为:逆变换为:式中,在DFT 变换对中, 称为离散信号 的频谱,而 称为幅度谱, 为相位角,功率谱为频谱的平方,它们之间的关系为:图像的傅立叶变换有快速算法。
(二)图像的频域增强常用的图像增强技术可分为基于空域和基于变换域的两类方法。
最常用的变换域是频域空间。
在频域空间,图像的信息表现为不同频率分量的组合。
如果能让某个范围内的分量或某些频率的分量受到抑制而让其他分量不受影响,就可以改变输出图像的频率分布,达到不同的增强目的。
频域增强的工作流程:频域空间的增强方法对应的三个步骤:(1) 将图像f(x,y)从图像空间转换到频域空间,得到F(u,v);(2) 在频域空间中通过不同的滤波函数H(u,v)对图像进行不同的增强,得到G(u,v)(注:不同的滤波器滤除的频率和保留的频率不同,因而可获得不同的增强效果);(3) 将增强后的图像再从频域空间转换到图像空间,得到图像g(x,y)。
),(v u F ),(v u G ),(y x f ∑∑-=-=+-=1010)(2exp ),(1),(M x N y N vy M ux j y x f MN v u F π∑∑-=-=+=101)(2exp ),(1),(M u N v N vy M ux j v u F MN y x f π}1,,1,0{,-∈M x u }1,,1,0{,-∈N y v ),(v u F ),(y x f ),(v u F ),(v u ϕ),(),()],(exp[),(),(v u jI v u R v u j v u F v u F +==ϕ1.低通滤波图像中的边缘和噪声都对应图像傅立叶变换中的高频部分,如要在频域中消弱其影响,设法减弱这部分频率的分量。
频域分析及图像的频域处理一.实验目的1.了解离散傅立叶变换及离散余弦变换的基本原理;2.掌握进行FFT 及逆变换的方法;3.了解图像在频域中处理方法,应用MATLAB 语言作简单的低通滤波器。
4.有能力的同学可用VC 实现傅立叶变换二.实验原理1.傅立叶变换的基本知识在图像处理的广泛应用领域中,傅立叶变换起着非常重要的作用,具体表现在包括图像分析、图像增强及图像压缩等方面。
假设f (x,y)是一个离散空间中的二维函数,则该函数的二维傅立叶变换的定义如下:)(21010),(),()],([N vy M ux j M x N y ey x f v u F y x f F +--=-=∑∑==π (2-1)离散傅立叶反变换的定义如下: )(210101),(1),()],([N vy M ux j N v M u e v u F MN y x f v u F F +-=-=-∑∑==π (2-2)式中,式中:u, x=0,1, 2, …, M -1;v, y=0, 1, 2, …, N -1;x, y 为时域变量,u, v像一维离散傅立叶变换一样,系数1/MN 可以在正变换或逆变换中,也可以在正变换和逆变换前分别乘以系数MN /1,只要两式系数的乘积等于1/MN 二维离散函数的傅立叶频谱、 相位谱和能量谱分别为 ),(),(|),(|22v u I v u R v u F += (2-3)),(),(arctan ),(v u R v u I v u =ϕ (2-4) ),(),(),(22v u I v u R v u E += (2-5) 式中,R (u , v )和I (u , v )分别是F (u , v )的实部和虚部。
2.离散余弦变换(Discrete Cosine Transform , DCT )离散余弦变换核为余弦函数。
DCT 除了具有一般的正交变换性质外, 它的变换阵的基向量能很好地描述人类语音信号和图像信号的相关特征。
实验报告4:图像的频域处理(1)对图像进行DFT:DFT后的输出:DFT所用代码:pic1=fft2(imread('lines.png'));pic2=fft2(imread('rice.tif'));pic11=fftshift(pic1);pic22=fftshift(pic2);Pic1=log(1+abs(pic11));Pic2=log(1+abs(pic22));subplot(1,2,1), imshow(Pic1,[]);title('lin.png');subplot(1,2,2), imshow(Pic2,[]);title('rice.tif');图片中并没有明显的水平和垂直内容,而DFT后却存在水平和垂直分量的原因:原图的边缘出现了明显的不连续,因此进行DFT后会出现强烈的水平和垂直方向分量。
解决方法为在图像中加入汉明窗算法,用来过滤掉图片中的高频部分,并使得图像边缘的不连续情况得到改善,因此加入汉明窗后处理的图像频谱中,水平分量和垂直分量得到了明显的减少。
改进后代码:img=imread('lines.png');img=im2double(img);[h,w]=size(img);window=hamming(h)*hamming(w)';IMG=img.*window;FIMG=fft2(IMG);subplot(1,2,1)imshow(IMG,[]); title('加窗后图像');subplot(1,2,2)imshow(log(1+abs(FIMG)),[]);title('加窗后的频谱图');改进后的频谱图:(2)选取一张灰度图片,并进行操作:原图:效果图:处理过程:A步骤中,函数先对原图像中的f(x,y)进行变换g(x,y)=(-1)^(x+y) x f(x,y),该步骤等同于傅里叶变换中的fftshift,将频域中带宽较低的部分及原点移动到了图像的中心位置。
实验二图像频域变换
一.实验目的
了解图像频域变换的意义和方法,熟悉离散傅立叶变换、离散余弦变换等变换的基本性质。
通过实验了解二维频谱的分布特点,掌握使用MATLAB 编程实现
数字图像变换的方法。
二.预习
1.预习实验内容,阅读教材熟悉实验原理;
2.查阅资料,熟悉MATLAB的操作环境和基本功能。
熟悉实验中涉及的有关函数。
三. 实验仪器及软件
计算机、MATLAB软件。
四.实验原理和内容
4.1. 图像的二维离散傅立叶变换
MATLAB 提供了fft 函数、fft2 函数和fftn 函数分别用于进行一维DFT、二维DFT 和n维DFT 的快速傅立叶变换, ifft 函数、ifft2 函数和ifftn 函数分别用于进行一维DFT、二维DFT和n 维DFT 的快速傅立叶反变换。
快速傅立叶变换的算法思想:
(1)首先将原图像进行转置;
(2)按行对转置后的图像矩阵做一维FFT,将变换后的中间矩阵再转置;
(3)对转置后的中间矩阵做一维FFT,最后得到的就是二维FFT。
相应函数:
1. fft2 函数
计算二维快速傅立叶变换,语法格式为:
B=fft2(I)
B=fft2(I,m,n), 通过对图像I 剪切或补零,按用户指定的点数计算fft。
2. fftn 函数
计算n维fft,语法格式同fft2
3. fftshift 函数
将变换后的图像频谱移到中心。
语法格式为:
B=fftshift(I)
4. ifft2 函数
计算二维傅立叶反变换,语法格式同fft2。
5. ifftn 函数
计算n维傅立叶反变换。
实验1. 对给定的一幅图像进行傅立叶变换,显示无平移的DFT 和原点移到中心的DFT。
%建立简单图像d并显示之
d = zeros(64,64); %图像大小64?64
d(26:41,26:41) =1; %中心白色方块大小为16x16
figure(1); %建立图形窗口1
imshow(d); %显示图像d如图3.5(a)所示
%计算傅里叶变换并显示之
D = fft2(d); %计算图像d的傅里叶变换,fft2(d) = fft(fft(d).').'
figure(2); %建立图形窗口2
imshow(abs(D),[]); %显示图像d的傅里叶变换谱
Dc = fftshift(D);
figure(3);
imshow(abs(Dc),[]); %中心后结果
figure(4);
imshow(log(1+ abs(Dc)), []) %增强后观察fft
%逆变换
iF =ifft2(D);
figure(6), imshow(real(iF),[])
读入一副复杂图像,如:d = imread('rose_512.tif'),显然其fft结果; 这里图像名可以是matlab自带的例图(..\toolbox\images 目录下的),也可以是其它灰度图像,如是彩色图像,用rgb2gray转为灰度图像。
实验2. 已知一个1000×1000 二值图像,中间为一个50×30 的白色区域,其它为黑色,研究图像的DFT 的平移和旋转特性。
%实现图像平移特性代码
f=zeros(1000,1000);
f(350:649,475:524)=1;
subplot(2,2,1);imshow(f,'notruesize'); %图像定义
title('原始图像');
F=fftshift(abs(fft2(f)));
subplot(2,2,2);imshow(F,[-1,5],'notruesize');
title('原始图像的傅里叶变换频谱');
f=zeros(1000,1000);
f(350:649,800:849)=1;
subplot(2,2,3);imshow(f,'notruesize');
title('X轴方向移到后的图像');
F=fftshift(abs(fft2(f)));
subplot(2,2,4);imshow(F,[-1,5],'notruesize');
title('X轴方向移动后的傅里叶变换频谱');
%实现图像旋转特性代码
f=zeros(1000,1000);
f(350:649,475:524)=1;
subplot(2,2,1);imshow(f,'notruesize'); %图像定义
title('原始图像');
F=fftshift(abs(fft2(f)));
subplot(2,2,2);imshow(F,[-1,5],'notruesize');
title('原始图像的傅里叶变换频谱');
f=zeros(1000,1000);
f(350:649,475:524)=1;
f=imrotate(f,45,'bilinear','crop'); %以图像中心为原点旋转45°
subplot(2,2,3);imshow(f,'notruesize');
title('图像正向旋转45°');
F=fftshift(abs(fft2(f)));
subplot(2,2,4);imshow(F,[-1,5],'notruesize');
title('图像旋转45°后的傅里叶变换频谱');
通过MATLAB程序研究图像二维DFT变换的平移特性和旋转特性。
4.2. 图像的二维离散余弦变换
离散余弦变换(DCT)的变换核为余弦函数,计算速度快,有利于图像压缩和其他处理。
在大多数情况下,DCT 主要用于图像的压缩操作中,静态图像压缩标准JPEG就是采用的DCT 变换。
MATLAB提供了dct2实现图像的DCT。
dct2方法是基于FFT算法来实现较大输入的快速计算方法。
MATLAB提供了idct2实现二维图像的逆余弦变换。
1. dct2 函数
实现图像的二维离散余弦变换,语法格式为:
B=dct2(A) 返回图像A 的二维离散余弦变换值,其大小与A相同,且各元素为离散余弦变换的系数F(k1,k2)。
B=dct2(A,m,n)
B=dct2(A,[m n])其功能是:在对图像A进行二维离散余弦变换之前,先将图像A补零至m×n。
如果m和n 比图像A小,则进行变换之前,将图像A剪切。
2. idct2 函数
实现图像的二维离散余弦变换的反变换,语法格式为:
B=idct2(A)
B=idct2(A,m,n)
B=idct2(A,[m n])
3. dctmtx 函数
该函数用于计算二维离散余弦变换矩阵,其语法格式为:
D=dctmtx(n), 返回n×n 的DCT 变换矩阵。
实验3 例图的离散余弦变换及逆变换重建
clear all, close all
f=imread('cameraman.tif'); %读cameraman.tif
imshow(f);
F=dct2(f); %做余弦变换
AbsFT=abs(F);
figure, imshow(log(AbsFT));
FinvT=idct2(F); %做余弦反变换
figure, imshow(mat2gray(FinvT));
%仅保留余弦变换频谱的左上角50*50个数据,然后做反变换,观察输出图像 F1=F;
[m,n]=size(F1);
F1(50:m,50:n)=0;
AbsFT=abs(F1);
figure, imshow(log(AbsFT));
FinvT=idct2(F1); %做余弦反变换
figure, imshow(mat2gray(FinvT));
五. 实验报告内容
1.简述试验目的和试验原理;
2.叙述各段程序功能,了解个函数功能,分析比较实验结果;
3.写出本试验的心得体会和意见。