中对数变换算法原理_MATLAB中的二维傅里叶变换

本文介绍了傅里叶变换的概念及其在图像处理中的应用,包括图像增强、边缘检测和特征提取。通过MATLAB的fft2函数进行二维傅里叶变换,然后展示如何使用对数变换进行视觉增强。文中还提供了MATLAB代码示例,展示如何进行傅里叶变换和频谱分析。
摘要由CSDN通过智能技术生成
6e5081e4a0fddd6b9ce057945360768f.png点击上方蓝字  关注我们 b61f9f6f2dd236e7db5f6cdc54e2837e.png cf6ca29984d5c05a108a7f10b81bed80.png e0b63fe550d78ae5dba43762922eb286.gif 一、傅里叶变换

1.首先,傅里叶变换有什么用呢?我们用两个生动的例子阐释傅里叶变换的作用:

【例子一】:现在一家餐厅研究了一个特殊的美食,作为美食家的你,想知道这个菜里面到底都有什么配料。

那么,如果我们输入这个美食(这个美食就是我们的“时域信号”),通过傅里叶变换,就可以得到这份美食的配方(这个配方就是我们的“频域信号”)

如果我们输入的是这个美食的配方,就可以通过傅里叶反变换得到这份美食。

【例子二】:下面请读者和我一起做一件事情:我将给出sin(3x)+sin(5x)sin(3x)+sin(5x)的曲线(你只知道这个曲线的样子,并不知道这个曲线的方程),那么应该如何去掉sin(5x)sin(5x)的成分呢?

想在时域中完成这个简直难于上青天,可以在频域中却很简单。

2.傅里叶变换的应用

傅立叶变换在图像处理中有非常非常的作用。因为不仅傅立叶分析涉及图像处理的很多方面,傅立叶的改进算法,比如离散余弦变换,gabor与小波在图像处理中也有重要的分量。

印象中,傅立叶变换在图像处理以下几个话题都有重要作用:

a.图像增强与图像去噪

绝大部分噪音都是图像的高频分量,通过低通滤波器来滤除高频——噪声;  边缘也是图像的高频分量,可以通过添加高频分量来增强原始图像的边缘;

b.图像分割之边缘检测

提取图像高频分量

c.图像特征提取:

形状特征:傅里叶描述子

纹理特征:直接通过傅里叶系数来计算纹理特征

其他特征:将提取的特征值进行傅里叶变换来使特征具有平移、伸缩、旋转不变性

d.图像压缩

可以直接通过傅里叶系数来压缩数据;常用的离散余弦变换是傅立叶变换的实变换;

3.我们再接着看看傅里叶变换本身是什么:

傅里叶变换是将时域信号分解为不同频率的正弦信号或余弦函数叠加之和。他的公式如下:

公式1:二维傅里叶变换公式(其实不用看它)

f63002923785708657c25cb6081d3cad.png

(公式1)

公式中参数说明:

M、N分别是图像的长和宽;

u、x范围从1到M-1;v、y范围从1到N-1。

公式看上去不难,但其实还是不太明确到底怎么用啊!它其实可以矩阵相乘的形式表示:

b56eb81f839081f9542c5a8bca386e79.png

(公式2)

公式2中f是原始二维数据矩阵,G_{1}和G_{2}分别是如下

868dba5fc5a71ca884c6085ca81be53e.png

(公式3)

bcd34d827111a3a321176756ba86c071.png

(公式4)

大家观察一下,G_{1}和G_{2}这么有规律,很容易就编程出来了~ 然后3个矩阵做个乘积,就换到频率域了!二维傅里叶变换就很容易用matlab实现了。

910c3229f0257536645ed2611debe9ef.png 二、MATLAB程序的实现

1.主要函数介绍

主要用到的函数是fft2,其基本语法为:

Y = fft2(X)        

它的含义是使用快速傅里叶变换算法返回矩阵的二维傅里叶变换, 这等同于计算fft(fft(X).').'。如果X是一个多维数组, fft2将采用高于 2 的每个维度的二维变换。输出Y的大小与X相同。

Y = fft2(X,m,n)

将截断X或用尾随零填充X,以便在计算变换之前形成m×n矩阵。Ym×n矩阵。如果X是一个多维数组,fft2将根据mn决定X的前两个维度的形状,也就是说使用该语法fft2将使用所要求的0的个数对输入图像进行填充,以便结果函数的大小为m*n。

傅里叶频谱可以使用函数abs来获得:

S = abs(F)

该函数计算数组的每一个元素的幅度(实部和虚部平方和的平方根)。

2.程序实践

Step1:导入图像并显示

N=100 f=zeros(50,50); f(15:35,23:28)=1; subplot(2,3,1); imshow(f); title('原始图像')

Step2:计算傅里叶变换并显示其频谱

g= fft2(f);   % matlab自带函数,来用对比 subplot(2,3,2); imshow(real(g));  % 一般只要实部 title('fft2生成的"频域"图像'); S=abs(g); subplot(2,3,3); imshow(S) title('傅里叶频谱')

Step3:居中频谱

Fc=fftshift(real(G));      %将零频分量移到频谱中心 subplot(2,3,4); imshow(Fc) title('居中的频谱')

Step4:使用对数变换进行视觉上的增强

S2=log(1+abs(Fc)); subplot(2,3,5); imshow(S2) title('使用对数变换进行视觉增强后的频谱');

bb4e0d43edb5c5a9fcefc081b0ee9323.png

好了,今天的学习内容到此,关注我们了解更多。

关于MATLAB的学习:

大家可以关注我们的知乎专栏——数据可视化和数据分析中matlab的使用:

https://zhuanlan.zhihu.com/c_1131568134137692160

欢迎大家加入我们的MATLAB学习交流群:

953314432

▼ 往期精彩回顾 ▼MATLAB中图像的镜像变换MATLAB数值微分与数值积分MATLAB多项式计算 75067fc920991fab368a3813d34a0e2d.png 7aea18ef7b358650058c7a5047038f03.png 8bca528595b2fa3c20c1e5e78ea813f8.gif 扫码关注我们 更多精彩等待你发现 出品:Asoul水云天课堂工作室 8bca528595b2fa3c20c1e5e78ea813f8.gif 9a6a911b57a9c3f5f8f1cef15b898e33.png好看你就 点点我
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值