基于MATLAB图像处理的频率域滤波分析及应用
基于matlab的数字图像的频域滤波器设计

实验一:数字图像的频域滤波器设计一、实验目的掌握matlab 程序设计语言,掌握matlab 基本数据类型、核心函数及辅助函数的使用。
掌握理想和高斯低通滤波器的设计方法。
二、实验内容利用理想和高斯低通滤波器实现图像的频域滤波;利用理想和高斯高通滤波器实现图像的频域滤波;三、实验原理二维理想低通滤波器的传递函数为:001.(,)(,)0.(,)D u v D H u v D u v D ≤⎧=⎨>⎩D0是指定非负数值,D (u ,v )是(u ,v )点距频率中心的距离。
如果要研究的图像尺寸为M X N ,则它的变换也有相同的尺寸。
在半径为D0的圆内,所有频率无衰减地通过滤波器,而在此半径之外的所有频率完全被衰减掉。
高斯高通滤波器传递函数为:220(,)/2(,)D u v D H u v e -=D (u ,v )是距傅立叶变换中心原点的距离。
D0是截止频率。
高斯低通滤波器的傅立叶变换也是高斯的。
二维理想高通滤波器的传递函数为:000.(,)(,) 1.(,)D u v D H u v D u v D ≤⎧=⎨>⎩D0是从频率矩形中点测得的截止频率长度,它将以D0为半径的圆周内的所有频率置零,而毫不衰减地通过圆周外的任何频率。
但其物理上是不可实现的。
高斯高通滤波器传递函数为:220(,)/2(,)1D u v D H u v e -=-高通滤波器能够用高斯型低通滤波器的差构成。
这些不同的滤波器有更多的参数,因此能够对滤波器的形状进行更多的控制。
四.实验设备和仪器1.计算机2. matlab开发平台五.关键代码及注释1.理想低通滤波器RGB = imread('saturn.png');I0 = rgb2gray(RGB);subplot(2,3,1),imshow(I0);title('原图');I1 = imnoise(I0,'gaussian'); %对原图像加噪声subplot(2,3,2),imshow(I1);title('加入噪声后')%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心s=fftshift(fft2(I1));subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift');[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整%ILPF滤波(程序中以d0=15为例)d0=50; %初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离if d<=d0 %点(i,j)在通带内的情况h(i,j)=1; %通带变换函数else %点(i,j)在阻带内的情况h(i,j)=0; %阻带变换函数ends(i,j)=h(i,j)*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数subplot(2,3,5),imshow(s); title('ILPF滤波(d0=50)'); %显示ILPF滤波后的图像2.高斯低通滤波器RGB = imread('saturn.png');I0 = rgb2gray(RGB);subplot(2,3,1),imshow(I0);title('原图');I1 = imnoise(I0,'gaussian'); %对原图像加噪声subplot(2,3,2),imshow(I1);title('加入噪声后')%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心s=fftshift(fft2(I1));subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift');[M,N]=size(s); %分别返回s的行数到M中,列数到N中%GLPF滤波d0=50; %初始化d0n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离h(i,j)=1*exp(-1/2*(d^2/d0^2)); %GLPF滤波函数s(i,j)=h(i,j)*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数subplot(2,3,5),imshow(s);title('GLPF滤波(d0=50)'); %显示GLPF滤波处理后的图像3.理想高通滤波器RGB = imread('saturn.png');I0 = rgb2gray(RGB);subplot(2,3,1),imshow(I0);title('原图');I1 = imnoise(I0,'gaussian'); %对原图像加噪声subplot(2,3,2),imshow(I1);title('加入噪声后')%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心s=fftshift(fft2(I1));subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift');[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整%IHPF滤波d0=15; %初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离if d<=d0 %点(i,j)在通带内的情况h(i,j)=0; %通带变换函数else %点(i,j)在阻带内的情况h(i,j)=1; %阻带变换函数ends(i,j)=h(i,j)*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数subplot(2,3,5),imshow(s); title('IHPF滤波(d0=15)'); %显示IHPF滤波后的图像4.高斯高通滤波器RGB = imread('saturn.png');I0 = rgb2gray(RGB);subplot(2,3,1),imshow(I0);title('原图');I1 = imnoise(I0,'gaussian'); %对原图像加噪声subplot(2,3,2),imshow(I1);title('加入噪声后')%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心s=fftshift(fft2(I1));subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift');[M,N]=size(s); %分别返回s的行数到M中,列数到N中%GHPF滤波d0=15; %初始化d0n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h(i,j)=1-1*exp(-1/2*(d^2/d0^2)); %GHPF滤波函数s(i,j)=h(i,j)*s(i,j); %GHPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数subplot(2,3,5),imshow(s);title('GHPF滤波(d0=15)'); %显示GHPF滤波处理后的图像六.实验结果图一理想低通滤波器图二高斯低通滤波器图三理想高通滤波器图四高斯高通滤波器。
如何使用MATLAB进行频域滤波与去噪

