【图像处理】MATLAB:频域高低通滤波器
建立网格数组
M函数dftuv,提供了距离计算及其他类似应用所需要的网格数组。
function [U, V] = dftuv(M, N)
%DFTUV Computes meshgrid frequency matrices.
% [U, V] = DFTUV(M, N) computes meshgrid frequency matrices U and
% V. U and V are useful for computing frequency-domain filter
% functions that can be used with DFTFILT. U and V are both
% M-by-N.% Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins
% Digital Image Processing Using MATLAB, Prentice-Hall, 2004
% $Revision: 1.3 $ $Date: 2003/04/16 22:30:34 $% Set up range of variables.
u = 0:(M - 1);
v = 0:(N - 1);% Compute the indices for use in meshgrid.
idx = find(u > M/2);
u(idx) = u(idx) - M;
idy = find(v > N/2);
v(idy) = v(idy) - N;% Compute the meshgrid arrays.
[V, U] = meshgrid(v, u);
低通频域滤波器
代码示例
f = imread('pattern.tif');
PQ = paddedsize(size(f));
[U,V] = dftuv(PQ(1),PQ(2));
D0 = 0.05*PQ(2);
F = fft2(f,PQ(1),PQ(2));
H = exp(-(U.^2+V.^2)/(2*(D0^2))); %低通高斯滤波器
g = dftfilt(f,H);subplot(2,2,1);imshow(f);title('原图像');
subplot(2,2,2);imshow(fftshift(H),[ ]);title('高斯低通滤波器');
subplot(2,2,3);imshow(log(1+abs(fftshift(F))),[ ]);title('原图像的频谱');
subplot(2,2,4);imshow(g,[ ]);title('处理后图像(比原图像模糊)');
运行结果
函数lpfilter用于生成低通滤波器的传递函数:
function H = lpfilter(type, M, N, D0, n)
%LPFILTER Computes frequency domain lowpass filters.
% H = LPFILTER(TYPE, M, N, D0, n) creates the transfer function of
% a lowpass filter, H, of the specified TYPE and size (M-by-N). To
% view the filter as an image or mesh plot, it should be centered
% using H = fftshift(H).
%
% Valid values for TYPE, D0, and n are:
%
% 'ideal' Ideal lowpass filter with cutoff frequency D0. n need
% not be supplied. D0 must be positive.
%
% 'btw' Butterworth lowpass filter of order n, and cutoff
% D0. The default value for n is 1.0. D0 must be
% positive.
%
% 'gaussian' Gaussian lowpass filter with cutoff (standard
% deviation) D0. n need not be supplied. D0 must be
% positive. % Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins
% Digital Image Processing Using MATLAB, Prentice-Hall, 2004
% $Revision: 1.8 $ $Date: 2004/11/04 22:33:16 $% Use function dftuv to set up the meshgrid arrays needed for
% computing the required distances.
[U, V] = dftuv(M, N);% Compute the distances D(U, V).
D = sqrt(U.^2 + V.^2);% Begin filter computations.
switch type
case 'ideal' %理想低通滤波器H = double(D <= D0);
case 'btw' %巴特沃兹低通滤波器if nargin == 4n = 1; endH = 1./(1 + (D./D0).^(2*n));
case 'gaussian' %高斯低通滤波器H = exp(-(D.^2)./(2*(D0^2)));
otherwiseerror('Unknown filter type.')
end
绘制低通滤波器的线框图及表面图
% 绘制线框图H = fftshift(lpfilter('gaussian',500,500,50)); % 高斯低通滤波器
mesh(H(1:10:500,1:10:500)); % 绘制线框图
axis([0 50 0 50 0 1]); % 坐标轴
colormap([0 0 0]); % 通过彩色绘制网线
axis on; % 打开网格,axis off关闭
grid on; % 打开坐标轴,grid off关闭
view(-25,30); % 查看点(观察者)位置
% 绘制表面图H = fftshift(lpfilter('gaussian',500,500,50)); % 高斯低通滤波器
surf(H(1:10:500,1:10:500)); % 绘制表面图
axis([0 50 0 50 0 1]); % 坐标轴
colormap(gray); % 通过彩色绘制网线
axis pff; % 关闭网格
grid off; % 关闭坐标轴
高通频域滤波器
高通滤波通过削弱傅里叶变换的低频而保持高频相对不变,会使图像变得更加清晰(锐化)。
函数hpfilter用于生成低通滤波器的传递函数:
function H = hpfilter(type, M, N, D0, n)
%HPFILTER Computes frequency domain highpass filters.if nargin == 4n = 1; % Default value of n.
end% Generate highpass filter.
Hlp = lpfilter(type, M, N, D0, n);
H = 1 - Hlp;
代码示例
H = fftshift(hpfilter('ideal',500,500,50));
mesh(H(1:10:500,1:10:500));
axis([0 50 0 50 0 1]);
colormap([0 0 0]);
axis off;
grid off;
title('理想高通滤波器的透视图');
figure,imshow(H,[ ]);
title('理想高通滤波器相应图像');
运行结果
代码示例
f = imread('pattern.tif');
PQ = paddedsize(size(f));
D0 = 0.05* PQ(1);
H = hpfilter('gaussian',PQ(1),PQ(2),D0);
g = dftfilt(f,H);
subplot(1,2,1);imshow(f);title('原图像');
subplot(1,2,2);imshow(g,[ ]);title('高斯高通滤波后的结果');
运行结果
高频强调滤波
代码示例
PQ = paddedsize(size(f));
D0 = 0.05*PQ(1);
HBW = hpfilter('btw',PQ(1),PQ(2),D0,2);H = 0.5 + 2 * HBW;
gbw = dftfilt(f,HBW);
gbw = gscale(gbw);
ghf = dftfilt(f,H);
ghf = gscale(ghf);
ghe = histeq(ghf,256);subplot(2,2,1);imshow(f);title('原图像');
subplot(2,2,2);imshow(gbw);title('巴特沃兹高通滤波');
subplot(2,2,3);imshow(ghf);title('高频强调滤波');
subplot(2,2,4);imshow(ghe);title('高频强调滤波与直方图均衡化结合');
运行结果
【图像处理】MATLAB:频域高低通滤波器相关推荐
- Matlab频域高/低通滤波
建议参考书籍:数字图像处理_第三版 冈萨雷斯 写在前面: 对于给定的低通滤波器的函数表达式,可以得到高通滤波器的函数表达式: 理想高/低通滤波器 理想高通 一个二维理想高通滤波器(IHPF)定义为: ...
- 【资源分享】数字图像处理MATLAB版冈萨雷斯+中文高清版+随书源码链接
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 1.数字图像处理MATLAB版冈萨雷斯+中文高清版 2.数字图像处理MATLAB版冈萨雷斯随书源码 1.数字图像处 ...
- 数字图像处理MATLAB学习笔记(一)
数字图像处理MATLAB学习笔记(一) 灰度转换与空间滤波 本节主要使用Matlab语言进行灰度转换与空间滤波的使用 并对相关数学原理进行总结 1. Intensity Transformer Fun ...
- 图像处理 Matlab GUI系统(全)
目录 导读 数字图像处理系统 GUI实例设计 总结 [若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!] 导读 以数字图像处理系统设计为例,介绍GUI系统的设计流程, ...
- matlab图源代码,[转载]常用的一些图像处理Matlab源代码
常用的一些图像处理Matlab源代码 #1:数字图像矩阵数据的显示及其傅立叶变换 #2:二维离散余弦变换的图像压缩 #3:采用灰度变换的方法增强图像的对比度 #4:直方图均匀化 #5:模拟图像受高斯白 ...
- 《数字图像处理 MATLAB版》学习笔记
学习教材:<数字图像处理 MATLAB版>(第二版) 冈萨雷斯 学习过程中的图片代码和及我收集的一些关于数字图像处理的其他学习资料,需要的可以评论留下邮箱(需要购买专栏),加油 文章目录 ...
- 数字图像处理MATLAB学习笔记(五)
数字图像处理MATLAB学习笔记(五) Color Image Processing 1 Color Image Representation in MATLAB 这里不多说了,彩色图片在计算机中以R ...
- matlab频域滤波处理,手动滤波,图像去网格背景:频域中手动选择目标区域进行滤波,滤掉噪声,灵活地达到理想的效果。
目录 一.原理简介 二.现有方法 三.代码实现 四.测试结果图 一.原理简介 主要思路为:通过傅里叶变换,将图像显示在频率域中,通过观察频谱图,如果了解频谱图与原图之间的关联,可以较为容易地发现噪声在 ...
- matlab绘制的图如何变得清晰科学网,科学网—[转载] MATLAB导出高清晰图片 - 刘若芸的博文...
MATLAB导出高清晰图片 一个写论文用的小技巧,MATLAB产生的图片如何导出来合适大小或者符合编辑部要求的图片: 使用print命令,如下: 用于LaTeX的话,可以使用eps图片:print - ...
最新文章
- How to Use tomcat on Linux
- cordova:Error: Cannot find module '../cordova/platform_metadata'
- MongoDB-数据类型
- springboot 单元测试
- yolov3代码详解_代码资料
- Go interface 操作示例
- Ansible批量管理与维护
- 汽车维修行业呼吁大学生加入修车行列
- js html转为实体,字符串js编码转换成实体html编码的方法(防范XSS攻击)
- Spring之RMI 远程方法调用 (Remote Method Invocation)
- springboot整合shiro之thymeleaf使用shiro标签
- 基于MinimaxAlpha-Beta剪枝和强化学习的播棋(Mancala)AI
- 基于STM32的小游戏——谷歌小恐龙(Chrome Dino Game)
- 驱动精灵等软件卸载后剩余文件的删除
- 回忆2012-入坑OpenStreetMap10年纪
- 玩转树莓派二、树莓派配置工具 raspi-config 使用指南
- 电力系统频率 matlab,低频减载的MATLAB仿真模型
- Swift 可选(Optionals)类型讲解
- 扶我起来我还能打:NBA新赛季开打,历史数据看勇士是否无敌?
- 百度智能云寿光设施蔬菜智脑项目斩获国际大奖
热门文章
- go http 并发数限制_618临近,Redis优化高并发下的抢枪抢买买买性能
- 加密Python脚本
- 美团笔试题——公司食堂
- 计算机视觉CV中特征点提取SURF算法的学习笔记
- 一行命令配置深度学所需所有环境PyTorch, TensorFlow, CUDA, cuDNN, and NVIDIA Drivers.
- [查找问题] 例5.2 查找学生信息
- LVGL(2)Visual Studio模拟器使用
- Git Pull Failed:Could not read from remote repository
- 理解包装类 Integer 的底层实现,教你破解所有面试难题!
- linux系列的命令补充