北科大数字图像处理实验报告.docx
《北科大数字图像处理实验报告.docx》由会员分享,可在线阅读,更多相关《北科大数字图像处理实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
北科大数字图像处理实验报告
北京科技大学计算机与通信工程学院
实验报告
实验名称:
《数字图像处理》课程实验
学生姓名:
徐松松
专业:
计算机科学与技术
班级:
计1304
学号:
41345053
指导教师:
王志明
实验成绩:
实验时间:
2016年12月15日
、实验目的与实验要求
1、实验目的
1.熟悉图像高斯、脉冲等噪声的特点,以及其对图像的影响;
2.理解图像去噪算法原理,并能编程实现基本的图像去噪算法,达到改善图像质量的效果,并能对算法性能进行简单的评价。
3.理解图像分割算法的原理,并能编程实现基本的灰度图像分割算法,并显示图像分割结果。
2、实验要求
1.对于给定的两幅噪声图像(test1.jpg,test2.jpg),设计或选择至少两种图像滤波算法对图像进行去噪。
2.利用给出的参考图像(org1.jpg,org2.jpg),对不同算法进行性能分析比较。
3.对于给定的两幅数字图像(test.jpg,test4.jpg),将其转换为灰度图像,设计或选择至少两种图像分割算法对图像进行分割,用适当的方式显示分割结果,并对不同算法进行性能分析比较。
二、实验设备(环境)及要求
1.Mac/Windows计算机
2.Matlab编程环境。
三、实验内容与步骤
1、实验1
(1)实验内容
1.对于给定的两幅噪声图像(test1.jpg,test2.jpg),设计或选择至少两种图像滤波算法对图像进行去噪。
2.利用给出的参考图像(org1.jpg,org2.jpg),对不同算法进行性能分析比较。
(2)主要步骤
1.打开Matlab编程环境;
2.利用’imread'函数读入包含噪声的原始图像数据;
3.利用’imshow'函数显示所读入的图像数据;
结果显示:
屮」■ffUserstxss►Documents►MATLAB
»Irinread(1testl.jpg');
»imshow(I);
»F^imreadi*test2.jpd1H犍逞便用impact(line349}交件"testljpd-不存在”
»F=ijnread(*test2.jp^1aaimshowfF);
扛»
4.编码实现图像滤波算法,对原始噪声图像进行滤波处理分别用均值滤波,中值滤波和维纳滤波如下:
代码:
J=imread('test1.jpg');
卷积运算
'average',4),J)/255;
%采用二维中值滤波函数进行滤波
K1=wiener2(J,[44]);%对噪声图像进行二维自适应维纳滤波
subplot(2,2,1);imshow(J);
title('加噪图像');
subplot(2,2,2);imshow(K2);
title('均值滤波后的图像’);
subplot(2,2,3);imshow(K);
title('中值滤波后的图像’);
subplot(2,2,4);imshow(K1);
title('维纳滤波后的图像’);
imwrite(K2,'均值滤波图像.jpg','quality',100);
imwrite(K,'中值滤波图像.jpg','quality',100);
imwrite(K1,'维纳滤波图像.jpg','quality',100);
处理结果如下:
细节如下:
原始图像
均值滤波
中值滤波维纳滤波:
对图像二的处理结果:
原始图像均值滤波
中值滤波
维纳滤波
);
);
5.计算滤波后图像与原图的差异(如PSNR、MSE等);
J=imread('test1.jpg'
J2=imread('org1.jpg'%h=ones(4,4)/16;
%B=conv2(J,h);
diff2=(double(J2)-(M))A2;
mse2=mean(diff2(:
));
psnr2=double(10*log10(255A2/mse2));
结果:
对于test1.jpg
nols*_).mcalculate!
.muntitled?
-+
*
1A
1
-J=iirrejd('te5tl.jpg'};
U
ans
0
2
-Ji=imread{Jpgk>:
dilT
512x512douWt
3
材4}/IE;躬严莖4则的全1般绘
d
diff1
512x512double
4
5iB=conv2(J,hl
diff2
512x512double
5
K2=f鼻时沁〕tJ)/255;血値滤聂樓扳」
I
512x512uinrS
6
Km申踊理注函欧对声干1
zd
」2
512x512umtS
7
说计行扫怡庄箱启医悻的PM5EN門NR
_LI
K
512x512uintS
S
diff1^(double(J2K2)}.
ZL
Kl
512x512utnlS
&
-m!
sel=oicani{diffl(s));
LL
KZ
5cfoutjie
10
P5nrl=d(]uljlel10*logl0C255*2/m5ell);
工
M
占丄2x512double
msel
L639Lt+O4
11
吊计J:
中茁:
it泊毛『:
赛项宥拦
12
-H=dauble(K);
mse2
25L-4171
13
-diff2-(double(J2)-(H)
XIpsnirl
5.9&49
mse2=mean(diff2(I));
卫p^nr2
24.U64
15■p5nr2adouble(l»*logl04255A2/mse2));
16
均值滤波:
MSE=1.6391e+04,PSNR=5.9848
中值滤波:
MSE=251.4171,PSNR=24.1269
对于test2.jpg
2
蜿IB韶-/Users/xst^DcKUmen
“X
noisel.n-caJculatel.fHjntitkc2+
~■_一L-.
A
也
1
-J=Jl・「e3cK'test2-jpg');
lJ
Xj乙砒
0
2
J2=Imread(1arg2.jpgM;
i.diff
512nS12double
1
%h=ones(斗,4)八召珂卜生4詁的全燈蛋
jdiffl
4
%B>conv20(h);%卷壮运绘
.iChf口
512x512
5
K2=filter2(tspecial('iverage.4}Jj/155;
^_|J
512x512umtB
6
K=BCdf丄l说口)注舉用二:
fit血厭鮭敷E品仃It"缨哦品诫再干!
rdj2
5i.2)t512utn(8
7
%汁舄旳佰蕊菠启團僚的PHSE与PShR
iK
512x512uintS
-dlfn-{double(J2)-(K2}k*2;
iKl
51^x517uintS
9
-msei=™e5n(tflffl(;));
iK2
512x512doubk
IB
psnrl-tdw
512x512double
11
*汁屛申傍血浪后的寻项指斬
田ra^el
1.72S;&+04
12
M=dauble(K);
□m^e2
31.1728
13
diff2*rdouble(J21-(H)}.*2f
EP^nrl
5,7550
-(diff2(:
});
I:
p$nr2
33.1931
15
16
psnrl-doubleU0Hofllfit2S5^2/ffSc2));
均值滤波:
MSE=1.7382e+04,PSNR=5.7550
中值滤波:
MSE=31.1728,PSNR=33.1931
实验2
(1)实验内容
对图像进行分割并显示。
(2)主要步骤
1.打开Matlab编程环境。
2.利用‘imread'函数读入包含噪声的原始图像数据。
>>匸imread('test3.jpg');
3.利用‘imshow'函数显示所读入的图像数据。
>>imshow(l);
命令行窗口
X-Lx
»I=imread('test3»jpg1);
»whosI
NameSize
Bytes
Class
Attributes
I321x481x3
463203
uintS
»imshowtI);
文件镰辑查看插入工*桌面闔口帯助■
□aHteo®
结果为:
5.编码实现图像分割,对原始图像进行区域分割,并得到各个区域的标号
1.利用双分法
先给出原图的直方图,再定出阈值(门限)T,一般取两个峰值间的谷值。
代码:
I=imread('test3.jpg');
subplot(1,2,1);
i=rgb2gray(l);
imhist(i);
title('原始图像直方图’);
thread=75/255;
subplot(1,2,2);
i3=im2bw(i,thread);
imshow(i3);
title('分隔结果’);
从直方图看出两个峰值的谷值大概为75,取作阀值
分隔结果:
分割结実
图片二处理:
代码:
l=imread('test4.jpg');subplot(1,2,1);
i=rgb2gray(l);
imhist(i);
title('原始图像直方图’);thread=50/255;
subplot(1,2,2);
i3=im2bw(i,thread);
imshow(i3);
title('分隔结果’);
阀值定为50,处理结果如下:
分劃结異
分隔方法二:
分水岭分隔法
基本思想:
1•把图像看作一个三维拓扑地形图
2•集水盆:
局部极小点及其影响区域
3•分水岭:
集水盆的边界
4.目标:
在图像中找出不同的集水盆和分水岭
代码:
F=imread('test3.jpg');
f=rgb2gray(F);
subplot(2,2,1);
imshow(f);
title('原始灰度图像’);f=double(f);
));
));
hv=fspecial('prewitt');hh=hv.';
gv=abs(imfilter(f,hv,'replicate'
gh=abs(imfilter(f,hh,'replicate'
g=sqrt(gv.A2+gh.A2);
L=watershed(g);
wr=L==0;
subplot(2,2,2);imshow(wr);
title('分水岭');
f(wr)=225;
subplot(2,2,3);
imshow(uint8(f));
title('分隔结果’);rm=imregionalmin(g);subplot(2,2,4);
imshow(rm);
title('局部极小值’);
结果:
分水靜
局部极小值
分隔结果
局部极小值
四:
实验结果与分析
结果符合预期,分隔图像用双分法结果较好。
对于测试图片用中值滤波处理效果较好。
五:
结论(讨论)
1、实验结论
了解了数字图像的基本处理方法,掌握了几种分隔图像方法和去噪滤波方法。
2、讨论
对不同的图像需要判断用哪种处理方法为好。
六、教师评审
教师评语
实验成绩
签名:
日期: