实验三 图像的正交变换
一、实验目的
1. 1. 了解傅立叶变换、离散余弦变换及其在图像处理中的应用 2. 2. 了解Matlab线性滤波器的设计方法
二、实验内容
1. 1. 傅立叶变换
a) a) 绘制一个二值图像矩阵,并将其傅立叶函数可视化。 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(F); %将图像频谱中心由矩阵原点移至矩阵中心
figure,imshow(log(abs(F2)),[-1 5],'notruesize');colormap(jet);
b)
b) 利用傅立叶变换分析两幅图像的相关性,定位图像特征。读入图像‘text.tif’,抽取其中的字母‘a’。 bw=imread('text.tif'); a=bw(59:71,81:91); imshow(bw);
figure,imshow(a);
C=real(ifft2(fft2(bw).*fft2(rot90(a,2),256,256)));%求相关性 figure,imshow(C,[]); thresh=max(C(:));
figure,imshow(C>thresh-10) figure,imshow(C>thresh-15)
2. 2. 离散余弦变换(DCT)
a) a) 使用dct2对图像‘autumn.tif’进行DCT变换。 RGB=imread('autumn.tif'); imshow(RGB)
I=rgb2gray(RGB); %转换为灰度图像 figure,imshow(I) J=dct2(I);
figure,imshow(log(abs(J)),[]),colormap(jet(64));colorbar;
b)
b) 将上述DCT变换结果中绝对值小于10的系数舍弃,使用idct2重构图像并与原图像比较。
RGB=imread('autumn.tif'); I=rgb2gray(RGB); %转换为灰度图像 J=dct2(I);
figure,imshow(I) K=idct2(J);
figure,imshow(K,[0 255]) J(abs(J)<10)=0; %舍弃系数 K2=idct2(J);
figure,imshow(K2,[0 255])
c) c)利用DCT变换进行图像压缩。 I=imread('cameraman.tif'); I=im2double(I); T=dctmtx(8);
B=blkproc(I,[8,8],'P1*x*P2',T,T'); mask=[1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; B2=blkproc(B,[8 8],'P1.*x',mask); I2=blkproc(B2,[8 8],'P1*x*P2',T',T); imshow(I)
figure,imshow(I2)
3. 3.*Matlab线形滤波器设计
采用频率变换方式,通过一维最优波纹FIR滤波器创建二维FIR滤波器。 b=remez(10,[0 0.4 0.6 1],[1 1 0 0]); %阶次,频率向量,对应的理想幅频响应
h=ftrans2(b);
[H,w]=freqz(b,1,64,'whole'); colormap(jet(64))
plot(w/pi-1,fftshift(abs(H))); %使x轴取值0处对应曲线中心 figure,freqz2(h,[32 32])
相关推荐: