实验三,,图像频域变换及滤波.docx

上传人:wj151****6093 文档编号:49005988 上传时间:2022-10-07 格式:DOCX 页数:7 大小:13.44KB
返回 下载 相关 举报
实验三,,图像频域变换及滤波.docx_第1页
第1页 / 共7页
实验三,,图像频域变换及滤波.docx_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《实验三,,图像频域变换及滤波.docx》由会员分享,可在线阅读,更多相关《实验三,,图像频域变换及滤波.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验三,图像频域变换及滤波试验三 图像频域变换及滤波 一、试验目的: 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);

2、%零填充为256256矩阵 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的系数舍弃,运用i

3、dct2重构图像并与原图像比较。RGB=imread(lena.bmp); 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) (3)利用DCT变换进行图像压缩。% %编码部分: % clear all; I=imread(cameraman.tif);%打开图像文件 I=im2double(I);%转换成双精度 T=dctmtx(8);%构造离散

4、余弦变换矩阵 B=blkproc(I,8 8,P1*x*P2,T,T);%对图像进行DCT变换 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);%做DCT逆变换 subplot(121); imshow(I); title(原始图像); su

5、bplot(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; for r=0:row_count-1; for c=0:col_count-1 CC2(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

6、(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); save cameraman.mat CC2; % %解码部分 % clear all; I=imread(cameraman.tif

7、); B2=double(zeros(256,256); load cameraman.mat; T=dctmtx(8); row,col=size(B2); row_count=row/8; col_count=col/8; po=1; CC2=double(CC2); CC2=CC2/10; for r=0:row_count-1 for c=0:col_count-1 B2(r*8+1,c*8+1)=CC2(po); B2(r*8+1,c*8+2)= CC2(po+1); B2(r*8+1,c*8+3)=CC2(po+2); B2(r*8+1,c*8+4)= CC2(po+3); B2(

8、r*8+2,c*8+1)=CC2(po+4); B2(r*8+2,c*8+2)=CC2(po+5); B2(r*8+2,c*8+3)=CC2(po+6); B2(r*8+3,c*8+1)=CC2(po+7); B2(r*8+3,c*8+2)=CC2(po+8); B2(r*8+4,c*8+1)=CC2(po+9); po=po+10; end; end; I2=blkproc(B2,8 8,P1*x*P2,T,T); subplot(121); imshow(I); title(原图像); subplot(122); imshow(I2); title(解码后的图像); 3. 噪声模拟及空域滤

9、波增加 (1)噪声模拟 利用函数imnoise给图像eight.tif分别添加高斯(gaussian)噪声和椒盐(salt pepper)噪声。I=imread(eight.tif); figure,imshow(I) I1=imnoise(I,gaussian,0,0.01); figure,imshow(I1) I2=imnoise(I,salt pepper); figure,imshow(I2) (2)空域滤波增加 <i> 对上述噪声图像进行均值滤波和中值滤波,比较滤波效果。I=imread(eight.tif); J=imnoise(I,salt pepper,0.02)

10、; figure,imshow(J) K1=medfilt2(J,3 3); % 3*3中值滤波 figure,imshow(K1) K2=filter2(fspecial(average,5),J)/255; figure,imshow(K2) <ii> 总结均值滤波和中值滤波的特点及运用场合。均值滤波器是一种最常用的线性低通平滑滤波器。可抑制图像中的噪声,但同时也使图像变得模糊 中值滤波器是一种最常用的非线性平滑滤波器。可消退图像中孤立的噪声点,又可产生较少的模糊 <iii> 对图像 rice.png 采纳laplacian高通滤波器进行锐化滤波。I=imread(

11、rice.png); figure,imshow(I) h=fspecial(laplacian); % fspecial用于建立预定义的滤波算子 I2=filter2(h,I); figure,imshow(I2) 4. 频域滤波 (1)频域低通滤波 图像中的边缘和噪声都对应图像傅立叶变换中的高频部分,如要在频域中消弱其影响,设法减弱这部分频率的重量。选择合适的H(u,v)以得到消弱F(u,v)高频重量的G(u,v)。所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓,与空域中的平滑方法类似。典型的低通滤波器:(见教材) 志向低通滤波器 Butterworth低通滤波器 % Butterwo

12、rth低通滤波器实现平滑 I=imread(lena256.bmp); %读入原图像文件 figure(1); imshow(I); %设定窗口,显示原图像 J1=imnoise(I,salt pepper); % 叠加椒盐噪声 figure(2); imshow(J1); F = double(J1); % 数据类型转换,MATLAB不支持图像的无符号整型的计算 G = fft2(F); % 傅立叶变换 G= fftshift(G); M,N=size(G); nn = 2; % 二阶巴特沃斯(Butterworth)低通滤波器 d0 = 50; m = fix(M/2); n = fix(

13、N/2); for i = 1 : M for j = 1 : N d = sqrt(i-m)2+(j-n)2); h = 1/(1+ (d/d0)(2*nn); % 计算低通滤波器传递函数,教材P261,式:8-49 result(i,j) = h * G(i,j); end; end; result = ifftshift(result); J2 = ifft2(result); J3 = uint8(real(J2); figure,imshow(J3,); % 显示滤波处理后的图像 (2)频域高通滤波 % Butterworth高通滤波器实现平滑 I=imread(lena256.bm

14、p); %读入原图像文件 figure(1); imshow(I); %设定窗口,显示原图像 J1=imnoise(I,gaussian,0.001); % 叠加高斯噪声 figure(2); imshow(J1); F = double(J1); % 数据类型转换,MATLAB不支持图像的无符号整型的计算 G = fft2(F); % 傅立叶变换 G= fftshift(G); M,N=size(G); nn = 2; % 二阶巴特沃斯(Butterworth)高通滤波器 d0 = 50; m = fix(M/2); n = fix(N/2); for i = 1 : M for j = 1

15、 : N d = sqrt(i-m)2+(j-n)2); h = 1/(1+ 0.414*(d0/d)(2*nn); % 计算高通滤波器传递函数,教材P265,式:8-56 result(i,j) = h * G(i,j); end; end; result = ifftshift(result); J2 = ifft2(result); J3 = uint8(real(J2); figure,imshow(J3,); % 显示滤波处理后的图像 三、要求及思索题(此部分内容作为试验报告 “五、试验总结与体会”中的一部分) 1. 描述试验的基本步骤,用数据和图片给出各个步骤中取得的试验结果并进行必要的探讨。2. 必需包括原始图像及其计算处理后的图像以及相应的说明。3. 对“2.(3)利用DCT变换进行图像压缩” 中的mask模板矩阵进行修改,分别增加、削减其中的1的个数,例如增加到15个,削减到6个(留意mask模板矩阵的修改),进行试验,分析比对结果, 4.对“4.(1)频域低通滤波”部分的噪声函数进行修改,改为“系数0.01的gaussian”噪声,对“4. (2)频域高通滤波”部分的噪声函数进行修改,改为“ saltpepper类型”噪声,进行试验比对,分析巴特沃斯(Butterworth)高通滤波及低通滤波的特点。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