[数图] 实验四 图像的滤波处理与图像空间变换
7、研究空间滤波方法和噪声特征间的关系,利用 spfilt 函数举例说明所得结论。
四、实验结果以及代码(分段)
a=imread('C:\PICTURE_YUWEI\Fig0704(Vase).tif.tif');
b=imread('C:\PICTURE_YUWEI\camera.tif');
%使用imadjust函数调整图像视觉效果
%使用imadjust函数调整图像视觉效果
a1=imadjust(a,[0 1],[0 1],0.5);%gamma=0.5<1时,图象变亮
a2=imadjust(a,[0 1],[0 1],1.5);%gamma=1.5>1时,图象变暗
a3=imadjust(a,[0 1],[1 0]);%负片
figure(1);
subplot(2,2,1),imshow(a);title('图1.1 原图');
subplot(2,2,2),imshow(a1);title('图1.2 gamma=0.5<1时,图象变亮');
subplot(2,2,3),imshow(a2);title('图1.3 gamma=1.5>1时,图象变暗');
subplot(2,2,4),imshow(a3);title('图1.4 负片');
%分别用 imnoise(),imnoise2(),imnoise3()函数生成含有噪声的图像
%分别用 imnoise(),imnoise2(),imnoise3()函数生成含有噪声的图像
b1=imnoise(a,'gaussian',0,0.01); %在图像中加入均值为0、方差为0.1的高斯白噪声
n1=imnoise2('gaussian',512,512,0,0.1);%产生均值为0、方差为0.1的白噪声
b2=im2double(a)+n1; %将原图转换为双精度,并且与噪声n1进行叠加
C=[6 32;-2 2];%冲击位置的坐标
A=[1 5];%1*k维向量包含振幅的冲击对
[n2 R S]=imnoise3(512,512,C,A);%产生一个大小为M*N的正弦噪声模型n2;R为傅里叶变换,S为正弦噪声模型的傅里叶的频谱
n_gray=mat2gray(n2);%将得到的数据换归化成gray数据
b3=n_gray+im2double(a);%将原图转换为双精度再与噪声进行叠加
figure(2);
subplot(2,2,1),imshow(a);title('图2.1 原图');
subplot(2,2,2),imshow(a);title('图2.2 加imnoise噪声后的图像');
subplot(2,2,3),imshow(b2);title('图2.3 加imnoise2噪声后的图像');
subplot(2,2,4),imshow(b3,[]);title('图2.4 加imnoise3周期噪声后的图像');
%噪声估计
(这一部分没有搞出实验结果,总是报错,I'm sooo blue。遂重新写了一个程序文件,把这部分代码单独放在该文件中。在本文里,把有关噪声估计的代码放在最后。 )
%加载图像cameraman.tif,图像分别加入gaussian, salt&pepper, speckle噪声
%加载图像cameraman.tif,图像分别加入gaussian, salt&pepper, speckle噪声
nn1=imnoise(b,'gaussian',0,0.09);%加入均值为0,方差为0.09的高斯噪声
nn2=imnoise(b,'salt & pepper',0.15);%加入密度为0.1的椒盐噪声
nn3=imnoise(b,'speckle',0.09);%加入方差为0.09的乘性噪声系数的斑点噪声
figure(3);
subplot(2,2,1);imshow(b);title('图3.1 原图');
subplot(2,2,2);imshow(nn1);title('图3.2 加高斯噪声的图');
subplot(2,2,3);imshow(nn2);title('图3.3 加椒盐噪声的图');
subplot(2,2,4);imshow(nn3);title('图3.4 加斑点噪声的图');
%分别用函数medfilt2,ordfilt2和wiener2去除所加的噪声。将处理后的图像与原图像比较。
%分别用函数medfilt2,ordfilt2和wiener2去除所加的噪声。将处理后的图像与原图像比较。
%1. 中值滤波
f11=medfilt2(b,[4 4],'symmetric');%使用4*4大小的中值滤波器进行滤波
f12=medfilt2(b,[8 8],'symmetric');%8*8
figure(4);
subplot(131);imshow(g);title('图5.1 噪声图');
subplot(132);imshow(f11);title('图5.2 4*4滤波器滤过的图');
subplot(133);imshow(f12);title('图5.3 8*8滤波器滤过的图');
%2. 顺序滤波
f21=ordfilt2(g,4,ones(4,4));%即在4*4的矩阵中将值按照由大到小排序,选取第五个值
f22=ordfilt2(g,9,ones(4,4));%第九个值
figure(5);
subplot(131);imshow(g);title('图6.1 噪声原图 ');
subplot(132);imshow(f21);title('图6.2 3*3的滤波器第四大');
subplot(133);imshow(f22);title('图6.3 3*3的滤波器第九大');
%3. 维纳滤波
f31=wiener2(g,[4 4]);%4*4滤波器滤波
f33=wiener2(g,[15 15]);%15*15滤波器
figure(6);
subplot(131);imshow(g);title('图7.1 原图');
subplot(132);imshow(f31);title('图7.2 4*4维纳滤波器滤过的图');
subplot(133);imshow(f33);title('图7.3 15*15维纳滤波器滤过的图');
设计陷波滤波器(Notch filter)
%设计陷波滤波器(Notch filter)
M=60;
N=60;%大小为60*60的滤波器
n=3;%滤波器的尖峰程度/衰减速度
D0=5;%滤波器截止频率
H=ones(60,60);%生成一个60*60矩阵
for u=1:60for v=1:60
H1(u,v)=1/(1+(D0^2/(sqrt((u-M/2-10)^2+(v-N/2-10)^2).*sqrt((u-M/2+10)^2+(v-N/2+10)^2)))^n); end
end %在给定的范围内生成两个中心为(10,10)(-10,-10)的高通滤波器
for u=1:60for v=1:60 H2(u,v)=1/(1+(D0^2/(sqrt((u-M/2+10)^2+(v-N/2-10)^2).*sqrt((u-M/2-10)^2+(v-N/2+10)^2)))^n); end
end%生成两个中心为(-10,10)(10,-10)的高通滤波器
H=H1.*H2;%将两个滤波器合成为一个有四个中心的高通滤波器J=ones(60,60);%生成一个矩阵
for u=1:60for v=1:60
J1(u,v)=1/(1+(D0^2/(sqrt((u-M/2-25)^2+(v-N/2-25)^2).*sqrt((u-M/2-25)^2+(v-N/2-10)^2)))^n); end%生成两个中心为(25,25)(25,10)的高通滤波器
end
for u=1:60for v=1:60
J2(u,v)=1/(1+(D0^2/(sqrt((u-M/2-0)^2+(v-N/2-10)^2).*sqrt((u-M/2-0)^2+(v-N/2-25)^2)))^n); end%合成
end
J=J1.*J2;%将生成的两个滤波器合成为一个带有四个高通滤波器的滤波器
figure(7);
subplot(1,2,1),mesh(H);title('图8.1 3*3的滤波器,3');
subplot(1,2,2),mesh(J);title('图8.2 3*3的滤波器,3');
%研究空间滤波方法和噪声特征间的关系,利用spfilt函数举例说明所得结论
%研究空间滤波方法和噪声特征间的关系,利用spfilt函数举例说明所得结论
addpath('C:\PICTURE_YUWEI\dipum_toolbox_2.0.2');%添加.p文件
g1=imnoise(b,'gaussian',0,0.09);%加入均值为0,方差为0.09的高斯噪声
figure(8);
subplot(1,2,1);imshow(g1);title('图9.1 被高斯噪声污染的图像');
g2=spfilt(g1,'atrimmed',3,3,2);%滤波
subplot(1,2,2);imshow(g2);title('图9.2 滤波后的图像');
图像的空间变换
%图像的空间变换
C=checkerboard(64,4,4);%在生成的图像中,每个正方形的大小是64*64
T1=[1 0.8 0;0 1 0;0 0 1];%x'=x+0.8y;y'=y
tform1=maketform('affine',T1);%根据T1创建tform,表示空间变化
C1=imtransform(C,tform1);%将原图进行反向映射
T2=[1 0 0;0.8 1 0;0 0 1];%x'=x;y'=y+0.8x
tform1=maketform('affine',T2);
C2=imtransform(C,tform1);
figure(9);
subplot(131);imshow(C);title('图10.1');
subplot(132);imshow(C2);title('图10.2');
subplot(133);imshow(C1);title('图10.3');
五、conclusions
(1)在使用imadjust函数调整视觉效果时,当gamma>1时,图像变亮;gamma<1时,图像变暗;gamma=1是,图像成为负片。
(2)学会了使用imnoise,imnoise2,imnoise3进行噪声的生成。使用imnoise的时候,是直接在图像中加入一定性质的噪声,而使用imnoise2时,是直接产生一个特定性质的噪声图像,他是双精度的,需要将原图转换为双精度后与之叠加,才能得到加入噪声的图像;使用imnoise3和imnoise2相似,不同的是,imnoise还需要将噪声图像转换为灰度图像,再与转换为双精度的原图相加才可以得到加了噪声后的图像。
(3)学会了使用函数生成特定性质的高斯、椒盐、斑点噪声。并学会使用中值medfilt2滤波、顺序ordfilt2滤波和维纳wiener2滤波将图像中的噪声去除。
(4)学会了如何设计陷波滤波器。需要定义它的像素大小、尖峰程度、截止频率,需要先生成两组包含两个有特定中心的高通滤波器,再将这两组滤波器合成一个包含四个高通滤波器的陷波滤波器。
(5)学会如何使用checkerboard函数生成棋盘格图像,使用maketform函数对其进行空间变换,使用imtransform函数对其进行反向映射。
(6)学会噪声估计的基本思路。即,首先生成一个特定的噪声图像,使用roipoly函数来选取一个ROI范围。分别画出这个范围的直方图,和噪声图像的直方图,并进行比较。可惜的是,matlab提示我输入参数太多,没有成功地完成噪声估计。
六、实验代码(全部)
%第一部分:除了噪声估计之外的其他部分代码。
a=imread('C:\PICTURE_YUWEI\Fig0704(Vase).tif.tif');
b=imread('C:\PICTURE_YUWEI\camera.tif');%使用imadjust函数调整图像视觉效果
a1=imadjust(a,[0 1],[0 1],0.5);%gamma=0.5<1时,图象变亮
a2=imadjust(a,[0 1],[0 1],1.5);%gamma=1.5>1时,图象变暗
a3=imadjust(a,[0 1],[1 0]);%负片
figure(1);
subplot(2,2,1),imshow(a);title('图1.1 原图');
subplot(2,2,2),imshow(a1);title('图1.2 gamma=0.5<1时,图象变亮');
subplot(2,2,3),imshow(a2);title('图1.3 gamma=1.5>1时,图象变暗');
subplot(2,2,4),imshow(a3);title('图1.4 负片');
%分别用 imnoise(),imnoise2(),imnoise3()函数生成含有噪声的图像
b1=imnoise(a,'gaussian',0,0.01); %在图像中加入均值为0、方差为0.1的高斯白噪声
n1=imnoise2('gaussian',512,512,0,0.1);%产生均值为0、方差为0.1的白噪声
b2=im2double(a)+n1; %将原图转换为双精度,并且与噪声n1进行叠加
C=[6 32;-2 2];%冲击位置的坐标
A=[1 5];%1*k维向量包含振幅的冲击对
[n2 R S]=imnoise3(512,512,C,A);%产生一个大小为M*N的正弦噪声模型n2;R为傅里叶变换,S为正弦噪声模型的傅里叶的频谱
n_gray=mat2gray(n2);%将得到的数据换归化成gray数据
b3=n_gray+im2double(a);%将原图转换为双精度再与噪声进行叠加
figure(2);
subplot(2,2,1),imshow(a);title('图2.1 原图');
subplot(2,2,2),imshow(a);title('图2.2 加imnoise噪声后的图像');
subplot(2,2,3),imshow(b2);title('图2.3 加imnoise2噪声后的图像');
subplot(2,2,4),imshow(b3,[]);title('图2.4 加imnoise3周期噪声后的图像');%加载图像cameraman.tif,图像分别加入gaussian, salt&pepper, speckle噪声
nn1=imnoise(b,'gaussian',0,0.09);%加入均值为0,方差为0.09的高斯噪声
nn2=imnoise(b,'salt & pepper',0.15);%加入密度为0.1的椒盐噪声
nn3=imnoise(b,'speckle',0.09);%加入方差为0.09的乘性噪声系数的斑点噪声
figure(3);
subplot(2,2,1);imshow(b);title('图3.1 原图');
subplot(2,2,2);imshow(nn1);title('图3.2 加高斯噪声的图');
subplot(2,2,3);imshow(nn2);title('图3.3 加椒盐噪声的图');
subplot(2,2,4);imshow(nn3);title('图3.4 加斑点噪声的图');%分别用函数medfilt2,ordfilt2和wiener2去除所加的噪声。将处理后的图像与原图像比较。
%1. 中值滤波
f11=medfilt2(b,[4 4],'symmetric');%使用4*4大小的中值滤波器进行滤波
f12=medfilt2(b,[8 8],'symmetric');%8*8
figure(4);
subplot(131);imshow(g);title('图5.1 噪声图');
subplot(132);imshow(f11);title('图5.2 4*4滤波器滤过的图');
subplot(133);imshow(f12);title('图5.3 8*8滤波器滤过的图');
%2. 顺序滤波
f21=ordfilt2(g,4,ones(4,4));%即在4*4的矩阵中将值按照由大到小排序,选取第五个值
f22=ordfilt2(g,9,ones(4,4));%第九个值
figure(5);
subplot(131);imshow(g);title('图6.1 噪声原图 ');
subplot(132);imshow(f21);title('图6.2 3*3的滤波器第四大');
subplot(133);imshow(f22);title('图6.3 3*3的滤波器第九大');
%3. 维纳滤波
f31=wiener2(g,[4 4]);%4*4滤波器滤波
f33=wiener2(g,[15 15]);%15*15滤波器
figure(6);
subplot(131);imshow(g);title('图7.1 原图');
subplot(132);imshow(f31);title('图7.2 4*4维纳滤波器滤过的图');
subplot(133);imshow(f33);title('图7.3 15*15维纳滤波器滤过的图');%设计陷波滤波器(Notch filter)
M=60;
N=60;%大小为60*60的滤波器
n=3;%滤波器的尖峰程度/衰减速度
D0=5;%滤波器截止频率
H=ones(60,60);%生成一个60*60矩阵
for u=1:60for v=1:60
H1(u,v)=1/(1+(D0^2/(sqrt((u-M/2-10)^2+(v-N/2-10)^2).*sqrt((u-M/2+10)^2+(v-N/2+10)^2)))^n); end
end %在给定的范围内生成两个中心为(10,10)(-10,-10)的高通滤波器
for u=1:60for v=1:60 H2(u,v)=1/(1+(D0^2/(sqrt((u-M/2+10)^2+(v-N/2-10)^2).*sqrt((u-M/2-10)^2+(v-N/2+10)^2)))^n); end
end%生成两个中心为(-10,10)(10,-10)的高通滤波器
H=H1.*H2;%将两个滤波器合成为一个有四个中心的高通滤波器J=ones(60,60);%生成一个矩阵
for u=1:60for v=1:60
J1(u,v)=1/(1+(D0^2/(sqrt((u-M/2-25)^2+(v-N/2-25)^2).*sqrt((u-M/2-25)^2+(v-N/2-10)^2)))^n); end%生成两个中心为(25,25)(25,10)的高通滤波器
end
for u=1:60for v=1:60
J2(u,v)=1/(1+(D0^2/(sqrt((u-M/2-0)^2+(v-N/2-10)^2).*sqrt((u-M/2-0)^2+(v-N/2-25)^2)))^n); end%合成
end
J=J1.*J2;%将生成的两个滤波器合成为一个带有四个高通滤波器的滤波器
figure(7);
subplot(1,2,1),mesh(H);title('图8.1 3*3的滤波器,3');
subplot(1,2,2),mesh(J);title('图8.2 3*3的滤波器,3');%研究空间滤波方法和噪声特征间的关系,利用spfilt函数举例说明所得结论
addpath('C:\PICTURE_YUWEI\dipum_toolbox_2.0.2');%添加.p文件
g1=imnoise(b,'gaussian',0,0.09);%加入均值为0,方差为0.09的高斯噪声
figure(8);
subplot(1,2,1);imshow(g1);title('图9.1 被高斯噪声污染的图像');
g2=spfilt(g1,'atrimmed',3,3,2);%滤波
subplot(1,2,2);imshow(g2);title('图9.2 滤波后的图像');%图像的空间变换
C=checkerboard(64,4,4);%在生成的图像中,每个正方形的大小是64*64
T1=[1 0.8 0;0 1 0;0 0 1];%x'=x+0.8y;y'=y
tform1=maketform('affine',T1);%根据T1创建tform,表示空间变化
C1=imtransform(C,tform1);%将原图进行反向映射
T2=[1 0 0;0.8 1 0;0 0 1];%x'=x;y'=y+0.8x
tform1=maketform('affine',T2);
C2=imtransform(C,tform1);
figure(9);
subplot(131);imshow(C);title('图10.1');
subplot(132);imshow(C2);title('图10.2');
subplot(133);imshow(C1);title('图10.3');
%第二部分:噪声估计部分的代码
c=imread('C:\PICTURE_YUWEI\Fig0704(Vase).tif.tif');
g=imnoise(c,'gaussian',0,0.1);%添加均值0 方差0.1的高斯噪声图像
B=roipoly(g);%在噪声图像中交互生成的ROI npix=sum(B(:));%求ROI区域的点数
figure(1);
subplot(2,2,1);
imshow(g);%显示被高斯噪声污染的图像
subplot(2,2,2);
imshow(B);%显示ROI区域 subplot(2,2,3);
h=imhist(c(B));%画出ROI区域的直方图
bar(h,1);
axis([0,256,0,1000]);
title('ROI区域的直方图');
[v,unv]=statmoments(h,2);%计算均值与方差;
subplot(2,2,4);
X=imnoise2('gaussian',npix,1,unv(1,1),sqrt(unv(1,2)));%生成与图片中有相同均值方差的高斯噪声
hist(X,140);%输出高斯噪声的直方图
axis([0,256,0,1000]);
[数图] 实验四 图像的滤波处理与图像空间变换相关推荐
- 数字图像处理实验四图像频域增强
一.实验目的 (1)了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学的图像增强的理论知识和相关算法. (2)熟练掌握低通.高通.带通.同态滤波器的使用方法,明确不同性质的滤波器对图像的影响 ...
- [数图] 实验八 形态学图像处理
一.实验目的 1.利用 MATLAB 研究二值形态学图像处理常用算法: 2.掌握 MATLAB 形态学图像处理基本操作函数的使用方法: 3.了解形态学的基本应用. 二.实验内容 1.编程实现二值图像的 ...
- [数图] 实验三 傅里叶变换及其应用
一. 实验目的 1. 掌握二维 DFT 变换及其物理意义 2. 掌握二维 DFT 变换的 MATLAB 程序 3. 空间滤波及频域滤波 二. 实验内容 学习使用函数 fft2, ifft2, abs, ...
- 实验四 图像频域平滑与锐化(Python实现)
一.实验目的与要求 了解频域变换过程,掌握频域变换特点 熟练掌握频域滤波中常用的平滑和锐化滤波器,能够对不同要求的图像进行滤波处理,体会并正确评价滤波效果,了解不同滤波方式的使用场合,能够从理论上作出 ...
- 数图实验1直方图均衡化c语言,直方图均衡化
直方图均衡化Tag内容描述: 1.直方图均衡化的matlab实现 海南大学课程论文课程名称:数字图像处理 题目名称:直方图均衡化的matlab实现 学 院:信息科学技术学院 专业班级:2010级计算机 ...
- 20计算机数电实验四--编译器的门级建模
一 实验过程 第一步:打开Quartus II新建一个工程文件路径如图(新建一个与项目名称相同的文件) 第二步:点击file 新建,对话框中选择 Verilog HDL File 第三步:输入代码 m ...
- opencv-python数图实验(三)膨胀腐蚀、击中
1.基础实验部分 1. 了解膨胀.腐蚀原理 2. 了解开运算.闭运算原理 3. 掌握膨胀.腐蚀函数的使用 4. 掌握开运算.闭运算函数的使用 实现效果 开运算.闭运算 腐蚀.膨胀 二.思考题 2.1: ...
- 数电实验四-触发器(Multisim和Basys3)
特别说明:该系列内容均是本人实验记录,无盗取侵权之嫌,仅供参考,请多动手实践! 一.实验目的 详见报告 二.实验仪器 1.数字电路实验箱 2.器材 三.实验内容详解 1.基本RS触发器逻辑功能的测试 ...
- 数字图像处理Matlab-图像的滤波处理与图像空间变换(附代码)
目录 1.Objectives: 2.Experiment Content: 3.Experiment Principle: 4.Experiment Steps Result and Conlusi ...
- java用十字链表实现无向图_实验四:图的实现与应用
20162317袁逸灏 实验四:图的实现与应用 实验内容 用 邻接矩阵 十字链表 实现无向图中的 添加结点 删除结点 添加边 删除边 size() isEmpty() 广度优先迭代器 深度优先迭代器 ...
最新文章
- 程序员提升编程效率的十五点建议!
- 专访阿里云MVP王俊杰:开发者的超能力是用技术让世界更美好
- Linux下FTP服务器搭建
- halcon知识:圆度和紧凑度
- payara 创建 集群_Apache Payara:让我们加密
- 机器学习之支持向量机(SVM)总结
- 如何解决Macbook pro无法写入U盘的问题
- data:image/png;base64
- 基于scikit-learn的随机森林调参实战
- 用Redis实现分布式锁 与 实现任务队列【转载】
- java创建集合有的不用泛型_Java如何创建泛型集合?
- DCMI 接口DMA 传送数据问题
- 智商情商哪个重要_你认为哪个更重要,情商还是智商?为什么?
- 【Proteus】动态数码管显示
- 服务器上的文件夹设置ftp,设置ftp服务器上传文件夹
- python中算术位移运算
- 如何学习自然语言处理:一本书和一门课
- C语言:计算阶乘和阶乘的和
- [Unity学习笔记:FPS游戏制作(1)]角色的移动,旋转与推进上升————(2021.6.13学习笔记)
- 路由器CFE-固件-NVRAM