如何使用MATLAB进行频域滤波与去噪使用MATLAB进行频域滤波与去噪引言:在数字信号处理领域,频域滤波与去噪是一项重要而常见的任务,在实际应用中有很多场景需要对信号进行去除噪声或者滤波处理。
MATLAB作为一种功能强大的科学计算软件,提供了丰富的工具和函数,可以帮助我们完成频域滤波与去噪的任务。
本文将介绍如何使用MATLAB进行频域滤波与去噪,并给出一些实用的例子。
一、频域滤波频域滤波是一种常用的信号处理方法,它通过将信号从时域转换到频域,对频域上的信号进行滤波处理,再将滤波后的信号转换回时域得到最终结果。
MATLAB提供了丰富的函数和工具箱,可以方便地进行频域滤波。
1. FFT(快速傅里叶变换)傅里叶变换是将信号从时域转换到频域的一种数学方法,而快速傅里叶变换(FFT)是对离散信号进行傅里叶变换的一种快速算法。
在MATLAB中,可以使用fft函数完成FFT变换,如下所示:```matlabY = fft(X);```其中,X为输入信号,Y为傅里叶变换后的结果。
通过FFT变换,我们可以将信号转换到频域进行进一步的处理。
2. 频域滤波器设计MATLAB提供了fir1、fir2、butter等函数用于设计常见的滤波器,根据滤波器的需求选择合适的函数进行滤波器设计。
以fir1函数为例,它可以设计出一种FIR (有限脉冲响应)滤波器,实现对频域信号的滤波。
下面是一个示例代码:```matlaborder = 32; % 滤波器阶数cutoff = 0.2; % 截止频率b = fir1(order, cutoff); % FIR滤波器设计```在上述代码中,我们指定了滤波器的阶数和截止频率,通过调用fir1函数进行滤波器设计,并得到滤波器的系数b。
将滤波器系数应用到信号上,可以实现对信号的频域滤波。
3. 频域滤波器应用设计好滤波器后,我们可以将滤波器应用到信号上,实现频域滤波。
MATLAB 提供了fftfilt函数用于对信号进行频域滤波,如下所示:```matlabY = fftfilt(b, X);```其中,b为滤波器系数,X为输入信号,Y为滤波后的结果。
应用MATLAB对信号进行频谱分析及滤波

