图像中带通滤波器和带阻滤波器的关系
先给出一张图像,来说明带阻滤波器和带通滤波器的关系。
由上图可以看出这张图片的中低成份占的比较多,而高频成份比较少。因为白色的像素都集中在中点和离中心的附近。对于频谱图,由白色代表某一频率点有响应,也就是原图含有该频率的成份。可以举个例子,假如我对一张图片加入椒盐噪声,这个椒盐噪声属于全频谱的。可以得到下图示
很明显图像被污染了,频谱图出现了很多白色点,就代表这张图片在低频成份很多的情况下,又额外的增加了高频中频低频成份,如上第三图就出现了凹凸不平山峰一样。
解释完频率后来看带通滤波器和带阻滤波器。
再分别给出它们傅里叶反变换图
图4为带阻滤波器的三维视图,图5只含中频信号的图像,图6只含高频和低频信号。读者可以自己举例子来进行高频和低频的分析,一样的原理。
只给出带阻滤波器的相关代码
-
I=imread('C:\Users\hlx\Desktop\1.jpg'); %读入原图像文件
-
I2=rgb2gray(I);
-
I1=double(I2);
-
fftI=fft2(I1); % 二维离散傅立叶变换
-
sfftI=fftshift(fftI); % 直流分量移到频谱中心
-
[N1,N2]=size(sfftI);
-
n=2;
-
d0=10;
-
d1=200;
-
n1=floor(N1/2);
-
n2=floor(N2/2);
-
for i=1:N1
-
for j=1:N2
-
d=sqrt((i-n1)^2+(j-n2)^2);
-
if d<=d0 || d>=d1
-
h=0;
-
else
-
h=1;
-
end
-
result(i,j)=h*sfftI(i,j);
-
end
-
end
-
sfftI=result;
-
RR=real(sfftI); % 取傅立叶变换的实部
-
II=imag(sfftI); % 取傅立叶变换的虚部
-
A=sqrt(RR.^2+II.^2); % 计算频谱幅值
-
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*255; %归一化
-
imshow(A);