多媒体与数字图像处理第三次实验
图像变换与滤波器设计
一、实验目的
1. 了解傅立叶变换、离散余弦变换及Radon变换在图像处理中的应用 2. 了解Matlab线性滤波器的设计方法
二、实验内容
1. 傅立叶变换
A) 傅里叶变换基本操作
I = imread('at3_1m4_04.tif'); imshow(I); title('源图像'); J = fft2(I); figure, imshow(J); title('傅立叶变换');
%频移
JSh = fftshift(J);
figure, imshow(JSh); title('傅立叶变换频移');
%直接傅立叶反变换 Ji = ifft2(J);
figure, imshow(Ji/256); title('直接傅立叶变换');
%幅度
JA = abs(J); iJA = ifft2(JA);
figure, imshow(iJA/256); title('幅度傅立叶反变换');
%相位
JP = angle(J); iJP = ifft2(JP);
figure, imshow(abs(iJP)*100); title('相位傅立叶反变换');
B) 利用MATLAB软件实现数字图像傅立叶变换的程序 I=imread('rice.png'); %读入原图像文件 imshow(I); %显示原图像
fftI=fft2(I); %二维离散傅立叶变换 sfftI=fftshift(fftI); %直流分量移到频谱中心 RR= real(sfftI); %取傅立叶变换的实部
II= imag(sfftI); %取傅立叶变换的虚部 A=sqrt(RR.^2+II.^2);%计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;
%归一化 figure; %设定窗口
imshow(A); %显示原图像的频谱
C) 绘制一个二值图像矩阵,并将其傅立叶函数可视化。 f=zeros(30,30); f(5:24,13:17)=1;
imshow(f,'notruesize') F=fft2(f);
F2=log(abs(F));
figure,imshow(F2,[-1 5],'notruesize');colormap(jet); F=fft2(f,256,256); %零填充为256×256矩阵
figure,imshow(log(abs(F)),[-1 5],'notruesize');colormap(jet);
F2= ____ fftshift(F2)______; %将图像频谱中心由矩阵原点移至矩阵中心 figure,imshow(log(abs(F2)),[-1 5],'notruesize');colormap(jet);