预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGE此资料由网络收集而来,如有侵权请告知上传者立即删除。资料共分享,我们负责传递知识。实验三,,图像频域变换及滤波实验三图像频域变换及滤波一、实验目的:1.理解傅立叶变换及离散余弦变换在图像处理中的应用2.掌握噪声模拟和空域图像滤波函数的使用方法3.掌握频域滤波的概念及方法4.利用MATLAB程序进行编程实现数字图像的傅立叶变换、DCT变换、空域及频域滤波二、实验内容1.傅立叶变换绘制一个二值图像矩阵,并将其傅立叶函数可视化。f=zeros(30,30);f(5:24,13:17)=1;figure;imshow(f)F=fft2(f);F2=log(abs(F));figure,imshow(F2,[]);F=fft2(f,256,256);%零填充为256×256矩阵figure,imshow(log(abs(F)));F2=fftshift(F);%将图像频谱中心由矩阵原点移至矩阵中心figure,imshow(log(abs(F2)));2.离散余弦变换(DCT)(1)使用dct2对图像‘lena.bmp’进行DCT变换。RGB=imread('lena.bmp');figure;imshow(RGB)I=rgb2gray(RGB);%转换为灰度图像figure,imshow(I)J=dct2(I);figure,imshow(log(abs(J)),[]);(2)将上述DCT变换结果中绝对值小于10的系数舍弃,使用idct2重构图像并与原图像比较。RGB=imread('lena.bmp');I=rgb2gray(RGB);%转换为灰度图像J=dct2(I);figure,imshow(I)K=idct2(J);figure,imshow(K,[0255])J(abs(J)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%编码部分:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clearall;I=imread('cameraman.tif');%打开图像文件I=im2double(I);%转换成双精度T=dctmtx(8);%构造离散余弦变换矩阵B=blkproc(I,[88],'P1*x*P2',T,T');%对图像进行DCT变换mask=[1111000011100000110000001000000000000000000000000000000000000000];B2=blkproc(B,[88],'P1.*x',mask);%保留关键系数I2=blkproc(B2,[88],'P1*x*P2',T',T);%做DCT逆变换subplot(121);imshow(I);title('原始图像');subplot(122);imshow(I2);title('DCT变换后图像');%将图像保存在CC2数组中,文件名为cameraman.mat*/%每个8*8块矩阵仅保留10个系数*/CC2=0;%CC2=double(CC2);[row,col]=size(B2);row_count=row/8;col_count=col/8;po=1;forr=0:row_count-1;forc=0:col_count-1CC2(po)=B2(r*8+1,c*8+1);CC2(po+1)=B2(r*8+1,c*8+2);CC2(po+2)=B2(r*8+1,c*8+3);CC2(po+3)=B2(r*8+1,c*8+4);CC2(po+4)=B2(r*8+2,c*8+1);CC2(po+5)=B2(r*8+2,c*8+2);CC2(po+6)=B2(r*8+2,c*8+3);CC2(po+7)=B2(r*8+3,c*8+1);CC2(po+8)=B2(r*8+3,c*8+2);CC2(po+9)=B2(r*8+4,c*8+1);po=po+10;end;end;CC2=CC2*10;CC2=int8(CC2);savecameraman.matCC2;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%解码部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clearall;I=imread('cameraman.tif');B2=double(zeros(256,256));loadcameraman.mat;T=dctmtx(8);[row,col]=size(B2);row_count=row/8;col_count=col/8;po=1;CC2=double(CC2);CC2=CC2/10;forr=0:row_count-1forc=0:col_count-1B2(r