数字信号处理课程设计报告书课题名称应用MATLAB对信号进行频谱分析及滤波姓名李光明学号20106480院、系、部电气系专业电子信息工程指导教师刘鑫淼2013年6月 28日应用MATLAB对信号进行频谱分析及滤波20106480 李光明一、设计目的用MATLAB语言进行编程,绘出所求波形,并且运用FFT求对连续信号进行分析。
二、设计要求1、用MATLAB产生正弦波,矩形波,并显示各自的时域波形图;2、进行FFT变换,显示各自频谱图,其中采样率、频率、数据长度自选,要求注明;3、绘制三种信号的均方根图谱;4、用IFFT恢复信号,并显示恢复的正弦信号时域波形图。
三、系统原理用FFT对信号作频谱分析是学习数字信号处理的重要内容。
经常需要进行频谱分析的信号是模拟信号和时域离散信号。
频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现频率分辨率是2π/N。
x(n)是一个长度为M的有限长序列,则x(n)的N点离散傅立叶变换为:(3.1)其中(3.2)逆变换为:(3.3)但FFT是一种比DFT更加快速的一种算法,提高了DFT的运算速率,为数字信号处理技术应用于各种信号处理创造了条件,大大提高了数字信号处理技术的发展。
本实验就是采用FFT,IFFT对信号进行谱分析。
四、程序设计1、产生正弦波及方波2、对正弦波及方波进行FFT变换并作频谱图(采样频率为1000Hz,数据长度为1024)3、求正弦波及方波FFT变换后的功率谱(数据长度为1024)4、用IFFT恢复原始信号(采样频率为1000Hz)程序如下:fs=input('请设定采样频率:');%设定采样频率N=input('请设定数据长度:');%设定数据长度t=0:0.001:1;f=100;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f*t);figure(1);subplot(211);plot(t,x);%作正弦信号的时域波形axis([0,0.1,-1,1]);title('正弦信号时域波形');z=square(60*t);subplot(212)plot(t,z)axis([0,1,-2,2]);title('方波信号时域波形');grid;%进行FFT变换并做频谱图y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; figure(2);subplot(211);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('正弦信号幅频谱图');y1=fft(z,N);%进行fft变换mag=abs(y1);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; subplot(212);plot(f,mag);%做频谱图axis([0,1000,0,200]);title('方波信号幅频谱图');grid;%求功率谱sq=abs(y);power=sq.^2;figure(3)subplot(211);plot(f,power);title('正弦信号功率谱');grid;sq1=abs(y1);power1=sq1.^2;subplot(212);plot(f,power1);title('方波信号功率谱');grid;%用IFFT恢复原始信号xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;figure(4);subplot(211);plot(ti,magx);axis([0,0.1,-1,1]);title('通过IFFT转换的正弦信号波形');zifft=ifft(y1);magz=real(zifft);ti1=[0:length(zifft)-1]/fs;subplot(212);plot(ti1,magz);title('通过IFFT转换的方波信号波形');grid;五、仿真结果及分析图5-1 正弦及方波信号波形.图5-2 FFT变换后的正弦及方波信号幅频谱图图5-3 正弦及方波信号功率谱图图5-4 采样频率为1000Hz时IFFT还原后的正弦及方波信号波形图5-5 采样频率为200Hz时IFFT还原后的正弦及方波号信波形运用MATLAB可以绘制出当图5-1的周期为0.01s频率为1000Hz的正弦信号和占空比60%的方波信号,以及图5-2、图5-3的幅频谱图和功率谱图,其中正弦信号在频率为100HZ和900HZ时功率谱最大,说明信号中100HZ和900HZ的频率成分幅值最大。
用MATLAB设计对信号进行频谱分析和滤波处理的程序

