(自留备忘)数字图像处理(二)



图像的傅里叶变换

使用示例

clc;clear all;close all;
load imdemos saturn2;
figure,imshow(saturn2);
title('orginal image');
J=fft2(saturn2);
J(abs(J)<10)=0;
K=real(ifft2(J)/255);
figure,imshow(K,[]);
title('2-d inverse fft image');
  • 图片效果:

过程直观展示

%二维傅里叶
img_size=100;
x_step=1;
y_step=1;
image=zeros(img_size,img_size);
for x=x_step:x_step:x_step*img_size
    for y=y_step:y_step:y_step*img_size
        image(x/x_step,y/y_step)=sin(4*pi*x/img_size+4*pi*y/img_size);
    end
end
subplot(1,3,1);
imshow(image);
title('原图');
subplot(1,3,2);
image=im2double(image);
F_unshift=fft2(image);
F_unshift_abs=abs(F_unshift);
T=log(F_unshift_abs+1);
imshow(T); %
title('傅里叶变换后,未频移');
subplot(1,3,3);
F=fftshift(F_unshift);
F_abs=abs(F);
T=log(F_abs+1);
imshow(T); %
title('傅里叶变换后,频移后');
%频移要做的就是吧坐标原点移动到图像中心。
  • 图片效果:


图像的离散余弦变换

常用于图片压缩。


使用示例

%离散的余弦变换%
clc;clear all;close all;
RGB=imread('ning.jpg');
I=rgb2gray(RGB);
figure,imshow(I);
title('gray image');
J=dct2(I);
J(abs(J)<10)=0;
K=idct2(J)/255;
figure,imshow(K);
title('2-d inverse dct image');
  • 运行效果

。。。