matlab编程之傅里叶变换

第一部分 图像的傅立叶变换

一、   实验目的

1.了解图像变换的意义和手段;

2. 熟悉傅里叶变换的基本性质;

3. 熟练掌握FFT的方法及应用;

4. 通过实验了解二维频谱的分布特点;

5. 通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换。

二、   实验原理

1.应用傅立叶变换进行图像处理

傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。通过实验培养这项技能,将有助于解决大多数图像处理问题。对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。

2.傅立叶(Fourier)变换的定义

  对于二维信号,二维Fourier变换定义为:
  
  二维离散傅立叶变换为:
  

三、   实验步骤

1.打开计算机,安装和启动MATLAB程序;程序组中“work”文件夹中应有待处理的图像文件;

2.利用MatLab工具箱中的函数编制FFT频谱显示的函数;

3. a)调入、显示三张不同的图像;

       b)对这三幅图像做FFT并利用自编的函数显示其频谱;

c)讨论不同的图像内容与FFT频谱之间的对应关系。

4.记录和整理实验报告。

四、   实验仪器

1计算机, MATLAB软件;

3移动式存储器(软盘、U盘等)。

4记录用的笔、纸。

五、   实验结果及程序

1.程序

I1=imread('castle_color1.tif');  %读入原图像文件
I2=imread('castle_color2.tif');  %读入原图像文件
I3=imread('castle_color3.tif');  %读入原图像文件
subplot(3,2,1);imshow(I1);          %显示原图像
I1 = rgb2gray(I1);                  %将图像的变为灰度图像
fftI1=fft2(I1);                       %二维离散傅立叶变换
sfftI1=fftshift(fftI1);              %直流分量移到频谱中心
RR1=real(sfftI1);                    %取傅立叶变换的实部
II1=imag(sfftI1);                    %取傅立叶变换的虚部
A1=sqrt(RR1.^2+II1.^2);             %计算频谱幅值
A1=(A1-min(min(A1)))/(max(max(A1))-min(min(A1)))*225;%归一化

% min(A2)选取128*128 A2矩阵每一列的最小值
% min(min(A2))选取所有值中的最小值
subplot(3,2,2);imshow(A1);          %显示原图像的频谱

subplot(3,2,3);imshow(I2);          %显示原图像
I2 = rgb2gray(I2);
fftI2=fft2(I2);                       %二维离散傅立叶变换
sfftI2=fftshift(fftI2);             %直流分量移到频谱中心
RR2=real(sfftI2);                    %取傅立叶变换的实部
II2=imag(sfftI2);                   %取傅立叶变换的虚部
A2=sqrt(RR2.^2+II2.^2);             %计算频谱幅值
A2=(A2-min(min(A2)))/(max(max(A2))-min(min(A2)))*225;%归一化
subplot(3,2,4);imshow(A2);          %显示原图像的频谱

subplot(3,2,5);imshow(I3);         %显示原图像
I3 = rgb2gray(I3);
fftI3=fft2(I3);                       %二维离散傅立叶变换
sfftI3=fftshift(fftI3);             %直流分量移到频谱中心
RR3=real(sfftI3);                   %取傅立叶变换的实部
II3=imag(sfftI3);                   %取傅立叶变换的虚部
A3=sqrt(RR3.^2+II3.^2);             %计算频谱幅值
A3=(A3-min(min(A3)))/(max(max(A3))-min(min(A3)))*225;%归一化
subplot(3,2,6);imshow(A3);          %显示原图像的频谱

 

2.结果


六、   思考题

1.傅里叶变换有哪些重要的性质?

线性、时频对偶性、展缩性、时移性、时域和频域的微分性等。

 

第二部分 图像边缘提取

一.       实验目的:

掌握图像边缘提取的常用算子的特点和程序实现。

二.实验原理:

边缘就是图像中包含的对象的边界所对应的位置。物体的边缘以图像局部特性的不连续性的形式出现的,例如,灰度值的突变,颜色的突变,纹理结构的突变等。从本质上说,边缘就意味着一个区域的终结和另外一个区域的开始。图像边缘信息在图像分析和人的视觉中十分重要,是图像识别中提取图像特征的一个重要属性。

