⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft.m

📁 matlab傅立叶变化实现高通或者低通滤波
💻 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 + -