matlab二维函数的傅立叶变换,二维傅里叶变换和滤波(Two
function imt = fftcenter(ima) % 图像中心化转换函数
[xs,ys] = size(ima);
for i = 1:xs
for j = 1:ys
imt(i,j) = ima(i,j)*power((-1),(i+j)) ;%输入图像每个像素点乘以(-1)^x+y因子
end
end
return
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2-D FFT 程序包
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function proj04();
ima = imread('Fig4.41(a).jpg');
imshow(ima);
title('原始图像');
ima_f = fft2(ima); % 对图像ima求二维快速傅里叶变换
mod_ima = abs(ima_f) % 要求幅度谱,需对傅里叶变换求模
mod_ima_log = uint8(log2((mod_ima))) % 要求幅度谱需对FFT后得到的模取对数
phase_ima = atan2(imag(ima_f),real(ima_f)); % 求相位谱,arctan必须使用一个四象限反正切来计算,调用MATLAB的atan2函数
figure,subplot(1,2,1),imshow(mod_ima_log,[]); % []的作用是将mod_ima_log的最大最小值分别作为纯白255和纯黑0,中间值映射到0到255之间
title('输入图像的二维傅里叶幅度谱');
subplot(1,2,2),imshow(phase_ima,[]);
title('输入图像的二维傅里叶相位谱');
threeD_mod_ima_log = log2(mod_ima)+1;
[x1,y1] = size(threeD_mod_ima_log);
[a1,b1]=meshgrid(1:x1,1:y1); % 使用函数mesh绘制三维傅立叶图需要先进行meshgrid
figure,subplot(1,2,1),mesh(a1,b1,threeD_mod_ima_log);
shading interp; % 在网格片内采用颜色插值处理,使得三维表面图显得光滑
title('输入图像的三维傅里叶幅度谱');
[x2,y2] = size(phase_ima);
[a2,b2] = meshgrid(1:x2,1:y2); % 使用函数mesh绘制三维傅立叶图需要先进行meshgrid
subplot(1,2,2),mesh(a2,b2,phase_ima);
shading interp;
title('输入图像的三维傅里叶相位谱');
%
s = fftshift(ima_f); % 调用fftcenter函数实现图像的中心化变换(为了对比fftcenter)
mod_s = abs(s) % 要求幅度谱,需对傅里叶变换求模
mod_s_log = uint8(log2(mod_s)) % 要求幅度谱需对FFT后得到的模取对数
phase_s = atan2(imag(s),real(s)); % 求相位谱,arctan必须使用一个四象限反正切来计算,调用MATLAB的atan2函数
figure,imshow(mod_s_log,[]); % []的作用是将mod_ima_log的最大最小值分别作为纯白255和纯黑0,中间值映射到0到255之间
title('fftshift函数的中心变换图的二维傅里叶幅度谱');
imt = fftcenter(ima); % 调用自编函数对图像进行中心化变换
imt_f = fft2(imt); % 对中心化变换后的图像求二维傅里叶变换
figure,imshow(imt_f,[]);
title('使用自编函数fftcenter()中心变换图的二维傅里叶图谱');
mod_imt = abs(imt_f); % 要求幅度谱,需对傅里叶变换求模
mod_imt_log = uint8(log2(mod_imt)); % 要求幅度谱需对FFT后得到的模取对数
phase_imt = atan2(imag(imt_f),real(imt_f)); % 求相位谱,arctan必须使用一个四象限反正切来计算,调用MATLAB的atan2函数
figure,subplot(1,2,1),imshow(mod_imt_log,[ ]);
title('中心变换图的二维傅里叶幅度谱');
subplot(1,2,2),imshow(phase_imt,[]),
title('中心变换图的二维傅里叶相位谱');
%
threeD_mod_imt_log = log10(mod_imt)+1;
[x3,y3] = size(threeD_mod_imt_log);
[a3,b3]=meshgrid(1:x3,1:y3); % 使用函数mesh绘制三维傅立叶图需要先进行meshgrid
figure,subplot(1,2,1),mesh(a3,b3,threeD_mod_imt_log);
shading interp;
%figure,plot3((1:x),(1:y),ak); shading interp;
title('中心变换图的三维傅里叶幅度谱');
[x4,y4] = size(phase_imt);
[a4,b4] = meshgrid(1:x4,1:y4); % 使用函数mesh绘制三维傅立叶图需要先进行meshgrid
subplot(1,2,2),mesh(a4,b4,phase_imt);
shading interp;
title('中心变换图的三维傅里叶相位谱');
%
imt_if = ifft2(imt_f);
imt_if_abs = abs(imt_if);
figure,subplot(1,2,1),imshow(imt_if_abs,[]);
title('中心化变化图像');
ima = imread('Fig4.41(a).jpg');
subplot(1,2,2),imshow(ima);
title('原始图像');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 设计一个高斯滤波器
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function im=Lowpassfiltering()
st = imread('Fig4.41(a).jpg');
[M,N] = size(st);
D0 = 20; % 设定截止频率D0
x = 2*M;
y = 2*N;
% 进行高斯滤波之前先对图像进行填充,填充后的图像尺寸为(2M*2N)
for i=1:x
for j=1:y
if((i<=M)&&(j<=N))
st(i,j)=st(i,j);
else
st(i,j)=0;
end
end
end
figure,imshow(st);
title('对输入图像进行填充');
imwrite(st,'K1.jpg');
figure(2);
st = fftshift(fft2(st)); % 自编函数中心化效果有问题,因此调用fftshift函数实现中心化
for i = 1:x
for j = 1:y
D(i,j) = sqrt((i-M)^2+(j-N)^2); % 中心点为(M,N)
h(i,j) = 1*exp(-1/2*(D(i,j)^2/D0^2)); % 系统函数H(u,v)
st(i,j) = h(i,j)*st(i,j); % 滤波过程
end
end
st = fftshift(ifft2(st)); % 进行傅里叶反变换时再进行一次中心化
st_abs = abs(st);
for i=1:M
for j=1:N
st_k(i,j)=st_abs(i,j); % 对图像进行裁剪,去除填充部分
end
end
imshow(st_k,[])
title('GLPF滤波后的输出图像(已裁剪)');
st_k1 = imread('Fig4.41(a).jpg');
for i=1:M
for j=1:N
st_k2(i,j) = st_k1(i,j) - ( st_k(i,j)); % 原始图像减去GLPF图像,得到锐化图像
end
end
figure,imshow(st_k2,[])
title('原始图像减去GLPF滤波图像后的锐化图像');
matlab二维函数的傅立叶变换,二维傅里叶变换和滤波(Two相关推荐
- 二维图像的傅立叶变换
摘要:二维图像的傅立叶变换,与一维傅立叶相比,在理解上要抽象很多.我在网上找了几篇相对较好的文章,并用matlab自己做了几个实验图像,希望能对大家理解二维图像的傅立叶变换有所帮助. 关键字:二维傅立 ...
- 用Matlab编程实现图像的傅立叶变换和逆变换并显示出来
用Matlab编程实现图像的傅立叶变换和逆变换并显示出来 % 用Matlab编程实现图像的傅立叶变换并显示出来 % 可进行傅立叶变换和逆变换恢复 clear all close all clc I=i ...
- matlab prefourier,用matlab求单位阶跃函数的傅立叶变换fourier变换
傅立叶变换常常应用于在信号处理,其在信号处理中有着很重要的位置.下面我们就介绍一种最简单的傅立叶变换,即单位阶跃函数的傅立叶变换.然后用matlab实现单位阶跃函数的傅立叶变换. 1.傅立叶变换简介 ...
- MATLAB用fwind2函数设计近似圆对称二维带通滤波器
%用fwind2函数设计近似圆对称二维带通滤波器 %通带频率为[0.1 0.5] %期望带通频率响应创建矩阵Hd %用freqspace函数创建频率范围向量f1和f2. [f1,f2] = freqs ...
- 单边指数信号的傅立叶matlab,实验四连续信号的傅立叶变换
subplot(3,1,3);plot(w1,phai) %该三行用来得到相频特性图可得到完整图形. 例2.求2 11)(ω ω+=j F 的傅里叶逆变换)(t f . 解:编写如下M 文件, sym ...
- 傅立叶变换,时域,频域二
参考文献: 信号完整性分析 "信息传输调制和噪声"P31, "傅立叶变换的数学再认识"及若干网上博客. 目录 信号分析方法概述 时域 频域 ...
- 边缘指示函数matlab,matlab图像处理——傅立叶变换边缘提取
第一部分 图像的傅立叶变换 一. 实验目的 1.了解图像变换的意义和手段: 2. 熟悉傅里叶变换的基本性质: 3. 熟练掌握FFT的方法及应用: 4. 通过实验了解二维频谱的分布特点: 5. 通过本实 ...
- 《精通Matlab数字图像处理与识别》一6.2 傅立叶变换基础知识
本节书摘来自异步社区<精通Matlab数字图像处理与识别>一书中的第6章,第6.2节,作者 张铮 , 倪红霞 , 苑春苗 , 杨立红,更多章节内容可以访问云栖社区"异步社区&qu ...
- matlab h(z)变换成h(t),用Matlab进行系统函数H(s)仿真.ppt
用Matlab进行系统函数H(s)仿真 用Matlab进行系统函数H(s)仿真 ----无01班---- 房建新 杨平 姜韬 郑华 王萌 伯抢焊烷秉挽螟萎垂弟括荡宾险筐侈鞭毕补荡旬鄙费纤筑此太它懊剂掳 ...
- 傅立叶变换的实现—MATLAB(纯代码)
闲来无事,想验证一下MATLAB中内涵的f傅立叶变换fft2()和ifft2()正确不,于是就有了下面的代码和结果:该部分只是写了傅立叶变换,不是快速傅立叶变换,虽然运行结果都一样).建议用不大于10 ...
最新文章
- [JSOI2008]星球大战 并查集
- nodejs项目npm start背后的工作原理
- python商品评论分析_NLP实战:用主题建模分析网购评论(附Python代码)
- sqlserver启用登陆审计
- cloc统计想项目行数
- IE6 Hotfix MS-042将导致其Crash!
- FLV文件格式官方规范详解
- w10共享网络没有计算机,在W10局域网内找不到其它共享电脑的解决方案
- N元语言模型的解码算法
- 专访「算法之父」Michael Saunders:人工智能未来的突破点可能在自动驾驶
- git 如何把develop分支代码合并到master主分支
- 熵(entropy):宇宙的终极规则
- 计算机管理员账户默认密码,win10默认管理员密码,win10管理员初始密码
- STM32学习笔记(11)电容触摸按键
- 黑科技新添成员, 小米mix5再次创新, 但这些真的只是黑科技的全部吗?
- mysql之order by自定义排序规则进行排序(转载)
- edge浏览器如何设置无痕浏览 无痕浏览网页方法
- Proxy_代理模式
- python实现注册功能_python注册、登录,python注册登录,#1、实现注册功能#
- 线性代数 | 知识点总结(下)
热门文章
- CISP 考试教材《第 1 章 知识域:信息安全保障》知识整理
- python打印网页成pdf_如何使用Python将网页转换为PDF
- LNK2005符号重定义问题
- asp.net园林绿化服务交易网站(三层架构)案例
- steam错误代码 -118 ; 443/80或其他端口被占用,请关闭占用该端口的进程后再点击启动服务 ; 关闭端口进程
- 个所税服务器没有企业信息,【重要】企业纳税申报一定要看进来!
- 轻松获奖五一数学建模和蓝桥杯
- PopupWindow 弹窗显示
- win10下虚拟机VMware安装PhoenixOS(凤凰OS)
- Abode Arcobat DC 解决IEEE会议论文审核字体未嵌入和打印PDF掉色问题