matlab用傅里叶变换实现图像的低通滤波 | 您所在的位置:网站首页 › 傅立叶变换低通滤波 › matlab用傅里叶变换实现图像的低通滤波 |
要求
可以使用 MATLAB 的傅里叶变换函数和反变换函数。 原理部分低通滤波器指去除图像中的高频成分,而低通滤波器指去除图像中的高频成分。考虑的有三种低通滤波器:理想滤波器、布特沃斯滤波器和高斯滤波器。理想低通滤波器:以原点为圆心,D为半径的圆内, 无衰减地通过所有频率,在圆外截断所有频率。由下面函数确定: Matlab函数介绍
Fft2:二维快速傅里叶变换Fftshift:移动零频点到频谱中间Ifft2: 二维快速反傅里叶变换 算法思路 对图像进行傅里叶变换(FFT),得到频谱;用理想低通滤波器对频谱滤波;对滤波后的频谱进行反傅里叶变换(IFFT),得到滤波后图像。见下图: 具体编程流程
1) 原始正常的图像,加噪处理,得到img_noise; 2) img_noise图像进行傅里叶变换,得到频谱; 3) 对得到的频谱进行理想低通滤波; 4) 对滤波后的频谱进行反傅里叶变换,得到滤波后图像 源码%傅里叶变换的低通滤波 %低通滤波选用理想低通滤波方式 % d0 是阈值,可以修改,初步设定为50 % clear all; close all; clc; img_origin=imread('C:\Users\yytang\Desktop\lena.jpg'); img_origin=rgb2gray(img_origin); d0=50; %阈值 img_noise=imnoise(img_origin,'salt'); % 加椒盐噪声 %img_noise=imnoise(img_origin,'gaussian'); % 加高斯噪声 img_f=fftshift(fft2(double(img_noise))); %傅里叶变换得到频谱 [m n]=size(img_f); m_mid=fix(m/2); %是不是可以有其他取整方式? n_mid=fix(n/2); img_lpf=zeros(m,n); for i=1:m for j=1:n d=sqrt((i-m_mid)^2+(j-n_mid)^2); %理想低通滤波,求距离 if d |
CopyRight 2018-2019 实验室设备网 版权所有 |