微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
本节目录
一、频率滤波
1、频率滤波概念
2、频率滤波步骤
二、理想低通滤波器
1、理想低通滤波器概念
2、理想低通滤波器的Matlab仿真
三、高斯低通滤波器
1、高斯低通滤波器概念
2、高斯低通滤波器的Matlab仿真
四、高斯高通滤波器
1、高斯高通滤波器概念
2、高斯高通滤波器的Matlab仿真
五、拉普拉斯滤波器
1、拉普拉斯滤波器概念
2、拉普拉斯滤波器的Matlab仿真
六、高斯带阻滤波器
1、高斯带阻滤波器概念
2、高斯带阻滤波器的Matlab仿真
七、Matlab仿真源码
1、频域滤波imfreqfilter源码
2、理想低通滤波器ideal_filter源码
3、高斯低通滤波器imgaussflpf源码
4、高斯高通滤波器imgaussfhpf源码
5、拉普拉斯滤波器imlapfilter源码
6、高斯带阻滤波器imgaussfbrf源码
7、周期噪声imtnoise源码
8、理想低通滤波器的Matlab仿真源码
9、高斯低通滤波器的Matlab仿真源码
10、高斯高通滤波器的Matlab仿真源码
11、拉普拉斯滤波器的Matlab仿真源码
12、高斯带阻滤波器的Matlab仿真源码
本节内容
一、频率滤波
1、频率滤波概念
傅里叶变换将图像从空间域变换到频域;傅里叶反变换将图像的频谱逆变换为空间域图像。通过利用空间域图像与频谱之间的对应关系,将空间域卷积滤波变换为频域滤波,再将频率滤波处理后的图像反变换为空间域,从而达到图像增强的目的。
卷积定理:两个二维连续函数在空间域中的卷积,可由其相应的两个傅里叶变换乘积的反变换得到,同时,在频域中的卷积,可由空间域中乘积的傅里叶变换得到。
F(u,v)和H(u,v)分别为f(x,y)和h(x,y)的傅里叶变换,,*表示卷积<=>表示傅里叶变换对,左侧表达式可通过傅里叶正变换得到右侧表达式,右侧表达式可通过傅里叶反变换得到左侧表达式。
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、频率滤波步骤
①计算原始图像f(x,y)的DTF,得到F(u,v);
②将频谱F(u,v)的零频点移动到频谱图的中心位置;
③计算滤波器函数H(u,v)与F(u,v)的乘积G(u,v);
④将频谱G(u,v)的零频点移动到频谱图的中心位置;
⑤计算上一步中傅里叶反变换g(x,y);
⑥取g(x,y)的实部作为最终滤波的结果图像。
零相移滤波器,滤波过程中只关心实数,H的每个实数元素分别乘以F中对于位置的复数元素,F中元素的实部和虚部等比例的变化,不会改变F的相位谱。
二、理想低通滤波器
1、理想低通滤波器概念
在频谱中,低频主要对应图像在平滑区域的总体灰度级分布,高频对应图像的细节部分,比如噪声和边缘。图像平滑通过衰减图像频谱中的高频部分来实现。
衰减高频成分的方法,在一个称为“截止频率”的位置“截断”所有的高频成分,将图像频谱中所有高于这一截止频率的频谱成分设置为0,低于截止频率的成分保持不变。
理想低通滤波器的表达式:
M表示图像宽度,N表示图像高度,D0表示理想低通滤波器的截止频率,滤波器的频率域原点在频谱图像的中心处,在以截止频率为半径的圆形区域之内的滤镜元素值全为1,该圆之外的滤镜元素全部为0。
2、理想低通滤波器的Matlab仿真
自定义滤波器函数imfreqfilter,用于对灰度图像的频率滤波。
自定义理想低通滤波器函数ideal_filter。
三、高斯低通滤波器
1、高斯低通滤波器概念
高斯低通滤波器的频率域二维形式:
当高斯曲线的标准差σ增大时,H(u)的图像变得更宽,而h(x)的图像变得更窄和更高。也就是频率域滤波器越窄,滤除的高频成分越多,图像就越平滑。在空间域,对应滤波器越宽,响应的卷积模板越平坦,平滑效果也越明显。
频域二维高斯滤镜的曲面便是:
2、高斯低通滤波器的Matlab仿真
自定义高斯低通滤波器函数imgaussflpf。
四、高斯高通滤波器
1、高斯高通滤波器概念
图像锐化可以通过衰减图像频谱中的低频成分来实现,空间域图像锐化与频域高通滤波之间的关系。
高斯高通滤波器,滤波操作滤除低频成分,其表达式及曲线特性:
2、高斯高通滤波器的Matlab仿真
自定义高斯高通滤波器函数imgaussfhpf。
五、拉普拉斯滤波器
1、拉普拉斯滤波器概念
2、拉普拉斯滤波器的Matlab仿真
自定义拉普拉斯滤波器函数imlapfilter。
六、高斯带阻滤波器
1、高斯带阻滤波器概念
D0是阻塞频带中心频率到频率原点的距离,W是阻塞频带宽度,D是点(u,v)到频率原点的距离。
2、高斯带阻滤波器的Matlab仿真
自定义高斯带阻滤波器函数imgaussfbrf和周期噪声imtnoise。
七、Matlab仿真源码
1、频域滤波imfreqfilter源码
function image_out=imfreqfilter(image_in,ff)
%imfreqfilter 对灰度图像进行频域滤波
%image_in 输入的灰度图像
%ff应用的与图像等大的频移滤波
%RGB图像
if(ndims(image_in)==3)&&(size(image_in,3)==3)
image_in=rgb2gray(image_in);
end
if(size(image_in)~=size(ff))
msg1=sprintf('%s:滤镜与原图像不等大,检测输入',mfilename);
msg2=sprintf('%s:滤波操作已经取消',mfilename);
eid=sprintf('Images:%s:Image Size Not Equal',mfilename);
error(eid,'%s %s',msg1,msg2);
end
%快速傅里叶变换
f=fft2(image_in);
%移动原点
s=fftshift(f);
%应用滤镜及反变换
image_out=s.*ff;
image_out=ifft2(ifftshift(image_out));
%模值
image_out=abs(image_out);
%归一化显示
image_out=image_out/max(image_out(:));
2、理想低通滤波器ideal_filter源码
function image_out=ideal_filter(imagn_in,freq)
%ideal_filter 理想的频率低通滤波器
%imagn_in 输入的灰度图像
%freq 低通滤波器的截止频率
%image_out 理想低通滤波器的输出值
[M,N]=size(imagn_in);
image_out=ones(M,N);
for i=1:M
for j=1:N
if(sqrt((i-M/2)^2+(j-N/2)^2)>freq)
image_out(i,j)=0;
end
end
end
3、高斯低通滤波器imgaussflpf源码
function image_out=imgaussflpf(image_in,sigma)
%imgaussflpf 构造频率高斯低通滤波器
%image_in 输入的灰度图像
%sigma 高斯函数的标准差参数
[M,N]=size(image_in);
image_out=ones(M,N);
for i=1:M
for j=1:N
image_out(i,j)=exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);
end
end
4、高斯高通滤波器imgaussfhpf源码
function image_out=imgaussfhpf(image_in,sigma)
%imgaussfhpf 构造频率高斯高通滤波器
%image_in 输入的灰度图像
%sigma 高斯函数的标准差参数
[M,N]=size(image_in);
image_out=ones(M,N);
for i=1:M
for j=1:N
image_out(i,j)=1-exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);
end
end
5、拉普拉斯滤波器imlapfilter源码
function image_out=imlapfilter(image_in)
%imlapfilter 构造频率拉普拉斯滤波器
%image_in 输入的灰度图像
%sigma 高斯函数的标准差参数
[M,N]=size(image_in);
image_out=ones(M,N);
for i=1:M
for j=1:N
image_out(i,j)=-((i-M/2)^2+(j-N/2)^2);
end
end
6、高斯带阻滤波器imgaussfbrf源码
function image_out=imgaussfbrf(image_in,freq,width)
%imgaussfbrf 构造频率高斯带阻滤波器
%image_in 输入的灰度图像
%freq 阻带中心频率
%width 阻带宽度
[M,N]=size(image_in);
image_out=ones(M,N);
for i=1:M
for j=1:N
image_out(i,j)=1-exp(-0.5*((((i-M/2)^2+(j-N/2)^2)-freq^2)/(sqrt(i.^2+j^2)*width)^2));
end
end
7、周期噪声imtnoise源码
function image_out=imtnoise(image_in,A,f)
%imtnoise 添加周期噪声
%A 噪声幅度
%f 噪声频率
%image_in 输入的灰度图像
[M,N]=size(image_in);
image_out=ones(M,N);
for i=1:M
for j=1:N
image_out(i,j)=image_out(i,j)+A*sin(f*i)+A*sin(f*j);
end
end
8、理想低通滤波器的Matlab仿真源码
clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
I1=rgb2gray(I);
%生成滤镜
ff1=ideal_filter(I1,20);
ff2=ideal_filter(I1,40);
ff3=ideal_filter(I1,60);
%应用滤镜
B1=imfreqfilter(I1,ff1);
B2=imfreqfilter(I1,ff2);
B3=imfreqfilter(I1,ff3);
%计算fft并显示
temp=log(1+abs(fftshift(fft2(I1))));
temp1=log(1+abs(fftshift(fft2(B1))));
temp2=log(1+abs(fftshift(fft2(B2))));
temp3=log(1+abs(fftshift(fft2(B3))));
subplot(2,2,1);
imshow(I1);
title('原图');
subplot(2,2,2);
imshow(B1);
title('20理想低通滤波图像B1');
subplot(2,2,3);
imshow(B2);
title('40理想低通滤波图像B2');
subplot(2,2,4);
imshow(B3);
title('60理想低通滤波图像B3');
9、高斯低通滤波器的Matlab仿真源码
clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
I1=rgb2gray(I);
%生成滤镜
ff1=imgaussflpf(I1,20);
ff2=imgaussflpf(I1,40);
ff3=imgaussflpf(I1,60);
%应用滤镜
B1=imfreqfilter(I1,ff1);
B2=imfreqfilter(I1,ff2);
B3=imfreqfilter(I1,ff3);
%计算fft并显示
temp=log(1+abs(fftshift(fft2(I1))));
temp1=log(1+abs(fftshift(fft2(B1))));
temp2=log(1+abs(fftshift(fft2(B2))));
temp3=log(1+abs(fftshift(fft2(B3))));
subplot(2,2,1);
imshow(I1);
title('原图');
subplot(2,2,2);
imshow(B1);
title('20高斯低通滤波图像B1');
subplot(2,2,3);
imshow(B2);
title('40高斯低通滤波图像B2');
subplot(2,2,4);
imshow(B3);
title('60高斯低通滤波图像B3');
10、高斯高通滤波器的Matlab仿真源码
clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
I1=rgb2gray(I);
%生成滤镜
ff1=imgaussfhpf(I1,20);
ff2=imgaussfhpf(I1,40);
ff3=imgaussfhpf(I1,60);
%应用滤镜
B1=imfreqfilter(I1,ff1);
B2=imfreqfilter(I1,ff2);
B3=imfreqfilter(I1,ff3);
%计算fft并显示
temp=log(1+abs(fftshift(fft2(I1))));
temp1=log(1+abs(fftshift(fft2(B1))));
temp2=log(1+abs(fftshift(fft2(B2))));
temp3=log(1+abs(fftshift(fft2(B3))));
subplot(2,2,1);
imshow(I1);
title('原图');
subplot(2,2,2);
imshow(B1);
title('20高斯高通滤波图像B1');
subplot(2,2,3);
imshow(B2);
title('40高斯高通滤波图像B2');
subplot(2,2,4);
imshow(B3);
title('60高斯高通滤波图像B3');
11、拉普拉斯滤波器的Matlab仿真源码
clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
I1=rgb2gray(I);
%生成滤镜
ff1=imlapfilter(I1);
%应用滤镜
B1=imfreqfilter(I1,ff1);
%计算fft并显示
temp=log(1+abs(fftshift(fft2(I1))));
subplot(2,1,1);
imshow(I1);
title('原图');
subplot(2,1,2);
imshow(B1);
title('拉普拉斯滤波图像B1');
12、高斯带阻滤波器的Matlab仿真源码
clear all;
clc;
close all;
%读取图像
I=imread('leno_old.png');
I1=rgb2gray(I);
%添加噪声
B1=imtnoise(I1,20,20);
%生成滤镜
ff=imgaussfbrf(I1,50,5);
%应用滤镜
B2=imfreqfilter(I1,ff);
subplot(2,2,1);
imshow(I1);
title('原图');
subplot(2,2,2);
imshow(B1);
title('噪声图像B1');
subplot(2,2,3);
imshow(I1);
title('原图');
subplot(2,2,4);
imshow(B2);
title('高斯带阻滤波图像B2');