数字图像处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称:图像分割
所属课程:《数字图像处理》
实验类型:验证性实验
实验类别:专业
实验学时:3
一、实验目的
1.使用MatLab 软件进行图像的分割。
2.通过实验体会一些主要的分割算子对图像处理的效果。
3.探索各种因素对分割效果的影响。
二、实验原理及过程
1.实验背景
在对图像的研究和应用中,人们往往只对图像中的某些部分感兴趣,这些部分通常称为目标或者前景(其他不感兴趣的部分称为背景)。为了分析和辨识目标,需要将它们从背景中提取出来。从图像中提取目标的技术和过程就称为图像分割。图像分割是图像处理中一类重要的研究内容,其目的是把图像分成一些有意义、互不重叠的区域,分割结果的优劣将直接影响图像的后续处理。
作为图像分析、理解的基础,图像分割在诸多领域具有广泛的应用,例如基于内容的
图像检索、机器视觉、文字识别、指纹识别,以及生物医学图像处理方面的病变检测和识别,军事图像处理方面的地形匹配与目标制导,工业图像处理方面的无损探伤和非接触式检测等。另外,图像分割技术也已用于图像压缩编码,近年来发展起来的基于内容的视频编码(如MPEG-4)同样离不开图像分割的结果。
2.实验设计指标
✧能够自行评价各主要算子在无噪声条件下和噪声条件下的分割性能。
✧能够掌握分割条件(阈值等)的选择。
✧完成规定图像的处理并要求正确评价处理结果
✧能够从理论上作出合理的解释。
3.实验要求(设计要求)
(1)使用Roberts 算子的图像分割实验
调入并显示图像;使用Roberts 算子对图像进行边缘检测处理; Roberts 算子为一对模板:
相应的矩阵为:rh = [0 1;-1 0]; rv = [1 0;0 -1];这里的rh 为水平Roberts 算子,rv为垂直Roberts 算子。分别显示处理后的水平边界和垂直边界检测结果;用“欧几里德距离”和“街区距离”方式计算梯度的模,并显示检测结果;对于检测结果进行二值化处理,并显示处理结果;
注意:
✧先做检测结果的直方图,参考直方图中灰度的分布尝试确定阈值。
✧应反复调节阈值的大小,直至二值化的效果最为满意为止。
✧分别显示处理后的水平边界和垂直边界检测结果。
✧将处理结果转化为“白底黑线条”的方式。
✧给图像加上零均值的高斯噪声;对于噪声图像重复步骤b~f。
(2)使用Prewitt 算子的图像分割实验
使用Prewitt 算子进行内容(1)中的全部步骤。
(3)使用Sobel 算子的图像分割实验
使用Sobel 算子进行内容(1)中的全部步骤。
(4)使用LoG (拉普拉斯-高斯)算子的图像分割实验
使用LoG (拉普拉斯-高斯)算子进行内容(1)中的全部步骤。提示:
✧处理后可以直接显示处理结果,无须另外计算梯度的模。
✧注意调节噪声的强度以及LoG (拉普拉斯-高斯)算子的参数,观察处理结果。
(5) 打印全部结果并进行小组讨论。
4.实验(设计)仪器设备和材料清单
✧PC计算机
✧MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox)
✧实验所需要的图片
5.实验源代码:
✧Roberts 算子、Prewitt 算子、Sobel 算子的图像分割实验
I=imread('F:\matlab作业\1.jpg'); %读取图像
I1=im2double(I); %将彩图序列变成双精度
I2=rgb2gray(I1); %将彩色图变成灰色图
[thr, sorh, keepapp]=ddencmp('den','wv',I2);
I3=wdencmp('gbl',I2,'sym4',2,thr,sorh,keepapp); %小波除噪I4=medfilt2(I3,[9 9]); %中值滤波
I5=imresize(I4,0.2,'bicubic'); %图像大小
BW1=edge(I5,'sobel'); %sobel图像边缘提取
BW2=edge(I5,'roberts'); %roberts图像边缘提取
BW3=edge(I5,'prewitt'); %prewitt图像边缘提取
BW4=edge(I5,'log'); %log图像边缘提取
BW5=edge(I5,'canny'); %canny图像边缘提取
h=fspecial('gaussian',5); %高斯滤波
BW6=edge(I5,'zerocross',[ ],h); %zerocross图像边缘提取
figure;
subplot(1,3,1); %图划分为一行三幅图,第一幅图
imshow(I2); %绘图
figure;
subplot(1,3,1);
imshow(BW1);
title('Sobel算子');
subplot(1,3,2);
imshow(BW2);
title('Roberts算子');
subplot(1,3,3);
imshow(BW3);
title('Prewitt算子');
拉普拉斯-高斯算子的图像分割实验:
I = imread('F:\matlab作业\1.jpg'); figure(1);
imshow(I);
title('Original Image');
H = fspecial('unsharp');
sharpened = imfilter(I,H,'replicate'); figure(2);
imshow(sharpened);
title('Sharpened Image');
6.调试及结果测试