使用matlab对图像进行傅里叶变换
原图:
(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对图像进行傅里叶变换的更多相关文章
- DAY13 Matlab实现图像错切源代码
Matlab实现图像错切源代码 %错切im=(imread('robot.jpg'));im1=rgb2gray(im);figure,imshow(im1);[row,col]=size(im1); ...
- matlab 对图像操作的函数概览
转自博客:http://blog.163.com/fei_lai_feng/blog/static/9289962200991713415422/ 一. 读写图像文件 1. imread imread ...
- 【matlab】图像直方图
使用imhist函数(要先用rgb2gray转化为灰度图像) 利用matlab计算图像直方图函数为imhist() 具体用法: imhist( i );直接显示图像i的灰度直方图: imhist(i, ...
- MATLAB中图像的基本操作
MATLAB中图像的基本操作 1.读取.显示图片 MATLAB中提供了immread()与imshow()函数读取和显示图片.其中读取函数imread()原型: imread: A = imread( ...
- matlab中fft快速傅里叶变换
视频来源:https://www.bilibili.com/video/av51932171?t=628. 博文来源:https://ww2.mathworks.cn/help/matlab/ref/ ...
- 用matlab给图像加高斯噪声和椒盐噪声(不调用imnoise函数)
图像画面中的噪声,大致可以分为两类:高斯噪声和椒盐噪声.在这里,我们先看下图像中两种噪声各自的特征. 椒盐噪声:噪声幅值基本相同,但出现位置随机. 高斯噪声:图像中每一点都存在噪声,但幅值是随机分布的 ...
- MATLAB:图像水平、垂直、水平垂直镜像、转置、旋转变换(flipdim、mirror、transp、imrotate函数)
1.原图像经水平.垂直.水平垂直镜像设置通过mirror函数实现: close all; %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clear all; clc; I=imrea ...
- MATLAB·提取图像中多个目标
基于matlab工具箱提取图像中的多目标特征(代码如下): 代码前面部分为提取图像的边界信息,调用了后面的遍历函数Pixel_Search,函数实现方法见后~ %%ROI Testing close ...
- opencv3.2.0图像离散傅里叶变换
源码: ##名称:离散傅里叶变换 ##平台:QT5.7.1+opencv3.2.0 ##日期:2017年12月13. /**** 新建QT控制台程序****/ #include <QCoreAp ...
随机推荐
- MySQL获取字段的片段
如表中有很多这样的数据: TEST-123,TEST-III 这种以 TEST开头的数据,为了统计其总数 可以使用mysql自带的方法 substring_index()方法 第一个参数是列的内容, ...
- Vue路由开启keep-alive时的注意点
Vue路由开启keep-alive时的注意点 这个不是业务的要求,但是看到每次进入页面就重新渲染DOM然后再获取数据更新DOM,觉得作为一个前端工程师有必要优化下的加载逻辑,正好vue提供了 ke ...
- Amoeba+Mysql 实现读写分离
About Amoeba Amoeba可译为阿米巴.变型虫Amoeba是一个开源项目,致力于Mysq的分布式数据库前端代理层Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口 ...
- WEB项目构建优化之自动清除CSS中的图片缓存
在web项目构建发布时,经常遇到css中图片的修改优化,那么如何清除图片的缓存成为必须要解决的问题.曾经有过傻傻的方法就是直接在图片后面添加随机数.今天主要是从构建自动化方式来解决这个问题,提高开发及 ...
- [转]oracle update set select from 关联更新
本文转自:http://blog.csdn.net/disiwei1012/article/details/52589181 http://www.blogjava.net/Jhonney/archi ...
- D3基础---比例尺
转载请注明出处! 比例尺简述: 比例尺是一组把输入域映射到输出范围的函数. 一般来说数据集中的值不可能恰好与图表中的像素尺度一一对应.比例尺就是把这些数据值映射到可视化图形中使用的新值的便捷手段. D ...
- js实现栈
栈是一种先进后出的特殊线性表结构,存储上分链式存储和顺序存储两种方式 链式存储: function LinkedStack() { let Node = function (ele) { this.e ...
- Eclipse提示workspaces is use
问题描述: 有时候因为强行关闭Eclipse导致再次打开出现workspace提示正在使用 解决办法: 删除workspace目录下隐藏文件夹 .metadata 中的 .lock 文件 worksp ...
- Spring_Spring与IoC_基于XML的DI
一.注入分类 bean实例在调用无参构造器创建空值对象后,就要对Bean对象的属性进行初始化.初始化时由容器自动完成的,称为注入.根据注入方式的不同,常用的有2类:设值注入.构造注入.(还有一种,实现 ...
- radio 实现点击两次 第一次点击选中第二次点击取消
由于项目的需求,要求radio点击两次后为取消状态,不方便修改为checkbox,可以用正面的方法实现. // jquery $('input:radio').click(function(){ // ...