www.gusucode.com > 《matlab图像处理与界面编程宝典》秦襄培 编著,每章的MATLAB源代码程序 > 第18章/代码18-10.txt

    
I1=imread('eight.tif');                  % 读入图像
figure,imshow(I1);                       % 显示原始图像
f=double(I1);                            % 数据类型转换
g=fft2(f);                               % 图像傅立叶转换
g=fftshift(g);                           % 傅立叶变换平移
F2 = log(abs(g));                        % 对傅立叶变换结果取绝对值,然后取对数
figure,imshow(F2,[],'InitialMagnification','fit'); % 将计算后的矩阵用图像表示
colormap(jet);                           % 设置色彩索引图
colorbar                                 % 显示色彩索引条
[N1,N2]=size(g);                         % 傅立叶变换图像尺寸
n=2;                                     % 参数赋初始值
d0=5;                                    % 参数赋初始值
n1=fix(N1/2);                            % 数据圆整
n2=fix(N2/2);                            % 数据圆整
for i=1:N1                               % 遍历图像像素
for j=1:N2
         d=sqrt((i-n1)^2+(j-n2)^2);
         if d==0
             h=0;                       % 求h
         else
             h=1/(1+(d/d0)^(2*n));      % 求h
         end
         result(i,j)=h*g(i,j);          % 图像矩阵计算处理
end
end
F3 = log(abs(result));                   % 对傅立叶变换结果取绝对值,然后取对数
figure,imshow(F3,'InitialMagnification','fit'); % 将计算后的矩阵用图像表示
colormap(jet);                           % 设置色彩索引图
colorbar                                 % 显示色彩索引条
result=ifftshift(result);               % 傅立叶变换平移
X2=ifft2(result);                       % 图像傅立叶逆变换
X3=uint8(real(X2));                     % 数据类型转换
figure,imshow(X3)                       % 显示处理后的图像