边缘检测(edge detection)在图像处理和对象识别领域中都是一个重要的基本问题。由于边缘的灰度不连续性,可以使用求导数的方法检测到。最早的边缘检测方法都是基于像素的数值导数的运算。现在使用的边缘检测算法大致可以归纳为两类:梯度(gradient)算子和拉普拉斯(Laplacian)算子。

三.实验内容:

编制一个通用的边缘提取函数。通过输入不同的参数,能够实现Sobel算子、Prewitt算子、Roberts算子、Laplace算子和Canny边缘检测,并比较不同算子处理后的边缘图像的特点。(实验图像任选)

MATLAB图像处理工具箱提供的edge函数可以实现检测边缘的功能,详细的使用语法可以在MATLAB命令窗口键入help edge.m获得帮助。该函数只能应用于灰度图像,其基本原理就是识别图像中灰度值变化较大的像素点。

四.  实验步骤:

a、 读入图像

b、对图像依次进行Sobel算子,Prewitt算子,Roberts算子,Laplace算子和Canny算子运算,比较处理结果。

五.       实验仪器

1计算机;

2 MATLAB软件;

3移动式存储器(软盘、U盘等)。

4记录用的笔、纸。

六、       实验结果及程序

1.程序

I=imread('cameraman.tif');

subplot(2,3,1);

imshow(I);title('a)原始图像');

subplot(2,3,2);

I1=edge(I,'sobel'); %Sobel算子边缘检测

imshow(I1);title('bSobel算子');

subplot(2,3,3);

I2=edge(I,'prewitt'); %Prewitt算子边缘检测

imshow(I2);title('cPrewitt算子'); 

subplot(2,3,4);

I3=edge(I,'robert'); %Robert算子边缘检测

imshow(I3);title('dRobert算子'); 

subplot(2,3,5);

I4=edge(I,'log'); %Laplace算子边缘检测

imshow(I4);title('eLaplace算子'); 

subplot(2,3,6);

I5=edge(I,'canny'); %Canny算子边缘检测

imshow(I5);title('fCanny算子');

2.实验结果


3.实验结果分析

由于Robert s 算子是利用图像的两个对角线的相邻像素之差进行梯度幅值的检测,所以求得的是在差分点处梯度幅值的近似值,并且检测水平和垂直方向边缘的性能好于斜线方向的边缘检测精度比较高但容易丢失一部分边缘同时由于没经过图像平滑计算,因此不能抑制噪声,该算子对具有陡峭的低噪声图像响应最好。

Prewit t 算子和Sobel 算子都是对图像进行差分和滤波运算,仅在平滑部分的权值选择上有些差异因此两者均对噪声具有一定的抑制能力但这种抗噪能力是通过像素平均来实现的所以图像产生了一定的模糊而且还会检测出一些伪边缘所以检测精度比较低该类算子比较适用于图像边缘灰度值比较尖锐,且图像噪声比较小的情况。

Laplace算子首先通过高斯函数对图像进行平滑处理因此对噪声的抑制作用比较明显但同时也可能将原有的边缘也平滑了造成某些边缘无法检测到,。此外高斯分布因子σ的选择对图像边缘检测效果有较大的影响。σ越大检测到的图像细节越丰富但抗噪能力下降从而出现伪边缘反之则抗噪能力提高但边缘检测精度下降易丢失许多真边缘因此对于不同图像应选择不同参数。

Canny 算子也采用高斯函数对图像进行平滑处理因此具有较强的去噪能力但同样存在容易平滑掉一些边缘信息其后所采用的一阶微分算子的方向性较Laplace算子要好,因此边缘定位精度较高。该算子与其它边缘检测算子的不同之处在于它使用种不同的阈值分别检测强边缘和弱边缘并且仅当弱边缘与强边缘相连时才将弱边缘包含在输出图像中因此这种方法较其它方法而言不容易被噪声“填充”,更容易检查出真正的弱边缘。通过实验结果可以看出,该算子在上述几种边缘检测算子当中效果最好。

(参考文档:基于MATLAB的遥感图像边缘检测算子的实验比较分析)

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值