数字图像处理之傅里叶变换

数字图像处理之傅里叶变换

                                                        by方阳

版权声明:本文为博主原创文章,转载请指明转载地址

http://www.cnblogs.com/fydeblog/p/7068986.html 

1. 前言

今天将之前学的数字图像处理的东西放到博客园里,所以下面会有连续几篇的博客都是关于数字图像处理的!

这篇博客将介绍图像的快速傅里叶变换,逆变换以及图像的平移变换的实现,理论的知识还请看书和百度,这里不再复述。

2. 原理说明

(1) 图像的二维FFT变换可以观察图像的频谱,再进行逆变换即可复原图像;

(2) 图像的平移性:图像在空间域乘以-1^(x+y),再进行傅里叶变换,即可看出图像的频谱图在x和y周平移了半个周期,原因是-1^(x+y)傅里叶变换表现复指数函数,相当于频谱的平移;

3. 实现内容

(1) 选择一幅图像,显示傅里叶变换频谱。再对得到傅里叶图像做傅里叶逆变换,显示图像,观察是否与原图像相同。

(2) 图像做傅里叶变换的平移性证明,将频谱中心移至中央。

4. 程序实现及实验结果

(1) 图像的傅里叶变换与反变换

参考代码:

I=imread('lena.bmp');
I_2D=D3_To_D2(I);
I1=fft2(I_2D);
I2=uint8(real(ifft2(I1)));
I1=log(1+abs(fftshift(I1)));
figure;
subplot(1,3,1);
imshow(I);
title('原图');
subplot(1,3,2);
imshow(I1,[]);
title('fft2后的频谱');
subplot(1,3,3);
imshow(I2,[]);
title('ifft2后的复原图像');

D3_To_D2函数(将三维降二维)参考代码:

function image_out=D3_To_D2(image_in)
[m,n]=size(image_in);
 n=n/3;%由于我的灰度图像是185x194x3的,所以除了3,你们如果是PxQ的,就不要加了
 A=zeros(m,n);%构造矩阵
 for i=1:m
     for j=1:n
        A(i,j)= image_in(i,j);%填充图像到A
     end
 end
image_out=uint8(A);

运行结果:

(2)平移验证

参考代码:

f(1000,1000)=0;
f=mat2gray(f);
[Y,X]=meshgrid(1:1000,1:1000);
f(350:649,475:524)=1;
f2=f.*(-1).^(X+Y);
f1=fft2(f);
f1_1=abs(f1);
f2=fft2(f2);
f3=log(1+abs(f2));
figure;
subplot(2,2,1);
imshow(f);
title('原图');
subplot(2,2,2);
imshow(f1_1,[]);
title('fft2后的频谱');
subplot(2,2,3);
imshow(abs(f2),[]);
title('中心化');
subplot(2,2,4);
imshow(f3,[]);
title('对数化');

 运行结果:

(3)相角复原(新添的)

参考代码:

I=imread('boy.jpg');
I=D3_To_D2(I);
I=fft2(I);
I_angle=angle(I);
I4=exp(1i*I_angle);
I4=uint8(ifft2(I4)*256);
I5=ifft2(I);
figure;
subplot(2,2,1);
imshow(I_angle);
title('相角');
subplot(2,2,2);
imshow(I4,[]);
title('相角复原后的图像');
subplot(2,2,3);
imshow(I5,[]);
title('谱复原后的图像');

 运行结果:

五. 结果分析

1.由第一个图可以看出,图像经过傅里叶变换再经过傅里叶反变换是可以还原出原图像的。

2.由第二个图可以看出,图像的平移性对观察图像的傅里叶频谱很有帮助,图像的频谱经过平移,低频聚集在中心,易于观察,对频谱进行对数化可以更加直观看图像的频谱分布。

3.由第三个图可以看出,相角决定图像的细节。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

GAN学习指南:从原理入门到制作生成Demo

28370
来自专栏PPV课数据科学社区

【学习】 R语言与机器学习学习笔记(1)K-近邻算法

前言 最近在学习数据挖掘,对数据挖掘中的算法比较感兴趣,打算整理分享一下学习情况,顺便利用R来实现一下数据挖掘算法。 数据挖掘里我打算整理的...

32160
来自专栏杨熹的专栏

Instance Based Learning

Udacity Machine Learning Instance Based Learning ---- Supervised Learning 给你一...

32740
来自专栏素质云笔记

python︱imagehash中的四种图像哈希方式(phash/ahash/dhash/小波hash)

code来源:https://github.com/JohannesBuchner/imagehash 外文原文:https://fullstackml.c...

1.3K70
来自专栏有趣的Python和你

sklearn调包侠之KNN算法

19750
来自专栏Petrichor的专栏

思考: R-CNN系列 网络结构 设计缺陷

在 Fast R-CNN 中,网络最后部分的 cls reg (分类回归,即对框内实例进行标签分类)和 bbox reg (边界框回归,即对边界框进行平移回归)...

36320
来自专栏ATYUN订阅号

【技术】使用深度学习自动为图像添加字幕(PyTorch)

深度学习现在发展十分迅猛,每天都会出现多种应用程序。而想要了解深度学习的最好方法就是亲自动手。尽可能尝试自己做项目。这将帮助你更深入地了解它们,并帮助你成为更好...

14050
来自专栏生信技能树

计算MiRNA–mRNA表达相关性

使用 Maximal Information Coefficient (MIC) 这个算法来计算计算MiRNA–mRNA表达相关性,这个算法来自于文献:D. N...

21310
来自专栏ATYUN订阅号

使用keras创建一个简单的生成式对抗网络(GAN)

然而,有些恶意的顾客为了获得金钱而出售假酒。在这种情况下,店主必须能够区分假酒和正品葡萄酒。

53740
来自专栏大数据挖掘DT机器学习

分类模型的性能评估——以SAS Logistic回归为例: 混淆矩阵

跑完分类模型(Logistic回归、决策树、神经网络等),我们经常面对一大堆模型评估的报表和指标,如Confusion Matrix、ROC、Lift、Gini...

46850

扫码关注云+社区

领取腾讯云代金券