【图像处理】MATLAB:频域处理
二维离散傅里叶变换
代码示例
f = imread('image.tif');F = fft2(f); %傅里叶变换,逆变换为 f=ifft2(F),取实部为 f=real(ifft2(F))S = abs(F); %傅里叶频谱Fc = fftshift(F); %将变换的原点移动到频率矩阵的中心,反变换为 F=ifftshift(Fc),%频率矩阵中心点位于[floor(M/2)+1,floor(N/2)+1]
S2 = log(1+abs(Fc)); %对数变换subplot(2,2,1);imshow(f);title('简单图像');
subplot(2,2,2);imshow(S,[ ]);title('傅里叶频谱');
subplot(2,2,3);imshow(abs(Fc),[ ]);title('居中的频谱');
subplot(2,2,4);imshow(S2,[ ]);title('对数变换后视觉增强的图像');
运行结果
频域滤波
若使用DFT进行滤波操作,则图像及其变换都将自动地看成是周期性的。若周期关于函数的非零部分的持续时间很靠近,则对周期函数执行卷积运算会导致相邻周期之间的干扰,称之为折叠误差的干扰。可通过使用零来填充函数的方法避免。
若处理的函数大小均是M×N,则填充值可设置为:P≥2M-1 和 Q ≥2N-1。
paddedsize函数用于计算满足PQ的最小偶数值,同样也提供一个选项来填充输入图像,以便形成的方形图像的大小等于最接近的2的整数次幂。根据所得出的PQ,可使用函数fft2来计算经零填充后的FFT:
F = fft2 ( f , PQ ( 1 ) , PQ ( 2 ) )
function PQ = paddedsize(AB, CD, PARAM)
%PADDEDSIZE Computes padded sizes useful for FFT-based filtering.
% PQ = PADDEDSIZE(AB), where AB is a two-element size vector,
% computes the two-element size vector PQ = 2*AB.
%
% PQ = PADDEDSIZE(AB, 'PWR2') computes the vector PQ such that
% PQ(1) = PQ(2) = 2^nextpow2(2*m), where m is MAX(AB).
%
% PQ = PADDEDSIZE(AB, CD), where AB and CD are two-element size
% vectors, computes the two-element size vector PQ. The elements
% of PQ are the smallest even integers greater than or equal to
% AB + CD - 1.
%
% PQ = PADDEDSIZE(AB, CD, 'PWR2') computes the vector PQ such that
% PQ(1) = PQ(2) = 2^nextpow2(2*m), where m is MAX([AB CD]). % Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins
% Digital Image Processing Using MATLAB, Prentice-Hall, 2004
% $Revision: 1.5 $ $Date: 2003/08/25 14:28:22 $if nargin == 1PQ = 2*AB;
elseif nargin == 2 & ~ischar(CD)PQ = AB + CD - 1;PQ = 2 * ceil(PQ / 2);
elseif nargin == 2m = max(AB); % Maximum dimension.% Find power-of-2 at least twice m.P = 2^nextpow2(2*m);PQ = [P, P];
elseif nargin == 3m = max([AB CD]); % Maximum dimension.P = 2^nextpow2(2*m);PQ = [P, P];
else error('Wrong number of inputs.')
end
代码示例
f = imread('square.tif');%不使用填充的频率低通滤波处理
[M,N] = size(f);
F = fft2(f);
sig = 10;
H = lpfilter('gaussian',M,N,sig); %用于生成高斯低通滤波器
G = H.*F;
g = real(ifft2(G));%使用填充的频率低通滤波处理
PQ = paddedsize(size(f)); %获取填充参数
Fp = fft2(f,PQ(1),PQ(2)); %得到使用填充的傅里叶变换
Hp = lpfilter('gaussian',PQ(1),PQ(2),2*sig); %高斯低通滤波器
Gp = Hp.*Fp; %将变换乘以滤波函数
gp = real(ifft2(Gp)); %获得傅里叶逆变换的实部
gpc = gp(1:size(f,1),1:size(f,2)); %将左上部的矩形修剪为原始大小subplot(1,3,1);imshow(f);title('简单颜色块图像');
subplot(1,3,2);imshow(g,[ ]);title('不使用填充的低通滤波');
subplot(1,3,3);imshow(gp,[ ]);title('使用填充的低通滤波');
运行结果
不使用填充对应图像顶边有黑线的解释:
空间滤波和频域滤波的比较
使用空间域滤波和频域滤波得到的图像对所有实用目的来说,都是相同的。
通常来说,当滤波器较小时,空间滤波要比频域滤波更有效,但是这个“小”的定义比较复杂,取决于众多因素,如所使用算法、缓冲器大小、数据复杂度等。
函数 freqz2 用于计算FIR滤波器的频率响应。
H = freqz2 ( h , R , C )
其中,h是一个二维空间滤波器,H是响应的二维频域滤波器,R为H的行数,C为H的列数。
代码示例
f = imread('bld.tif');
F = fft2(f);
S = fftshift(log(1+abs(F)));
S = gscale(S);h = fspecial('sobel');
PQ = paddedsize(size(F));
H = freqz2(h,PQ(1),PQ(2));
H1 = ifftshift(H);gs = imfilter(double(f),h);
gf = dftfilt(f,H1);subplot(3,2,1);imshow(f);title('灰度级图像');
subplot(3,2,2);imshow(S);title('傅里叶频谱');
subplot(3,2,3);imshow(abs(H),[ ]);title('频域滤波器:垂直soble掩模');
subplot(3,2,4);imshow(abs(H1),[ ]);title('频域经fftshift处理后的滤波器');
subplot(3,2,5);imshow(gs,[ ]);title('空间域滤波器:垂直soble掩模');
subplot(3,2,6);imshow(gf,[ ]);title('空间域经fftshift处理后的滤波器');
运行结果
【图像处理】MATLAB:频域处理相关推荐
- 图像处理 Matlab GUI系统(全)
目录 导读 数字图像处理系统 GUI实例设计 总结 [若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!] 导读 以数字图像处理系统设计为例,介绍GUI系统的设计流程, ...
- 《数字图像处理 MATLAB版》学习笔记
学习教材:<数字图像处理 MATLAB版>(第二版) 冈萨雷斯 学习过程中的图片代码和及我收集的一些关于数字图像处理的其他学习资料,需要的可以评论留下邮箱(需要购买专栏),加油 文章目录 ...
- matlab频域滤波处理,手动滤波,图像去网格背景:频域中手动选择目标区域进行滤波,滤掉噪声,灵活地达到理想的效果。
目录 一.原理简介 二.现有方法 三.代码实现 四.测试结果图 一.原理简介 主要思路为:通过傅里叶变换,将图像显示在频率域中,通过观察频谱图,如果了解频谱图与原图之间的关联,可以较为容易地发现噪声在 ...
- 【资源分享】数字图像处理MATLAB版冈萨雷斯+中文高清版+随书源码链接
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 1.数字图像处理MATLAB版冈萨雷斯+中文高清版 2.数字图像处理MATLAB版冈萨雷斯随书源码 1.数字图像处 ...
- 【数字图像处理matlab】(HSI变换融合算法)
[数字图像处理matlab](HSI变换融合算法) 输入一张高分辨率的全色影像HR,一张低分辨率的多光谱影像MS,采用HSI变换融合算法实现影像融合,其中RGB与HSI影像的相互转换调用自定义函数RG ...
- matlab图源代码,[转载]常用的一些图像处理Matlab源代码
常用的一些图像处理Matlab源代码 #1:数字图像矩阵数据的显示及其傅立叶变换 #2:二维离散余弦变换的图像压缩 #3:采用灰度变换的方法增强图像的对比度 #4:直方图均匀化 #5:模拟图像受高斯白 ...
- 数字图像处理MATLAB学习笔记(五)
数字图像处理MATLAB学习笔记(五) Color Image Processing 1 Color Image Representation in MATLAB 这里不多说了,彩色图片在计算机中以R ...
- [数字图像处理Matlab]任选一幅灰度图,自行编写程序,完成直方图均衡化。鼠鼠的数字图像处理实验要求:不能用MATLAB自带的histeq函数实现直方图均衡化
数学理论前提:见数字图像处理(第三版) 李俊山等编著 p50-53 1.利用imhist函数统计像素点个数 Im = imread("C:\Users\鼠鼠\Desktop\数字图像处理m ...
- 图像处理----入门资料,Matlab r2019最新版,r2008a,《数字图像处理》冈萨雷斯 第三版 《数字图像处理 Matlab 版》
研究生想研究的方向是图像处理,现在离开学还有四个月,希望能稍微入门吧.同时也希望通过博客的形式记录一下学习的进度,学习的心情.目前学习两周,安装了基本的软件,收集书籍,学习了灰度变换,空间滤波,频率滤 ...
- 数字图像处理matlab作业,数字图像处理matlab大作业
<数字图像处理matlab大作业>由会员分享,可在线阅读,更多相关<数字图像处理matlab大作业(23页珍藏版)>请在人人文库网上搜索. 1.几个图像处理实例,matlab ...
最新文章
- 10、kubernetes 核心技术-Secret、ConfigMap
- ITK:将真实和虚构图像转换为复杂图像
- 91Android万能驱动最新版,NVIDIA万能驱动电脑版下载|NVIDIA万能驱动官方安装版下载 -爱安卓...
- H5实现俄罗斯方块(一)
- 讨一个上海中上条件的老婆的成本 (zz)
- 计量经济学计算机答案第三章课后答案,庞皓计量经济学第2版课后习题答案
- 使用批处理修改注册表的键值
- html如何制作短信验证码,网站后台短信验证码怎么制作
- 基于人工势场法的车辆编队轨迹规划matlab仿真验证
- 【vbs消息轰炸代码】
- echart中饼图如何显示数据 实现鼠标移动切换显示(vue中)
- 理解快速排序 | 打通算法学习的任督二脉
- Chrome浏览器快速切换DOH DNS
- uva1601(The morning after Helloween)解题报告
- huffman编码压缩c语言,用Huffman编码对文件进行压缩的C语言实现
- 普元连接mysql_普元数据库面试题
- oracle批处理参数调用,Oracle数据库定时自动备份批处理代码(Windows)
- 【笔记3-6】CS224N课程笔记 - RNN和语言模型
- C/C++ 栈的应用:表达式求值
- Amazon Kindlegen 使用教程附下载