您好,欢迎来到99网。
搜索
您的当前位置:首页实验一 傅立叶变换及图象的频域处理.

实验一 傅立叶变换及图象的频域处理.

来源:99网
实验一 傅立叶变换及图象的频域处理

一、实验目的

1、了解离散傅立叶变换的基本原理;

2、掌握应用MATLAB语言进行FFT及逆变换的方法;

3、了解图象在频域中处理方法,应用MATLAB语言作简单的低通滤波器。 二、实验原理

1、傅立叶变换的基本知识。

在图象处理的广泛应用领域中,傅立叶变换起着非常重要的作用,具体表现在包括图象分析、图象增强及图象压缩等方面。

假设f(x,y)是一个离散空间中的二维函数,则该函数的二维傅立叶变换的定义如下: u=0,1…M-1 v=0,1…N-1 (1) 离散傅立叶反变换的定义如下: x=0,1…M-1 y=0,1…N-1(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)的傅立叶变换的幅度值(即)显示为网格图。 将傅立叶变换的结果进行可视化的另一种方法是用图象的方式显示变换结果的对数幅值。 2、MATLAB提供的快速傅立叶变换函数 (1)fft2

fft2函数用于计算二维快速傅立叶变换,其语法格式为: B = fft2(I)

B = fft2(I)返回图象I的二维fft变换矩阵,输入图象I和输出图象B大小相同。 例如,计算图象的二维傅立叶变换,并显示其幅值的结果,其命令格式如下 load imdemos saturn2 imshow(saturn2) B = fftshift(fft2(saturn2));

imshow(log(abs(B)),[],'notruesize') (2)fftshift

MATLAB提供的fftshift函数用于将变换后的图象频谱中心从矩阵的原点移到矩阵的中心,其语法格式为: B = fftshift(I)

对于矩阵I,B = fftshift(I)将I的一、三象限和二、四象限进行互换。 (2)ifft2

ifft2函数用于计算图象的二维傅立叶反变换,其语法格式为: B = ifft2(I)

B = ifft2(A)返回图象I的二维傅立叶反变换矩阵,输入图象I和输出图象B大小相同。其语法格式含义与fft2函数的语法格式相同,可以参考fft2函数的说明。 3、简单低通滤波器的设计

一个图象经过傅立叶变换后,就从空域变到了频域,因此我们可以用信号处理中对于频域信号的处理方法对一幅图象进行处理。比如对图象进行低通滤波等。

虽然在计算机中必定能够模拟一个锐截止频率的理想低通滤波器,但它们不能用电子元件来实现。实际中比较常用的低通滤波器有:巴特沃思(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); Imshow(abs(C)) 三、实验要求

1、 读取图象girl.bmp,显示这幅图象,对图象作傅立叶变换,显示频域振幅图象。作傅立叶逆变换,显示图象,看是否与原图象相同。

2、 设计一个低通滤波器,截止频率自选,对图象作低通滤波,再作反变换,观察不同的截止频率下反变换后的图象与原图象的区别。

2、 选做:显示一幅频域图象的相位分布图,分别对振幅分布和相位分布作傅立叶逆变换,观察两幅图象,体会频域图象中振幅与位相的作用。

实验二 求六面体体积

一、实验目的

与本实验有关的函数

二、实验原理

三.实验要求

实验三 求函数的驻点

一、实验目的

1、了解如何查找MATLAB中已有的函数对问题进行求解。 二、实验原理

1.计算二元函数的极值

对于二元函数的极值问题,根据二元函数极值的必要和充分条件,可分为以下几个步骤:

步骤1.定义二元函数zf(x,y). 步骤2.求解方程组

fx(x,y)0,fy(x,y)0,得到驻点.

2z2z2zA2,B,C2.(x0,y0)xxyy 步骤3.对于每一个驻点,求出二阶偏导数

步骤4. 对于每一个驻点

(x0,y0)22,计算判别式ACB,如果ACB0,则该驻点是

2极值点,当A0为极小值, A0为极大值;如果ACB0,需进一步判断此驻点是否为2极值点; 如果ACB0则该驻点不是极值点.

2.计算二元函数在区域D内的最大值和最小值

设函数zf(x,y)在有界区域D上连续,则f(x,y)在D上必定有最大值和最小值。

求f(x,y)在D上的最大值和最小值的一般步骤为:

步骤1. 计算f(x,y)在D内所有驻点处的函数值;

步骤2. 计算f(x,y)在D的各个边界线上的最大值和最小值;

步骤3. 将上述各函数值进行比较,最终确定出在D内的最大值和最小值。 3.函数求偏导数的MATLAB命令

MATLAB中主要用diff求函数的偏导数,用jacobian求Jacobian矩阵。

