原图:

(0)

代码:

I=imread('1.jpg');

I=rgb2gray(I);

I=im2double(I);

F=fft2(I);

F=fftshift(F);

F=abs(F);

T=log(F+1);

figure;

imshow(T,[]);

傅里叶变换:

(1)

分析代码:

1. I=imread('1.jpg');

读取图像,不多说了

2. I=rgb2gray(I);

将图像转换为灰度图,如果没有这一步的话,最终得到的傅里叶变换是这个样子的

(2)

3. I=im2double(I);

将图像的数据格式转换为double型的,此时图像的数值范围由原来的[0,255],变成了[0,1],其实不进行转换的话,也可以进行傅里叶变换,只是傅里叶变换后的图像会有所不同,如(3)所示,可以跟图(1)比较一下看看效果,有时候不同的人得出的傅里叶变换结果不相同,也许就是这个原因

(3)

4. F=fft2(I);

进行傅里叶变换

5. F=fftshift(F);

对傅里叶变换后的图像进行象限转换,没有这一步的话,最终输出的结果是这样的

(4)

6. F=abs(F);

求傅里叶变换的模,我们都知道傅里叶变换后的结果为复数,包含real实部和imag虚部,而abs就是求复数的模,经过这一步,F的类型由复数的double变成了实数的double,如果没有这一步, matlab会给出提示,Warning: Displaying real part of complex input.最终输出的结果如下。

(5)

7. T=log(F+1);

经过前几步之后,我们得到了傅里叶变换的幅值,但是傅里叶变换后的数值范围非常大,maxF = 2.04e+05,minF = 0.009,如果不进行转换的话在图中显示就是图(6)的样子,中间有个小白点

(6)

那为什么要用log(F+1)呢。如图7所示,对(0,1)之间的x值,经过log(X)变换后会变成负数,而log(X+1)则将所有的x值,映射成正数,数值范围也更小一些。

(7)

8. figure;imshow(T,[]);

显示图像,之所以用imshow(T,[]);而不是imshow(T)。是因为即使经过对数变换后T的取值范围仍然大于[0,1],maxT=12.23,minT=0.009。imshow(T)只会显示[0,1]的值,而imshow(T,[]) 会根据灰度图的数值范围来显示图像,相当于将[0.09,12.23]映射到[0,1]显示。

使用matlab对图像进行傅里叶变换的更多相关文章

  1. DAY13 Matlab实现图像错切源代码

    Matlab实现图像错切源代码 %错切im=(imread('robot.jpg'));im1=rgb2gray(im);figure,imshow(im1);[row,col]=size(im1); ...

  2. matlab 对图像操作的函数概览

    转自博客:http://blog.163.com/fei_lai_feng/blog/static/9289962200991713415422/ 一. 读写图像文件 1. imread imread ...

  3. 【matlab】图像直方图

    使用imhist函数(要先用rgb2gray转化为灰度图像) 利用matlab计算图像直方图函数为imhist() 具体用法: imhist( i );直接显示图像i的灰度直方图: imhist(i, ...

  4. MATLAB中图像的基本操作

    MATLAB中图像的基本操作 1.读取.显示图片 MATLAB中提供了immread()与imshow()函数读取和显示图片.其中读取函数imread()原型: imread: A = imread( ...

  5. matlab中fft快速傅里叶变换

    视频来源:https://www.bilibili.com/video/av51932171?t=628. 博文来源:https://ww2.mathworks.cn/help/matlab/ref/ ...

  6. 用matlab给图像加高斯噪声和椒盐噪声(不调用imnoise函数)

    图像画面中的噪声,大致可以分为两类:高斯噪声和椒盐噪声.在这里,我们先看下图像中两种噪声各自的特征. 椒盐噪声:噪声幅值基本相同,但出现位置随机. 高斯噪声:图像中每一点都存在噪声,但幅值是随机分布的 ...

  7. MATLAB:图像水平、垂直、水平垂直镜像、转置、旋转变换(flipdim、mirror、transp、imrotate函数)

    1.原图像经水平.垂直.水平垂直镜像设置通过mirror函数实现: close all; %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clear all; clc; I=imrea ...

  8. MATLAB·提取图像中多个目标

    基于matlab工具箱提取图像中的多目标特征(代码如下): 代码前面部分为提取图像的边界信息,调用了后面的遍历函数Pixel_Search,函数实现方法见后~ %%ROI Testing close ...

  9. opencv3.2.0图像离散傅里叶变换

    源码: ##名称:离散傅里叶变换 ##平台:QT5.7.1+opencv3.2.0 ##日期:2017年12月13. /**** 新建QT控制台程序****/ #include <QCoreAp ...

随机推荐

  1. Serverless+SCF=打倒服务器,解放程序员

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云加社区技术沙龙 发表于云+社区专栏 "你做什么工作的?" "程序员." "那正好, ...

  2. 转载:怎样用通俗的语言解释REST,以及RESTful?

    作者:覃超链接:https://www.zhihu.com/question/28557115/answer/48094438来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  3. HDU 5696 ——区间的价值——————【线段树、快排思想】

    区间的价值 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  4. 架构实战项目心得(七):使用SpringBoot+Dubbo+Mybatisplus+Oracle搭建后台项目框架(二)

    接下来我们将整合mybatisplus+Oracle,实现一个简单的查询.(期间踩了很多坑,遇到一些问题,还好慢慢解决了.现在是通过配置文件的方式来进行dubbo服务的注册和发布,希望以后能在学习和实 ...

  5. [转]Entity Framework Sprocs with Multiple Result Sets

    本文转自:https://msdn.microsoft.com/en-us/data/jj691402.aspx Entity Framework Sprocs with Multiple Resul ...

  6. [转]字符编码笔记:ASCII,Unicode 和 UTF-8

      本文非原创,转载 ,原文地址 :http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 作者: 阮一峰 日期: 20 ...

  7. 简述Spring及配置

    简述Spring及配置 Spring最主要的思想就是IoC(Inversionof Control,控制反转),或者成为DI(Dependency Injection,依赖注入) 一.springMV ...

  8. golang 生成图表

    golang 支持生产图片的源码在下面地址可以看到: https://github.com/vdobler/chart 这个项目 的 example 目录下编译后,执行下面命令就可以生产所有它支持的图 ...

  9. Java Netty简介

    Netty和Mina是Java世界非常知名的通讯框架.它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io(http:// ...

  10. Class.forName之坑

    今天遇到个问题 找不到类,最后发现 Class.forName中要完整的类名