实验名称:图像分割
所属课程:《数字图像处理》
实验类型:验证性实验
实验类别:专业
实验学时: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. 调试及结果测试
三、思考题
1. 评价一下Roberts 算子、Prewitt 算子、Sobel 算子对于噪声条件下边
界检测的性能。
2. 为什么LoG梯度检测算子的处理结果不需要象Prewitt 等算子那样进行
幅度组合?
3. 实验中所使用的四种算子所得到的边界有什么异同?
四、参考资料
[1] 《数字图像处理与机器视觉》,张铮等,人民邮电出版社(第二版)。
[2] RAFAEL C.GONZALEZ等著, 阮秋琦等译. 数字图像处理MATLAB版(第
二版).电子工业出版社, 2014-01-01.