图像处理:频域滤波_Matlab

学习笔记:数字图像处理——频域滤波matlab

相角的改变对图像影响很大。

所以在滤波的时候,不改变相角,即等同影响实部和虚部,称之为零相移滤波器

零相移滤波器必须是关于原点对称的

 

基础代码:


%% 定义函数:二维傅里叶变化 和 逆变化 (中心化)
F = @(x) fftshift(fft2(x));
Ft = @(x) ifft2(ifftshift(x));

%% 傅里叶变化基础
f = imread('rice.jpg');
f = rgb2gray(f);
F = fft2(f);       %傅里叶变化,未中心化
Fc = fftshift(F);  %中心化
S = abs(Fc); %傅里叶谱,强度
S2 = log(1+abs(Fc)); %方便显示
phi = atan(imag(F),real(F)); %求相角
phi = angle(F);              %也是求相角
f = real(ifft2(F));  %原空间图像

%% 频域滤波
% 频域的滤波实际上是周期性的,成为 循环卷积
%为了保证空间滤波 和 频域滤波 结果相同,在进行滤波之前,对空域图像填充0
% 有时候仅仅为了看简单的效果,可以不填充0,直接空间滤波


% 函数paddedsize:matlab没有自带的,Gonzalez书中的:函数paddedsize,只是计算大小的
% function PQ = paddedsize(AB,CD,PARAM)
% AB表示 f(x,y)的大小[A,B]
% CD表示 h(x,y)的大小[C,D]
% PQ表示 填充后的f大小[P,Q]
% PARAM 是干嘛的,我也不知道

% 函数lpfilter:M不带,生成一个低通滤波器,中心在边缘
% function H = lpfilter(type, M, N, D0, n)
%   'ideal'     'btw'     'gaussian'
% 内含 dftuv ,计算距离

% 函数hpfilter:M不带,生成一个高通滤波器,中心在边缘

% 函数dftfilt:M不带,接受输入图像和滤波器,输出滤波后图像,H中心在边缘
% function g = dftfilt(f, H)

% bandfilter函数,带阻,带通滤波器


%频域滤波
 PQ = paddedsize(size(f));
 Fp = fft2(f,PQ(1),PQ(2)); %padding方式计算fft,f自动填充到PQ的大小
 Hp =lpfilter('gaussian',PQ(1),PQ(2),(PQ(1))/6);%生成一个PQ大小的高斯滤波器
 Gp = Hp .* Fp;
 gp = ifft2(Gp);
 gpc = gp(1:size(f,1),1:size(f,2)); %修剪左上部分矩形大小为原始大小
 imshow(gpc,[])
 
 %频域滤波 直接使用 dftfilt
 gpc = dftfilt(f, Hp);% Hp大小应该是填充后的大小PQ
 imshow(gpc,[])
 
 %空间滤波  都是matlab自带
 h = fspecial('gaussian',15,7);  %先生成空间滤波器
 gs = imfilter(f,h);  %再滤波
 
%空域生成 频域滤波函数
%h是空间滤波器,R C 是生成的频域滤波器的行列
%H的中心在中心
%  H = freqz2(h,R,C);
H = freqz2(h,PQ(1),PQ(2));
H1 = ifftshift(H);
gf = dftfilt(f,H1);%频域滤波后结果
 

 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值