数字图像处理实验三.docx
- 文档编号:10862236
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:13
- 大小:381.96KB
数字图像处理实验三.docx
《数字图像处理实验三.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验三.docx(13页珍藏版)》请在冰豆网上搜索。
数字图像处理实验三
大学实验报告
学院:
计算机科学与技术专业:
信息安全班级:
131
姓名
学号
实验组
实验时间
2016/5/27
指导教师
成绩
实验项目名称
图像的分割
实验目的
1、理解图像边缘提取的基本概念;
2、熟悉进行边缘提取的基本方法;
3、掌握用MATLAB语言进行图像边缘提取的方法
4、用形态学运算实现灰度图像的噪声平滑和图像边缘提取。
实验要求
1、理解图像边缘提取的基本概念;
2、熟悉进行边缘提取的基本方法;
3、掌握用MATLAB语言进行图像边缘提取的方法
4、用形态学运算实现灰度图像的噪声平滑和图像边缘提取。
实验原理
图像理解是图像处理的一个重要分支,他研究为完成某一任务需要从图像中提取哪些有用的信息,以及如何利用这些信息解释图像。
边缘检测技术对于处理数字图像非常重要,因为边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。
在图像中,边界表明一个特征区域的终结和另一个特征区域的开始,边界所分开区域的内部特征或属性是一致的,而不同的区域内部的特征或属性是不同的,边缘检测正是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度,颜色或者纹理特征。
边缘检测实际上就是检测图像特征发生变化的位置。
由于噪声和模糊的存在,检测到的边界可能会变宽或在某些点处发生间断,因此,边界检测包括两个基本内容:
首先抽取出反映灰度变化的边缘点,然后剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。
1.基于导数算子的边缘检测
边缘检测的方法大多数是基于方向导数掩模求卷积的方法。
导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值比较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。
一阶导数
与
是最简单的导数算子,它们分别求出了灰度在x和y方向上的变化率,而方向α上的灰度变化率可以用下面式子计算:
对于数字图像,应该采用差分运算代替求导,相对应的一阶差分为:
方向差分为:
函数f在某点的方向导数取得最大值的方向是
,方向导数的最大值是
称为梯度模。
利用梯度模算子来检测边缘是一种很好的方法,它不仅具有位移不变性,还具有各向同性。
为了运算简便,实际中采用梯度模的近似形式,如:
、
及
等。
另外,还有一些常用的算子,如Roberts算子和Sobel算子。
Roberts算子的表达式为:
Sobel算子的表达式为:
X方向算子:
y方向算子:
其中,由于Sobel算子是滤波算子的形式,用于提取边缘。
我们可以利用快速卷积函数,简单有效,因此应用很广泛。
拉普拉斯高斯(LoG)算法是一种二阶边缘检测方法。
它通过寻找图像灰度值中二阶微分中的过零点(ZeroCrossing)来检测边缘点。
其原理为,灰度级突变形成的边缘经过微分算子形成一个单峰函数,峰值位置对应边缘点;对单峰函数进行微分,则峰值处的微分值为0,峰值两侧符号相反,而原先的极值点对应于二阶微分中的过零点,通过检测过零点即可将图像的边缘提取出来。
MATLAB的图像处理工具箱中提供的edge函数可以实现检测边缘的功能,其语法格式如下:
BW=edge(I,‘sobel’)
BW=edge(I,‘sobel’,direction)
BW=edge(I,‘roberts’)
BW=edge(I,‘log’,)
这里BW=edge(I,‘sobel’)采用Sobel算子进行边缘检测。
BW=edge(I,‘sobel’,direction)可以指定算子方向,即:
direction=‘horizontal’,为水平方向;
direction=‘vertical’,为垂直方向;
direction=‘both’,为水平和垂直两个方向。
BW=edge(I,‘roberts’)和BW=edge(I,‘log’)分别为用Roberts算子和拉普拉斯高斯算子进行边缘检测。
2.形态学操作
数学形态学图像处理的基本思想是利用一个称作结构元素的“探针”收集图像的信息。
当探针在图像中不断移动时,便可考察图像各个部分间的相互关系,从而了解图像各个部分的结构特征。
作为探针的结构元素,可直接携带知识(形态、大小、以及灰度和色度信息)来探测所研究图像的结构特点。
2.1二值图像数学形态学
二值形态学中的运算对象是集合,通常给出一个图像集合和一个结构元素集合,利用结构元素对图像进行操作。
其基本运算有四种:
腐蚀、膨胀、开运算和闭运算。
基于这些基本运算和组合来进行图像形状和结构的分析及处理。
如果A是图像集合,B是结构元素(B本身也是一个图像集合),形态学运算将使用B对A进行操作。
结构元素往往比图像小得多。
●膨胀和腐蚀
膨胀是在二值图像中“加长”或“变粗”的操作。
这种特殊的方式和变粗的程度由一个称为结构元素的集合控制。
数学上,膨胀定义为集合运算。
A被B膨胀,记为A⊕B,定义为
腐蚀“收缩”或“细化”二值图像中的对象。
像在膨胀中一样,收缩的方式和程度由一个结构元素控制。
腐蚀的数学定义与膨胀相似,A被B腐蚀记为A
B,定义为
●开运算和闭运算
在图像处理的实际应用中,更多地以各种组合的形式来使用膨胀和腐蚀,它们可以级连结合使用。
膨胀后再腐蚀,或者腐蚀后再膨胀,通常不能恢复成原来图像(目标),而是产生一种新的形态变换,这就是开运算和闭运算。
A被B的形态学开运算可以记做AoB,这种运算是A被B腐蚀后再用B来膨胀腐蚀结果:
A被B的形态学闭运算记做A·B,它是先膨胀再腐蚀的结果:
当处理二值图像时,采用上述的形态学变换组合,主要应用于提取某一区域的边界线、图像边缘轮廓、物体骨架特征和目标识别等众多的实际应用。
2.2灰度图像的数学形态学
二值形态学基本运算可以扩展到灰度图像。
并由此建立一些基本的灰度形态学运算法则。
与二值数学形态学不同的是,灰度形态学运算中的操作对象不再看成是集合而看作是灰度数字图像。
设f(x,y)是输入图像,b(x,y)是结构元素(它本身也是一个子图像)。
下面简单介绍基本的灰度形态学运算。
●膨胀和腐蚀
对于灰度图像而言,膨胀和腐蚀是以像素邻域的最大值和最小值来定义的。
使用结构元素b对f的灰度膨胀记为f⊕b。
通常灰度膨胀使用平坦的结构元素来执行,因此灰度膨胀公式可简化为
因此,平坦的灰度膨胀是一个局部最大值算子,其中的最大值取自由Db的形状所确定的一系列像素邻域。
其中Db是b的定义域。
与膨胀一样,灰度腐蚀通常使用平坦的结构元素来执行,则灰度腐蚀公式可简化为
因此,平坦的灰度腐蚀是一个局部最小值算子,其中的最小值取自由Db的形状确定的一系列像素邻域。
腐蚀和膨胀可以组合使用,以获得各种效果。
例如,从膨胀后的图像中减去腐蚀过的图像可以产生一个“形态学梯度”,它是检测图像中局部灰度级变化的一种度量。
●开运算和闭运算
灰度图像中开运算和闭运算的表达式与二值图像的相应表达式的形式相同。
分别记为fob和f·b。
由于开运算可以去除比结构元素更小的明亮细节,闭运算可以去除比结构元素更小的暗色细节,所以它们经常组合在一起用来平滑图像并去除噪声。
2.3MATLAB函数
用于图像形态学变换的MATLAB函数有:
●构造结构元素函数Strel
SE=strel(shape,parameters)
创建由指定形状shape对应的结构元素。
其中shape的种类一般有'arbitrary'、'pair'、'diamond'、'disk'、'rectangle'、'line'、'square',参数parameters一般控制SE的大小。
●膨胀函数Imdilate
IM2=imdilate(IM,SE)
膨胀灰度图像或二值图像,返回膨胀图像M2。
变量SE是一个结构元素或者一个结构元素的数组,其是通过strel函数返回的。
●腐蚀函数Imerode
IM2=imerode(IM,SE)
腐蚀灰度图像或二值图像IM,返回腐蚀图像IM2。
参数SE是函数strel返回的一个结构元素体或是结构元素体阵列。
●开运算函数Imopen
IM2=imopen(IM,SE)
用结构元素SE实现灰度图像或二值图像的IM的形态开运算。
SE可以是单个结构元素对象或者结构元素对象数组。
开运算一般能平滑图像的轮廓,消弱狭窄的部分,去掉细的突出
●闭运算函数imclose
IM2=imclose(IM,SE)
用结构元素SE实现灰度图像或二值图像的IM的形态闭运算。
SE可以是单个结构元素对象或者结构元素对象数组。
闭运算也能平滑图像的轮廓,但与开运算相反,它一般融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。
实验仪器
Pc一台,MATLAB7.0
实验步骤
(1)读取汽车牌照图像,并显示。
(2)分别用Roberts、Sobel和拉普拉斯高斯算子对图像进行边缘检测。
比较三种算子处理的结果。
(3)用不同方向(‘水平’、‘垂直’、‘水平和垂直’)的Sobel算子对图像进行边缘检测。
比较三种情况的结果。
(4)将使用Roberts算子进行边缘检测后的汽车牌照图像按照不同大小的矩形结构元素进行腐蚀、膨胀、开、闭运算。
比较不同的结果。
实验内容
实验数据
clc;
closeall
clearall
I=imread('room.tif');
subplot(2,2,1),imshow(I);title('原图')
BW1=edge(I,'roberts');
subplot(2,2,2),imshow(BW1),title('用Roberts算子')
BW2=edge(I,'sobel');
subplot(2,2,3),imshow(BW2),title('用sobel算子')
BW3=edge(I,'sobel');
subplot(2,2,4),imshow(BW3),title('用拉普拉斯算子')
clc;
closeall
clearall
I=imread('room.tif');
subplot(2,2,1)
imshow(I);title('原图')
BW2=edge(I,'sobel',[],'horizontal');
subplot(2,2,2)
imshow(BW2),title('用sobel算子为水平方向')
BW3=edge(I,'sobel',[],'vertical');
subplot(2,2,3)
imshow(BW3),title('用sobel算子为垂直方向')
BW4=edge(I,'sobel',[],'both');
subplot(2,2,4)
imshow(BW4),title('用sobel算子为水平和垂直方向')
clc;
closeall
clearall
I=imread('room.tif');
subplot(2,2,1),imshow(I);title('原图')
BW2=edge(I,'sobel');
SE=strel('ball',3,3);
IM2=imdilate(I,SE);
subplot(2,2,2),imshow(IM2),title('膨胀函数Imdilate');
clc;
closeall
clearall
I=imread('room.tif');
subplot(2,2,1),imshow(I);title('原图')
BW2=edge(I,'sobel');
SE=strel('line',3,3);
IM2=imerode(I,SE);
subplot(2,2,2),imshow(IM2),title('腐蚀函数');
clc;
closeall
clearall
I=imread('room.tif');
subplot(2,2,1),imshow(I);title('原图')
BW2=edge(I,'sobel');
SE=strel('disk',3);
IM2=imopen(I,SE);
subplot(2,2,2),imshow(IM2),title('开运算');
clc;
closeall
clearall
I=imread('room.tif');
subplot(2,2,1),imshow(I);title('原图')
BW2=edge(I,'sobel');
SE=strel('ball',3,5);
IM2=imclose(I,SE);
subplot(2,2,2),imshow(IM2),title('闭运算');
I=imread('room.tif');
BW1=edge(I,'prewitt');
imshow(BW1);
实验总结
通过这次实验我们理解图像边缘提取的基本概念,熟悉进行边缘提取的基本方法掌握用MATLAB语言进行图像边缘提取的方法和用形态学运算实现灰度图像的噪声平滑和图像边缘提取。
指导教师意见
签名:
年月日
注:
各学院可根据教学需要对以上栏木进行增减。
表格内容可根据内容扩充。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 实验