原图:

(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. Jquery中和ajax有关的方法

    Jquery关于ajax有一系列的方法函数,单单知道$.ajax()显然是不够的,接下来我们对该系列的方法函数逐一研究下. ajaxComplete(callback).ajaxError(callb ...

  2. c++字符前面的L和_T

    字符串前面加L表示该字符串是Unicode字符串._T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变.因此,Visual C++里边定 ...

  3. Golang教程:方法

    什么是方法 一个方法只是一个函数,它有一个特殊的接收者(receiver)类型,该接收者放在 func 关键字和函数名之间.接收者可以是结构体类型或非结构体类型.可以在方法内部访问接收者. 通过下面的 ...

  4. Lucence学习之一:全文检索的基本原理

    本文转载自:  http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623594.html 一.总论 根据http://lucene.ap ...

  5. spring整合springmvc和mybatis

    1.spring 1.1 jar包 1.2 spring基本配置,包扫描注解 <!-- 自动扫描 --> <context:component-scan base-package=& ...

  6. 预防XSS方法:HtmlEncode和JavaScriptEncode(转)

    XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有XSS漏洞的网站中输入 ...

  7. DataGridView初始化,加载数据

    1,创建winform窗体应用程序 2,在界面上拖入DataGridView控件 3,添加相应的列如图: 4,开始编写后面的代码: private DataTable CountryDt = new ...

  8. 限流(三)Redis + lua分布式限流

    一.简介 1)分布式限流 如果是单实例项目,我们使用Guava这样的轻便又高性能的堆缓存来处理限流.但是当项目发展为多实例了以后呢?这时候我们就需要采用分布式限流的方式,分布式限流可以以redis + ...

  9. SpringCloud实战之初级入门(一)— eureka注册中心

    目录 写在前面 1.资料目录 2.环境介绍 3.eureka注册中心 3.1 创建工程 3.2 启动工程 5.eureka注册中心集群高可用 6.结语 7.一点点重要的事情 写在前面 我在软件行业浸泡 ...

  10. logstash结合es,日志收集

    1.下载好logstash后,解压目录 2.进入bin目录,新建文件 logstash_default.conf input { tcp { port => 4560 codec => & ...