用MATLAB设计对信号进行频谱分析和滤波处理的程序设计出一套完整的系统,对信号进行频谱分析和滤波处理:1.产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。
2.采集一段含有噪音的语音信号(可以录制含有噪音的信号,或者录制语音后再加进噪音信号),对其进行采样和频谱分析,根据分析结果设计出一合适的滤波器滤除噪音信号。
完整的程序%写上标题%设计低通滤波器:[N,Wc]=buttord()%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc); %设计Butterworth低通滤波器[h,f]=freqz(); %求数字低通滤波器的频率响应figure(2); % 打开窗口2subplot(221); %图形显示分割窗口plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图title(巴氏低通滤波器'');grid; %绘制带网格的图像sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数subplot(222);plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形xlabel('时间 (seconds)');ylabel('时间按幅度');SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换w= %新信号角频率subplot(223);plot()); %绘制叠加函数S经过低通滤波器以后的频谱图title('低通滤波后的频谱图');%设计高通滤波器[N,Wc]=buttord()%估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器[h,f]=freqz(); %求数字高通滤波器的频率响应figure(3);subplot(221);plot()); %绘制Butterworth高通滤波器的幅频响应图title('巴氏高通滤波器');grid; %绘制带网格的图像sf=filter(); %叠加函数S经过高通滤波器以后的新函数subplot(222);plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形xlabel('Time(seconds)');ylabel('Time waveform');w; %新信号角频率subplot(223);plot()); %绘制叠加函数S经过高通滤波器以后的频谱图title('高通滤波后的频谱图');%设计带通滤波器[N,Wc]=buttord([)%估算得到Butterworth带通滤波器的最小阶数N和3dB截止频率Wc[a,b]=butter(N,Wc); %设计Butterworth带通滤波器[h,f]=freqz(); %求数字带通滤波器的频率响应figure(4);subplot(221);plot(f,abs(h)); %绘制Butterworth带通滤波器的幅频响应图title('butter bandpass filter');grid; %绘制带网格的图像sf=filter(a,b,s); %叠加函数S经过带通滤波器以后的新函数subplot(222);plot(t,sf); %绘制叠加函数S经过带通滤波器以后的时域图形xlabel('Time(seconds)');ylabel('Time waveform');SF=fft(); %对叠加函数S经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换w=( %新信号角频率subplot(223);plot(')); %绘制叠加函数S经过带通滤波器以后的频谱图title('带通滤波后的频谱图');。
MATLAB中的滤波器设计与应用指南

MATLAB中的滤波器设计与应用指南导言滤波器(Filter)是信号处理中必不可少的一部分,它可以用来改变信号的频率、相位或幅度特性。
在MATLAB中,有丰富的工具和函数可以用于滤波器设计和应用。
本文将深入探讨MATLAB中滤波器的设计原理、常用滤波器类型以及实际应用中的一些技巧。
一、滤波器基本原理滤波器的基本原理是根据输入信号的特性,通过去除或衰减不需要的频率成分,获得所需频率范围内信号的输出。
根据滤波器的特性,我们可以将其分为低通滤波器、高通滤波器、带通滤波器和带阻滤波器。
低通滤波器(Low-pass filter)允许通过低于截止频率的信号成分,而衰减高于截止频率的信号成分。
这种滤波器常用于去除高频噪声,保留低频信号,例如音频信号的处理。
高通滤波器(High-pass filter)允许通过高于截止频率的信号成分,而衰减低于截止频率的信号成分。
这种滤波器常用于去除低频噪声,保留高频信号,例如图像边缘检测。
带通滤波器(Band-pass filter)允许通过两个截止频率之间的信号成分,而衰减低于和高于这个频率范围的信号成分。
这种滤波器常用于提取特定频率范围内的信号,例如心电图中的心跳信号。
带阻滤波器(Band-stop filter)允许通过低于和高于两个截止频率之间的信号成分,而衰减位于这个频率范围内的信号成分。
这种滤波器常用于去除特定频率范围内的信号,例如降噪。
二、MATLAB中的滤波器设计方法1. IIR滤波器设计IIR(Infinite Impulse Response)滤波器是一种常用的滤波器类型,其特点是具有无限长的冲激响应。
在MATLAB中,我们可以使用`butter`、`cheby1`、`cheby2`、`ellip`等函数进行IIR滤波器的设计。
以`butter`函数为例,其用法如下:```matlabfs = 1000; % 采样频率fc = 100; % 截止频率[b, a] = butter(4, fc/(fs/2), 'low'); % 设计4阶低通滤波器```上述代码中,`b`和`a`分别是滤波器的分子和分母系数,`4`是滤波器的阶数,`fc/(fs/2)`是归一化截止频率,`'low'`表示低通滤波器。
matlab-空域和频域进行滤波处理

图像平滑处理的空域算法和频域分析1 技术要求对已知图像添加高斯白噪声,并分别用低通滤波器(频域法)和邻域平均法(空域法)对图像进行平滑处理(去噪处理),并分析比较两种方法处理的效果。
2 基本原理2.1 图像噪声噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。
实际获得的图像一般都因受到某种干扰而含有噪声。
引起噪声的原因有敏感元器件的内部噪声、相片底片上感光材料的颗粒、传输通道的干扰及量化噪声等。
噪声产生的原因决定了噪声的分布特性及它和图像信号的关系。
根据噪声和信号的关系可以将其分为两种形式:(1)加性噪声。
有的噪声与图像信号g(x,y)无关,在这种情况下,含噪图像f(x,y)可表示为f(x,y)=g(x,y)+n(x,y)(2)乘性噪声。
有的噪声与图像信号有关。
这又可以分为两种情况:一种是某像素处的噪声只与该像素的图像信号有关,另一种是某像点处的噪声与该像点及其邻域的图像信号有关,如果噪声与信号成正比,则含噪图像f(x,y)可表示为f(x,y)=g(x,y)+n(x,y)g(x,y)另外,还可以根据噪声服从的分布对其进行分类,这时可以分为高斯噪声、泊松噪声和颗粒噪声等。
如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声,一般为加性噪声。
2.2 图像平滑处理技术平滑技术主要用于平滑图像中的噪声。
平滑噪声在空间域中进行,其基本方法是求像素灰度的平均值或中值。
为了既平滑噪声又保护图像信号,也有一些改进的技术,比如在频域中运用低通滤波技术。
(1)空域法在空域中对图像进行平滑处理主要是邻域平均法。
这种方法的基本思想是用几个像素灰度的平均值来代替每个像素的灰度。
假定有一幅N*N 个像素的图像f(x,y),平滑处理后得到一幅图像g(x,y)。
g(x,y)由下式决定式中,x,y=0,1,2,…,N-1;S 是(x,y)点邻域中点的坐标的集合,但其中不包括(x,y)点;M 是集合内坐标点的总数。
应用Matlab对图像信号进行频谱分析及滤波

应用Matlab对图像信号进行频谱分析及滤波实验目的1.巩固所学的数字信号处理理论知识,理解信号的采集、处理、传输、显示和存储过程;2.综合运用专业及基础知识,解决实际工程技术问题的能力;3.学习资料的收集与整理,学会撰写课程设计报告。
实验环境1.微型电子计算机(PC);2.安装Windows 10操作系统,MATLAB7.0,Formatfactory,绘画板等开发工具。
实验原理在Matlab软件平台下,读取和显示彩色图像数据的相关函数和调用方法如下:实验内容和任务要求1.选取一张彩色图像(注意不能出现雷同,否则记为0分),提取图像的灰度值,并显示出灰度图像。
2.在图像中增加正弦噪声信号(自己设置几个频率的正弦信号),显示出加入噪声信号后的灰度图像。
3.给定滤波器的性能指标,分别设计FIR和IIR数字滤波器,并画出滤波器的幅频响应曲线。
4.用自己设计的滤波器对含噪声图像信号进行滤波,显示出滤波后的灰度图像。
5.对原始灰度图像、加入噪声信号的灰度图像和滤波后的灰度图像进行频谱分析和对比,分析信号的变化。
实验分析本实验要求用Matlab软件完成对图像信息的处理。
对于任务1,这里采用了一张jpg格式的张学友新专辑《醒着做梦》的封面图片,保存在Matlab的work文件夹下。
采用imread()函数读取,并利用rgb2gray()函数将其转化为二维的灰度图像(原始的数据类型是unit8型,需要将其转化为可用于计算的double类型),并利用imshow()函数将其显示出来;对于任务2,在加入噪声前,需要先将二维数据利用循环嵌套语句转化为一维数据,然后加入三个高频噪声,再利用循环嵌套语句转化为二维的数据,利用imshow()函数显示出来;对于任务3,这里分别设计了满足一定指标的IIR低通滤波器(巴特沃斯)和FIR低通滤波器(哈明窗)并对其相关指标进行了分析。
对于任务4,利用任务3中设计好的两个滤波器分别对加噪后的灰度图像进行滤波(filter()函数),并分别显示滤波后的灰度图像;对于任务5,利用快速傅里叶变换算法(FFT)对各阶段数据分别进行频谱分析,并将它们的频谱绘制在同一张图上作为对比。
应用MATLAB对信号进行频谱分析及滤波

应用MATLAB对信号进行频谱分析及滤波频谱分析和滤波是信号处理中常用的技术,可以帮助我们了解信号的频率特性并对信号进行去噪或增强。
MATLAB是一个强大的数学计算和工程仿真软件,提供了各种工具和函数用于频谱分析和滤波。
频谱分析是通过将信号在频域上进行分解来研究信号的频率特性。
MATLAB提供了几种进行频谱分析的函数,包括FFT(快速傅里叶变换)、periodogram和spectrogram等。
下面将以FFT为例,介绍如何使用MATLAB进行频谱分析。
首先,我们需要先生成一个信号用于频谱分析。
可以使用MATLAB提供的随机信号生成函数来生成一个特定频率和幅度的信号。
例如,可以使用以下代码生成一个包含两个频率成分的信号:```MATLABFs=1000;%采样率t=0:1/Fs:1;%时间向量,从0秒到1秒,采样率为Fsf1=10;%第一个频率成分f2=50;%第二个频率成分A1=1;%第一个频率成分的幅度A2=0.5;%第二个频率成分的幅度x = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t);```上述代码生成了一个采样率为1000Hz的信号,包含10Hz和50Hz两个频率的成分。
接下来,我们可以使用MATLAB的FFT函数对信号进行频谱分析,并将频谱绘制出来。
FFT函数将信号从时域转换到频域,并返回频谱幅度和频率信息。
以下是使用FFT函数对上述生成的信号进行频谱分析的代码:```MATLABN = length(x); % 信号长度X = abs(fft(x))/N; % 计算FFTf=(0:N-1)*(Fs/N);%计算频率坐标plot(f,X)xlabel('频率(Hz)')ylabel('幅度')title('信号频谱')```上述代码中,我们首先计算FFT并将结果除以信号长度,以得到正确的幅度值。
然后,我们计算频率坐标,并将频谱幅度与频率绘制出来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB图像处理的频率域滤波分析及应用作者:东红林于莲芝来源:《软件导刊》2017年第10期摘要:当前,数字图像处理已渗透到各行各业,图像滤波是数字图像处理的预处理,能对图像的一些特征加以有效改善。
除空间域滤波外,频率域滤波也具有重要价值和意义,用傅里叶级数或变换将图像转化的频域进行低通滤波、高通滤波等处理,再通过傅里叶反变换进行重建,不仅不会丢失任何信息,还可以完成空间域无法完成的处理。
关键词:图像滤波;傅里叶变换;低通滤波;高通滤波DOIDOI:10.11907/rjdk.171680中图分类号:TP317.4文献标识码:A文章编号:16727800(2017)0100205040引言数字图像处理已应用于社会生活的各个领域,特别是近几年火热的人工智能领域。
在实际中难免会遇到一些质量较差的图像,如图像模糊不清、有噪声等,因此在应用图像前,图像预处理尤为重要。
鉴于此,研究图像的频率域滤波具有重要意义。
频域滤波以图像的傅里叶变换为基础,通过对傅里叶谱和相角进行分析再修改傅里叶变换以达到特殊目的,常用的有高通滤波和低通滤波。
1基本概念1.1傅里叶级数及变换傅里叶指出无论函数有多复杂,只要它是周期性的,并且满足一定的数学条件,就一定可以用这种正弦和或者余弦和的形式表示。
甚至在有些情况下,非周期函数也可以用正弦和或者余弦和的形式表示[1]。
傅里叶级数:f(t)=∑∞n=-∞cnejzπnTt(1)其中,f(t)是具有周期的连续变量函数。
cn=1T∫T/2-T/2f(t)e-j2πnTtdt,(n=0,±1,±2,…)(2)傅里叶变换:F(u)=∫∞-∞f(t)e-j2πutdt(3)傅里叶反变换:f(t)=∫∞-∞F(u)ej2πutdu(4)卷积:f(t)Θh(t)=∫∞-∞f(τ)h(t-τ)dτ(5)其中,Θ表示卷积算子。
卷积定理:f(t)Θh(t)H(u)F(u)f(t)h(t)H(u)ΘF(u)(6)双箭头表示左右两端经过傅里叶变换的转换。
1.2二维(图像)傅里叶变换图像可以看成是一个特殊的二维信号,每一点的灰度级就是图像信号上这一点的“幅度”。
根据信号的概念,频率就是信号变化的快慢,指图像空间上灰度变换的快慢,也即图像的梯度变化,频率比较大的是图像中的“边界”或“边缘”。
举例来讲,如果一幅图整体变化不大(比如一张白纸),则它在频率域下低频成分很多,而高频成分极少;而如果是一幅道路上斑马线的图,则其高频成分比白纸多得多。
连续傅里叶变换:令f(t,z)是两个连续变量t和z的连续函数,则其二维傅里叶变换对有以下两个表达式:F(u,v)=∫∞-∞∫∞-∞f(t,z)e-j2π(ut+vz)dtdzf(t,z)=∫∞-∞∫∞-∞F(u,v)ej2π(ut+vz)dudv(7)其中,u和v是频率变量。
离散傅里叶变换(DFT)及反变换(IDFT):F(u,v)=∑M-1x=0∑N-1y=0f(x,y)e-j2π(ux/M+vy/N)f(x,y)=1MN∑M-1u=0∑N-1v=0F(u,v)e-j2π(ux/M+vy/N)(8)f(x,y)是大小为M×N的数字图像,u=1,2,3…M-1,v=1,2,3…N-1,x=1,2,3…M-1,y=1,2,3…N-1。
1.3卷积定理(二维)二维卷积表达式:f(x,y)Θh(x,y)=∑M-1m=0∑N-1n=0f(m,n)h(x-m,y-n)其中,x=1,2,3…M-1,y=1,2,3…N-1。
二维卷积定理[1]:f(x,y)Θh(x,y)F(u,v)H(u,v)f(x,y)h(x,y)F(u,v)ΘH(u,v)2图像频域分析一般情况下,二维DFT是复函数,可用极坐标表示:F(u,v)=F(u,v)ejΦ(u,v)(9)其中,幅度:F(u,v)=[R2(u,v)+I2(u,v)]1/2称为傅里叶谱(或频谱),而:Φ(u,v)=arctan[I(u,v)R(u,v)]称为相角。
由式(8)可得:F(0,0)=MN1MN∑M-1x=0∑N-1y=0f(x,y)=MNf-(x,y)其中,f-表示f的平均值,有F(0,0)=MNf-(x,y),也即变化最慢的频率分量(u=v=0)与图像的平均灰度成正比。
图1频域各部分信息展示如图1所示,与空间域一样,频率域的原点也在左上角,图1(b)是图1(a)经过DFT 之后的数据阵列,它由4个1/4周期组成,由二维傅里叶变换周期性性质决定[1],图1(c)是经过平移后的图像,它包含一个完整的位于中心的周期,图1(d)是为了便于观察进行(1+logF(u,v))处理后的图像,很好地显示了高频与低频在图中的分布。
由于比例常数MN通常很大,F(0,0)是谱的最大分量,F(0,0)有时称为变换的直流(dc)分量,反映图像的平均灰度级,低频反映图像灰度变化缓慢的部分(图1(a)中黑色部分),与白纸图片一样,几乎没有变化。
高频反映图像灰度变化迅速的部分(图1(a)中白色边缘),如边缘、噪声等。
图2频域各部分信息复原图像如图2所示,(b)是原图(a)相角的阵列信息,人眼看不出任何有价值的信息,(c)是仅使用相位信息(谱置为1)重建的图像,隐约地可以看到图片中女子的轮廓形状,(d)是仅使用傅里叶谱信息(相位信息置为0)重建的图像,在人眼看来图像几乎没有任何有价值的信息,(c)和(d)对比可以看出,相位信息支配着图像的轮廓或形状,谱信息支配着图像的灰度信息。
(e)和(f)分别是图2(a)的相角和图1(a)的谱信息重建的图像、图1(a)的相角和图2(a)的谱信息重建的图像,(e)中女人的形状支配了这幅图像,(f)中图1的矩形支配了这幅图像。
这两幅图再次证明,一幅图像傅里叶变换后的频域信息中,相位支配着图像形状,傅里叶谱信息主导着图像的灰度信息。
核心代码如下:f=fft2(img);%傅里叶变换r=real(f);%图像频域实部ii=imag(f);%图像频域虚部xiangjiao=atan2(ii,r);subplot(2,3,2),imshow(xiangjiao,[]),title('(b)相角');xiangwei=ifft2(exp(1i*xiangjiao));pu=ifft2(abs(f))3图像频率域滤波基础图像频率域滤波是通过修改图像的傅里叶变换后再计算其反变换得到处理后的图像。
对于一幅大小为M×N的数字图像f(x,y),则基本的滤波公式为:g(x,y)=-1[H(u,v)F(u,v)]其中,-1是IDFT,F(u,v)是输入图像f(x,y)的DFT,H(u,v)是滤波函数(也称滤波器),g(x,y)是滤波后的输出图像,且F、H、和g都与输入图像大小相同。
如上述分析,可以认为让频域中高频部分衰减而将低频部分通过的滤波器近似称作低通滤波器,它会使图像灰度变化剧烈部分的灰度值降低进而使整个图像的平均灰度值减小,灰度直方图的范围减小(最大、最小灰度值之差变小),最终使图像变得模糊。
同理,具有相反特性的滤波器近似称作高通滤波器,它将增强尖锐的细节,但会导致图像对比度降低,图3说明了这些效应。
图3不同滤波器及其滤波后的图像如图3所示,上一行是滤波器,下一行对应滤波器滤波后的图像,(c)中a=0.75,滤波器自身的高度仍然是1。
核心代码如下:s=fftshift(fft2(I));%将灰度图像的二维不连续Frourier变换的零频率成分移到频谱的中心for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);%点(i,j)到傅立叶变换中心的距离h=1-1*exp(-1/2*(d^2/d0^2));%GHPF滤波函数s(i,j)=h*s(i,j);%GHPF滤波后的频域表示endends=ifftshift(s);%对s进行反FFT移动s=uint8(real(ifft2(s)))频率域滤波算法总结如下:①对灰度图像进行二维不连续Frourier变换;②将变换后的零频率成分移到频谱中心;③计算点(i,j)到傅里叶变换中心的距离并得到GHPF滤波后的频域表示;④进行二维Fourier逆变换;⑤取复数的实部转化为无符号8位整数,得到处理后的图像。
4图像频率域滤波应用主要考虑理想滤波器、布特沃斯滤波器和高斯滤波器这3种低通滤波器的应用[23]。
这3种滤波器贯穿非常尖锐(理想)的滤波到非常平滑(高斯)的滤波。
布特沃斯滤波器内置了1个参数,它也称为滤波器的“阶数”,阶数越高越接近理想滤波器,阶数越低越接近高斯滤波器。
以下是3种滤波器的函数表达式[1,46]:(1)理想滤波器。
H(u,v)=1,D(u,v)≤D00,D(u,v)>D0(低通ILPF)H(u,v)=0,D(u,v)≤D01,D(u,v)>D0(高通IHPF)(2)布特沃斯滤波器。
H(u,v)=11+[D(u,v)/D0]2n(低通BLPF)H(u,v)=11+[D0/D(u,v)]2n(高通BHPF)(3)高斯滤波器。
H(u,v)=e\+\{-D\+2(u,v)/2D\+20\}(低通GLPF)H(u,v)=1-e\+\{-D\+2(u,v)/2D\+20\}(高通GHPF)上述数学表达式D0为截止频率,D(u,v)为频率域中点(u,v)到频率矩形中心的距离。
4.1平滑图像由上可知,一幅图像高频部分主要是边缘或突变的灰度转变[7](如噪声)。
为了平滑(模糊)图像,可在频率域对其高频部分进行衰减以达到目的,也即用低通滤波器实现。
图4不同滤波器去噪效果如图4所示,可以看出(b)、(c)、(d)3幅图在截止频率d0=20时都对(a)中的噪声起到了一定的平滑作用。
很明显,(b)中模糊程度和振铃现象较严重,而(c)和(d)去噪效果不是很明显,但(d)的边缘模糊程度较(c)稍大些,这是由于二阶BLPF滤波器在带通和带阻之间有较大的平滑过渡带,从而高频信号有部分保留。
相应地,边缘模糊程度稍微降低,可以有效减小理想低通滤波器中的“振铃”效应,而GLPF的傅里叶反变换也是高斯的,因此高斯滤波器就不具有“振铃”效应。
4.2锐化图像与平滑图像相反的是图像锐化,由于边缘和其它突变的灰度值与高频分量有关,因此图像锐化可以由高通滤波器完成,并且不会对高频分量的信息产生破坏。
图5不同滤波器锐化效果由图5可知,IHPF、BHPF、GHPF 3种高通滤波器对图5(a)的滤波效果依次增加,图像越来越平滑。
从图5(d)中可以看出,高斯高通滤波器对小狗的胡须也能进行较为清晰的展现。
5结语图像频域滤波主要是将时域中的图像转化到频率域中进行相应的滤波。
图像频率域滤波的关键是滤波器的选择,低频代表图像灰度值变化缓慢的部分、高频代表图像灰度值变化剧烈的部分、相位支配着图像形状、傅里叶谱信息主导着图像的灰度信息,可以据此设计不同的滤波器。