📄 fft.m
字号:
%频域平滑滤波 %高通滤波器
clear;
B=imread('test','jpeg'); %读入原始图像
info=imfinfo('test','jpeg'); %读入图像的信息数据
Longth=info.Width;
Width=info.Height;
%imshow(B),title('原始图像'); %显示原始图像
B=im2double(B); %将图像数据由’uint8’格式转换为’double’格式
for i=1:Width
for j=1:Longth
B(i,j)=(-1)^(i+j)*B(i,j); %并将各点数据乘以(x+y)^-1 以便 FFT 变换后的结果中低频数据处于图像中央
end
end
F=fft2(B); %用’fft2’函数对图像数据进行二维 FFT 变换,得到频率域图像数据
F2=6*log(1+(abs(F))); %计算频率域图像的幅值并进行对数变换
%figure,imshow(F2,[0,max(max(F2))]); %显示频率域图像
D0=input('请输入滤波半径\n D0=');
midx = Width/2;
midy = Longth/2;
%在频率图像上去除滤波半径以外的数据
for i=1:Width
for j=1:Longth
if(sqrt((i-midx)^2+(j-midy)^2) < D0)
F(i,j) = 0;
end
end
end
F2=6*log(1+(abs(F))); %计算处理后的频率域图像的幅值并进行对数变换
%figure,imshow(F2,[0,max(max(F2))]); %显示处理后频率域图像
F3=ifft2(F); %用’ifft2’函数对图像数据进行二维 FFT 逆变换
F3=real(F3); %用’real’函数取其实部
for i=1:Width
for j=1:Longth
F3(i,j)=(-1)^(i+j)*F3(i,j); %将图像数据各点数据乘以(-1)^(x+y)
end
end
figure,imshow(F3) %显示处理结果图像数据
%imwrite(F3,'test2_result230.jpg','jpeg'); %保存图像处理结果数据
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -