数字图象处理-在matlab中计算和观察二维DFT

傅立叶频谱

可以通过使用函数abs获得
S = abs(F)
F为原图f的傅立叶变换


F = fft2(f); //F对原图进行傅立叶变换后的结果
S = abs(F); //取傅立叶变换的频谱,即傅里叶谱
imshow(S,[]) //显示频谱
Fc = fftshift(F); //将傅立叶变换的中心移至频谱的中心位置
imshow(Fc,[]); //显示居中之后的频谱
S2 = log(1+abs(Fc)); //使用对数增强居中后的频谱
imshow(S2,[]) //显示之

原图图片
原图图片
原图的傅里叶谱
原图的傅里叶谱
居中处理后的傅立叶谱
居中的谱
使用对数增强后的可见谱
使用对数增强后的可见谱

一个简单的实验,这里面有几点需要说明。
1.对数增强的原理?
这里,搜集资料之后得到的答案是,对数转换可以使得灰度级的范围扩展开来。原本不明显的图像效果变得明显起来了。至于具体的原理,有待进一步的学习。。。

2.居中处理:
通过将四个象限对角互换得来的。
1 2
3 4
—>
4 3
2 1
使得原本原点在左上角的频谱,将原点移动到了频谱的中心位置。这样解释,貌似不太清楚,以后想办法补全这里的解释。


DFT滤波的基本步骤

下面介绍matlab中进行DFT的几个步骤
1.使用函数tofloat把输入的图像转换为浮点图像

2.使用函数paddedsize获得填充参数

3.得到有填充图像的傅立叶变换

4.生成一个滤波器函数。这里要求它不是居中的

5.用滤波器乘以改变换

6.获得G的IFFT

7.将左上部矩形修剪为原始大小

8.需要时,将滤波后的图像转换为输入图像的类

频率域滤波步骤示意图
这里写图片描述

有和没有填充的滤波效果

1.无填充的滤波效果

以后可能不会每天去更新博客了,一是内容不够精致,二是为了写博客而写博客就失去了自己写博客的目的 三,也没有那么多的时间去弄啊。一个星期至少更新一次。

猜你喜欢

转载自blog.csdn.net/forrest02/article/details/56667251