matlab用罗伯特算法提取边缘,Matlab在图像边缘提取中的应用(图文)

论文导读:图像采用Sobel算子、Roberts算子、Prewitt算子、LOG算子、Canny算子与零交叉方法等进行边缘提取,仿真如图3、4、5。从上图中可以看出,Sobel算子对灰度渐变的图像处理效果较好,但是对变化不大的部位处理效果差以及边缘定位不准确。

关键词:图像处理,边缘提取,MATLAB

1、引言

1980年,MATLAB的首创者Cleve Moler博士在New Mexico大学教线性代数课程时,看到了用高级语言编程解决工程计算问题的诸多不便,因而构思开发了MATLAB软件。该软件主要包括Simulink以及功能各异的工具箱组成,以矩阵运算为基础,把计算、可视化、程序设计融合到一个简单易用的交互式工作环境中。可以实现工程计算、算法研究、符号运算、建模和仿真、原型开发、数据分析和可视化、科学和工程绘图、应用程序设计等功能。同时,为帮助科学研究,还推出一系列帮助科学分析的工具箱,如图像处理、信号处理、小波、神经网络以及通信等多个不同领域的专用工具箱,极大地方便了不同领域的科学研究工作。

图像处理在MATLAB中的应用是由一系列支持图像处理的操作函数组成,如几何操作、区域操作、块操作、滤波、变换、图像分割、图像边缘提取、图像增强等,为便于应用,在该软件中形成图像处理工具包。图像处理工具包的函数种类很多:图像显示、图像文件输入与输出、几何操作、像素值统计、图像分析与增强、图像滤波、滤波器、图像变换、图像类型转换等。该工具包与其它一样,使用者可以根据需要自行编写函数[1,2]。

2、 图像边缘提取理论

2.1 图像边缘

图像边缘对图像识别和计算机分析十分有用,边缘能勾画出目标物体,使观察者—目了然;边缘蕴含了丰富的内在信息,是图像识别中重要的图像特征之一。从本质上说,图像边缘是图像局部特性不连续的反映,它标志着一个区域的终结和另一个区域的开始[3]。它存在于目标与背景、目标与目标、区域与区域、基元与基元之间,因此它是图像分割所依赖的重要特征,也是纹理特征的重要信息源和形状特征的基础,而图像的纹理形状特征的提取又常常要依赖于图像分割。图像边缘提取也是图像匹配的基础,因为它是位置的标志,对灰度的变化敏感,可作为匹配的特征点。

2.2图像边缘分类

图像边缘有方向和幅度两个特性。根据图像的边缘特性可分为阶跃型、房顶型和凸缘型。阶跃型边缘常常对应目标的深度或反射边界;而后两种反映表面法线方向的不连续。对于阶跃型边缘,二阶方向导数在边缘处呈零交叉;而后两种,二阶方向导数在边缘处取极值。论文发表。

2.3边缘的提取

为了计算方便起见,通常选择一阶和二阶导数来检测边界,利用求导方法可以很方便地检测到灰度值的不连续效果。常用的边缘提取算子[4]如下:

(1)罗伯特(Robert)算子

Robert算子是一种利用局部差分算子寻找边缘的算子,如图1。该算子对具有陡峭的低噪声的图像效果较好。论文发表。

1

0

0

1

0

-1

-1

0

图1 Robert 算子

(2)Sobel算子和Prewitt算子

为在检测边缘的同时减少噪声的影响,Prewitt从加大边缘检测算子的模板大小出发,由2×2扩大到3×3来计算差分算子,如图2(a)。采用Prewitt算子不仅能检测边缘点,而且能抑制噪声的影响。Sobel在Prewitt算子的基础上,采用带权的方法计算差分,对应的模板如图2(b)所示。该算子不仅能检测边缘点,而且能进一步抑制噪声影响,但检测的边缘较宽。

1

0

-1

1

1

1

1

2

1

1

0

-1

1

0

-1

0

0

0

0

0

0

2

0

-2

1

0

-1

-1

-1

-1

-1

-2

-1

1

0

-1

(a)(b)

图2 Prewitt算和Sobel 算子

(3)LOG(Laplacian of Gaussian)算子

拉普拉斯算子是一个线性移不变的算子,它的传递函数在频域空间的原点是零,因此经拉普拉斯滤波过的图像具有零平均灰度。LOG算子先用高斯低通滤波器将图像进行预先平滑,然后用拉普拉斯算子找出图像中的陡峭边缘,最后用零灰度值进行二值化产生闭合、连通的轮廓,消除了所有内部点。

(4)Canny算子

Canny算了检测边缘的方法是寻找图像梯度的局部极大值,梯度是用高斯滤波器的导数计算的。该方法使用两个阈值来分别检测强边缘和弱边缘,而且仅当弱边缘与强边缘相连时,弱边缘才会包含在输出中。此方法不容易受噪声的干扰,能够检测到真正的弱边缘。因此,Canny算子在图像处理中应用越来越广泛。它依据图像边缘检测最优准则设计算法:

①用高斯滤波模板进行卷积以消除噪声;

②利用导数算子找到图像灰度沿着两个(x, y)方向的偏导数,并求出梯度的大小;

③利用②的结果计算出梯度的方向;

④知道边缘的方向,就可以把边缘的梯度方向大致分四种:0º、45º、90º、135º方向。通过梯度的方向,就可以找到这个像素梯度方向的邻接像素;

⑤遍历图像,若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比不是最大的,那么这个像素值置为零,即不是边缘;

⑥使用累计直方图计算两个阈值,大于高阈值的一定是边缘,小于低阈值的一定不是边缘,介于之间的,看这个像素的邻接像素中有没有超过高阈值的边缘像素,如果有的话那么它就是边缘了,否则它就不是边缘。

(5)零交叉(Zerocross)方法

零交叉方法先用指定的滤波器对图像进行滤波,然后寻找零交叉作为边缘。

3、 图像边缘提取的分析

3.1 图像边缘提取函数

Matlab中edge函数用于灰度图像边缘的提取,其语法结构[4]如下:

1)BW=edge(I, ‘method’, thresh,direction), 返回与读取图像I大小一样的二进制图像BW;

(1)method表示图像边缘提取所采用的方法,方法如下:

你可能感兴趣的:(matlab用罗伯特算法提取边缘,Matlab在图像边缘提取中的应用(图文))