(自留备忘)数字图像处理(二)
图像的傅里叶变换
使用示例
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');
- 运行效果
。。。