diff(f,x,n) 求函数f关于自变量x的n阶导数。 jacobian(f,x) 求向量函数f关于自变量x(x也为向量)的jacobian矩阵。 可以用help diff, help jacobian查阅有关这些命令的详细信息 42zx8xy2y3的极值点和极值. 例1 求函数

首先用diff命令求z关于x,y的偏导数

>>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 结果为

ans =4*x^3-8*y ans =-8*x+4*y

zz4x38y,8x4y.xy即再求解方程,求得各驻点的坐标。一般方程组的符号解

用solve命令,当方程组不存在符号解时,solve将给出数值解。求解方程的MATLAB代码为:

>>clear;

>>[x,y]=solve('4*x^3-8*y=0','-8*x+4*y=0','x','y') 结果有三个驻点,分别是P(-2,-4),Q(0,0),R(2,4).下面再求判别式中的二阶偏导数:

>>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>A=diff(z,x,2)

>>B=diff(diff(z,x),y) >>C=diff(z,y,2) 结果为

A=2*x^2 B =-8 C =4

由判别法可知P(4,2)和Q(4,2)都是函数的极小值点,而点Q(0,0)不是极值点,实际上,

P(4,2)和Q(4,2)是函数的最小值点。当然,我们可以通过画函数图形来观测极值点与鞍

点。

>>clear;

>>x=-5:0.2:5; y=-5:0.2:5; >>[X,Y]=meshgrid(x,y); >>Z=X.^4-8*X.*Y+2*Y.^2-3; >>mesh(X,Y,Z)

>>xlabel('x'),ylabel('y'),zlabel('z') 结果如图

图 函数曲面图

可见在图中不容易观测极值点,这是因为z的取值范围为[-500,100],是一幅远景图,局部信息丢失较多,观测不到图像细节.可以通过画等值线来观测极值.

>>contour(X,Y,Z, 600)

>>xlabel('x'),ylabel('y')

结果如图

图 等值线图

由图可见,随着图形灰度的逐渐变浅,函数值逐渐减小,图形中有两个明显的极小值点

P(4,2)和Q(4,2).根据提梯度与等高线之间的关系,梯度的方向是等高线的法方向,且指

向函数增加的方向.由此可知,极值点应该有等高线环绕,而点Q(0,0)周围没有等高线环绕,不是极值点,是鞍点.

例2 求函数zxy在条件xy1下的极值..构造Lagrange函数

L(x,y)xy(xy1)

求Lagrange函数的自由极值.先求L关于x,y,的一阶偏导数

>>clear; syms x y k >>l=x*y+k*(x+y-1); >>diff(l,x) >>diff(l,y) >>diff(l,k)

LLLy,x,xy1,xy得再解方程

>>clear; syms x y k

>>[x,y,k]=solve('y+k=0','x+k=0','x+y-1=0','x','y','k')

x得

111,y,,222进过判断,此点为函数的极大值点,此时函数达到最大值.

22例3 抛物面zxy被平面xyz1截成一个椭圆,求这个椭圆到原点的最长

与最短距离.

这个问题实际上就是求函数

f(x,y,z)x2y2z2

22zxy在条件及xyz1下的最大值和最小值问题.构造Lagrange函数

L(x,y,z)x2y2z2(x2y2z)(xyz1)

求Lagrange函数的自由极值.先求L关于x,y,z,,的一阶偏导数

>>clear; syms x y z u v

>>l=x^2+y^2+z^2+u*(x^2+y^2-z)+v*(x+y+z-1); >>diff(l,x) >>diff(l,y) >>diff(l,z) >>diff(l,u) >>diff(l,v)

LLL2x2x,2y2y,2zxyz LLx2y2z,xyz1

再解方程

>>clear;

>>[x,y,z,u,v]=solve('2*x+2*x*u+v=0','2*y+2*y*u+v=0','2*z-u+v=0', 'x^2+y^2-z=0','x+y+z-1=0','x','y','z','u','v')

3511133,73,xy,z23.332

上面就是Lagrange函数的稳定点,求所求的条件极值点必在其中取到。由于所求问题存在

22{(x,y,z):xyz,xyz1},上连续,f最大值与最小值(因为函数在有界闭集

从而存在最大值与最小值),故由

f(1313,,23.)95322

求得的两个函数值,可得椭圆到原点的最长距离为953,最短距离为953。

三、实验要求

44zxy4xy1的极值,并对图形进行观测。 1.求

2222fx,yx2yxy1的最大值和最小值。 2.求函数在圆周222xyz1求出与点(3,1,-1)距离最近和最远点。 3.在球面

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 99spj.com 版权所有 湘ICP备2022005869号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务