




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 Matlab 的数字图像边缘检测算法研究目录引言 3 1 基于一阶微分的边缘检测算法 71.1 Roberts 算子 71.2 Prewitt 算子 81.3 Kirsch 算子 8 2基于二阶微分的边缘检测算法 102.1 Laplacian 算子 102.2 LoG 算子 122.3 Canny 算子 15 3最佳 Sobel 边缘检测方法 183.1 Sobel 图像边缘检测方法 183.2改进的 Sobel 边缘检测方法 183.3 Sobel 算子的最佳阈值选取 19 4基于 Matlab 的实验结果与分析 224.1 Matlab 简介 224.2一阶微分算法的实验结果与分析 254.3二阶微分算法的实验结果与分析 304.4最佳 Sobel 边缘检测算法的实验结果与分析 35结论 40 致谢 42 参考文献 43 附录 源程序清单 45摘要在实际图像处理问题中,图像的边缘作为图像的一种基本特征,经常被 应用到较高层次的图像应用中去.它在图像识别,图像分割,图像增强以及 图像压缩等的领域中有较为广泛的应用,也是它们的基础. 边缘检测是图像处理与分析中最基础的内容之一,也是至今仍没有得到 圆满解决的一类问题.图像的边缘包含了图像的位置,轮廓等特征,是图像 的基本特征之一,广泛地应用于特征描述,图像分割,图像增强,图像复原, 模式识别,图像压缩等图像分析和处理中.因此,图像边缘和轮廓特征的检 测与提取方法,一直是图像处理与分析技术中的研究热点,新理论,新方法 不断涌现. 本文研究了一些边缘检测算法, 包括传统的 Roberts, Sobel, Prewitt, LoG, Canny,Kirsch 等算法.经典边缘检测方法的抗噪声性能都较差,解决该问题 的主要方法就是设置阈值,把得到的图像高频部分与阈值相比较以达到去噪 的目的,所以阈值的选取显得尤为重要.传统方法中的阈值都是通过实验确 定的,没有统一的阈值选取方法.本文利用边缘的最大后验概率估计,介绍 一种新的边缘估计方法,从理论上说明了怎样选取最佳阈值.文章中关于这 些方法都有较详细的介绍, 以及算法的实现步骤. 对算法均进行了仿真实验. 论文的主要目的是进行图像边缘检测算法性能比较的研究.实验结果表 明,本文的算法比较可以为图像处理的后续环节提供一些有益的参考.关键词: 边缘检测; 图像处理; Matlab; Sobel; 检测算法AbstractIn image processing, as a basic characteristic, the edge of the image, which is widely used in the recognition, segmentation, intensification and compress of the image, is often applied to high-level domain. Edge detection is one of the most fundamentals in image processing and analyzing, which is still unsolved. Images edges include images features such as position and outline, which belong to the fundamental features. Edge detection is widely used in image analysis and processing such as feature description, image segmentation, image enhancement, pattern recognition and image compression etc, so Edge Detection and extract of outline figure are the research hotspot in the technology of image processing and analysis all, on which the new theory and methods are put forward constantly. Some edge detection algorithms are researched, including Roberts, Sobel, Prewitt, LoG, Canny, Kirsch etc. The classic edge detection methods have some drawbacks in image denoising. The main idea of resolving this problem is to set a threshold, then compare the threshold with the high-frequency components of an image to remove the noise.The choice of the threshold is the key of image denoising. The threshold of traditional methods is obtained by experiments, and there is no general method to determine it. A new method of edge estimation by the Maximum a Posteriori (MAP) is presented in this paper. It proves how to choose the optimal threshold in theory. These algorithms are introduced in detail, and the steps of algorithm realization are introduce too.The algorithm is tested by simulation. The main aim of the paper is studying Performance Evaluation in edge detection algorithms, and the detection results are compared. The experiments results show that the algorithms can be a useful reference of latter parts of image processing. Keywords:edge detection; image processing; Matlab; Sobel; detection algorithm 引言 图像边缘是图像最基本的特征之一,往往携带着一幅图像的大部分信息. 而边缘存在于图像的不规则结构和不平稳现象中,也即存在于信号的突变点 处,这些点给出了图像轮廓的位置,这些轮廓常常是在图像处理时所需要的 非常重要的一些特征条件,这就需要对一幅图像检测并提取出它的边缘.而 边缘检测算法则是图像处理问题中经典技术难题之一,它的解决对于进行高 层次的特征描述,识别和理解等有着重大的影响;又由于边缘检测在许多方 面都有着非常重要的使用价值,所以人们一直在致力于研究和解决如何构造 出具有良好性质及好的效果的边缘检测算子的问题1. 在通常情况下,可以将信号中的奇异点和突交点认为是图像中的边缘点, 其附近灰度的变化情况可从它相邻像素灰度分布的梯度来反映.根据这一特 点,提出了多种边缘检测算子:如 Robert 算子,Sobel 算子,Prewitt 算子, Laplacian 算子等.这些方法多是以待处理像素为中心的邻域作为进行灰度分 析的基础,实现对图像边缘的提取并已经取得了较好的处理效果.但这类方 法同时也存在有边缘像素宽,噪声干扰较严重等缺点,即使采用一些辅助的 方法加以去噪,也相应的会带来边缘模糊等难以克服的缺陷.解决该问题的 丰要方法就是设置阈值,把得到的图像高频部分与阈值相比较以达到去噪的 目的,所以阈值的选取显得尤为重要2.传统方法中的阈值都是通过实验确定 的,没有统一的阈值选取方法.本文利用边缘的最大后验概率估计,介绍一 种新的边缘估计方法,从理论上说明了怎样选取最佳阈值. 图像的大部分主要信息都存在于图像的边缘中,主要表现为图像局部特 征的不连续性,是图像中灰度变化比较剧烈的地方,即通常所说的信号发生奇异变化的地方.奇异信号沿边缘走向的灰度变化剧烈,通常将边缘划分为 阶跃状和屋顶状两种类型如图 1 所示.阶跃边缘中两边的灰度值有明显的变 化;而屋顶状边缘位于灰度增加与减少的交界处.在数学上可利用灰度的导 数来刻画边缘点的变化, 对阶跃边缘, 屋顶状边缘分别求其一阶, 二阶导数3. 图 1 阶跃边缘和屋顶状边缘处一阶和二阶导数变化规律 (其中第一排为理想信号,第二排对应实际信号) 对一个边缘来说,有可能同时具有阶跃和线条边缘特性.例如在一个表 面上,由一个平面变化到法线方向不同的另一个平面就会产生阶跃边缘;如 果这一表面具有镜面反射特性且两平面形成的棱角比较圆滑,则当棱角圆滑 表面的法线经过镜面反射角时,由于镜面反射分量,在棱角圆滑表面上会产 生明亮光条,这样的边缘看起来像在阶跃边缘上叠加了一个线条边缘.由于 边缘可能与场景中物体的重要特征对应, 所以它是很重要的图像特征. 比如, 一个物体的轮廓通常产生阶跃边缘,因为物体的图像强度不同于背景的图像 强度. 论文选题来源于在图像工程中占有重要的地位和作用的实际应用课题. 所谓图像工程学科是指将数学,光学等基础学科的原理,结合在图像应用中 积累的技术经验而发展起来的学科.图像工程的内容非常丰富,根据抽象程 度和研究方法等的不同分为三个层次:图像处理,图像分析和图像理解.如 图 2 所示,在图中,图像分割处于图像分析与图像处理之间,其含义是,图像分割是从图像处理进到图像分析的关键步骤,也是进一步理解图像的基础. 图像工程 图像处理 图像分割 图像分析 图像理解 图2 图像分割在图像工程中的地位和作用 图像分割对特征有重要影响.图像分割及基于分割的目标表达,特征提取和 参数测量等将原始图像转化为更抽象更紧凑的形式,使得更高层的图像分析 和理解成为可能.而边缘检测是图像分割的核心内容,所以边缘检测在图像 工程中占有重要的地位和作用.因此边缘检测的研究一直是图像技术研究中 热点和焦点,而且人们对其的关注和投入不断提高. 本文的主要工作如下: (1)本文对图像边缘检测作了一个概要的说明,并说明了进行图像边缘检 测的重要意义. (2)系统的介绍了比较经典的基于一阶微分的图像边缘检测算子及其具体 的实现原理,为介绍基于二阶微分的图像边缘检测算子做铺垫,以便于大家的理解. (3)系统介绍了比较经典的基于二阶微分的图像边缘检测算子及其具体的 实现原理. (4)介绍了一种基于 Sobel 算子的改进型算法,此方法的最大优点是:在 去噪的同时有效地保留了图像的真实边缘,即给出了边缘检测的最佳结果. (5)对上述的算法用 Matlab 为工具进行仿真,并对其仿真结果进行分析, 分析各种算法的特点. 1 基于一阶微分的边缘检测算法 1.1 Roberts 算子 由 Roberts 提出的算子是一种利用局部差分算子寻找边缘的算子,对于边 界陡峭且噪比较小的图像检测效果比较好,它在 22 邻域上计算对角导数, G i , j = ( f i, j f i + 1, j + 1) + ( f i + 1, j f i, j + 1) 2 2 (1-1) Gi,j又称为 Roberts 交叉算子.在实际应用中,为简化运算,用梯度函数 的 Roberts 绝对值来近似: G i , j = f i , j f i + 1, j + 1 + f i + 1, j f i , j + 1 (1-2) 用卷积模板,上式变成: G i , j = G x + G y (1-3) 其中 Gx 和 Gy 由下面图 3 所示的模板计算: 图 3 Robert 边缘检测算子的模板 Roberts 算子是该点连续梯度的近似值,而不是所预期的点处的近似值. 由上面两个卷积算子对图像运算后,代入(1-3)式,可求得图像的梯度幅度值 Gi,j,然后选取适当的门限 TH,作如下判断:Gi,jTH,i,j为阶跃状边缘 点,Gi,j为一个二值图像,也就是图像的边缘.由于利用局部差分检测比 较陡峭的边缘,但对于噪声比较敏感,经常会出现孤立点,于是人们又提出 了 Prewitt 算子4. 1.2 Prewitt 算子 为在检测边缘的同时减少噪声的影响,Prewitt 算子从加大边缘检测算子 出发.由 22 扩大到 33 来计算差分算子,所以其卷积模板为图 4 所示: 图 4 Prewitt 边缘检测算子的模板 在图像中的每个像素位置都用这 2 个模板做卷积,Prewitt 算子将方向差 分运算与局部平均结合起来,表达式如下: f x = f ( x 1, y + 1) + f ( x, y + 1) + f ( x + 1, y + 1) f ( x 1, y 1) f ( x, y 1) f ( x + 1, y 1) (1-4) f y = f ( x + 1, y 1) + f ( x + 1, y ) + f ( x + 1, y + 1) f ( x 1, y 1) f ( x 1, y ) f ( x 1, y + 1) (1-5) 根据(1-4)和(1-5)式可以计算 Prewitt 梯度,选取适当的阈值 T,对梯度图 像二值化,得到一幅边缘二值图像.采用 Prewitt 算子不仅能检测边缘点,而 且还能抵制噪声的影响5. 1.3 Kirsch 算子 1971 年,R.Kirsch 提出了一种能检测边缘方向的 Kirsch 算子新方法:它 使用了 8 个模板来确定梯度幅度值和梯度的方向.Kirsch 算子是用一组模板 对图像中同一像素求卷积,选取其中最大的值作为边缘强度,而将与之对应 的方向作为边缘方向6.常用的八方向 Kirsch 模板各方向间的夹角为 45 度, 模板如图 5 所示: 图 5 Kirsch 边缘检测算子的模板 上述算子都是计算一阶导数的边缘检测器.其基本思想都是:如果所求 的一阶导数高于某一阈值,则确定该点为边缘点.但是这样做会导致检测的 边缘点太多.总的来说,造成这些算子不能准确判定边缘的存在及正确位置 的原因在于: (1)实际的边缘灰度与理想的边缘灰度值间存在差异,这类算子可能检测 出多个边缘. (2)边缘存在的尺度范围各不相同,这类算子固定的大小不利于检测出不 同尺度上的所有边缘. (3)对噪声比较敏感为了解决这一问题,发展并产生了平滑滤波边缘检测 方法,也就是边缘检测中理论最成熟的线性滤波方法,也称线性边缘检测算 子.在线性滤波边缘检测方法中,最具代表性的是 Marr-Hildreth 提出的 LoG(Laplacian of Gaussian)算法,Canny 最优算子的边缘检测方法7. 2 基于二阶微分的边缘检测算法 2.1 Laplacian 算子 拉普拉斯算子是二阶导数的二维等效式.函数f(x,y)的拉普拉斯算子公式 为: 2 f = 2 f 2 f + x 2 y 2 (2-1) 使用差分方程对 x 和 y 方向上的二阶偏导数近似如下: 2 f Gx = x 2 x ( f i, j + 1 f i, j ) = x f i, j + 1 f i, j = x x = ( f i, j + 2 2 f i, j + 1) + f i, j (2-2) 这一近似式是以点fi,j+1为中心的,用j-1替换j得到 2 f = ( f i , j + 1 2 f i , j ) + f i , j 1 x 2 (2-3) 它是以点i,j为中心的二阶偏导数的理想近似式,类似地, 2 f = ( f i + 1, j 2 f i , j ) + f i 1, j x 2 (2-4) 把式(2-3)和式(2-4)合并为一个算子,就成为式(2-5)能用来近似拉普拉斯 算子的模板: 0 1 0 1 4 1 0 1 0 2 (2-5) 有时候希望邻域中心点具有更大的权值,比如下面式(2-6)的模板就是一 种基于这种思想的近似拉普拉斯算子: 1 4 1 4 20 4 1 4 1 2 (2-6) 当拉普拉斯算子输出出现过零点时就表明有边缘存在,其中忽略无意义 的过零点(均匀零区).原则上,过零点的位置精度可以通过线性内插方法精确 到子像素分辨率,不过由于噪声,以及由噪声引起的边缘两端的不对称性, 结果可能不会很精确8. 考虑图 6 所给的例子.图中表明了对一幅具有简单阶跃边缘的图像进行 拉普拉斯运算的结果.输出图像中的一行是: 在本例中,对应于原始图像边缘的零交叉点位于两个中心像素点之间. 因此,边缘可以用其左边的像素或右边的像素来标记,但整幅图像的标记必 须一致.在多数情况下,零交叉点很少恰好在两像素点中间,因此边缘的实 际位置要通过内插值来确定. 图 6 (a)为包含垂直阶跃边缘的图像 (b)为垂直方向的阶跃边缘拉普拉斯响应 现在考虑一下图 7 所示的例子.该图给出了拉普拉斯算法对斜坡边缘的 响应,其中的一行输出是: 零交叉点直接对应着图像中的一个像素点.当然,这是一种理想情况, 图像边缘的实际情况要比这个复杂的多. 图 7 (a)为包含垂直斜坡边缘的图像 (b)为垂直方向的斜坡边缘拉普拉斯响应 拉普拉斯算子有两个缺点:其一是边缘方向信息的丢失,其二是它是二 阶差分,双倍加强了图像中噪声影响.所以,后来才有人提出了改进的 LoG 算法. 2.2 LoG 算子 正如上面所提到的,利用图像强度二阶导数的零交叉点来求边缘点的算 法对噪声十分敏感. 所以, 希望在边缘增强前滤除噪声. 为此, Marr 和 Hildreth 将高斯滤波和拉普拉斯边缘检测结合在一起,形成 LoG(Laplaciall of GausSian, LoG)算法,也有人称之为拉普拉斯高斯算法. LoG 算法理论是从生物视觉理论导出的方法.其基本思想是:首先在一 定范围内做平滑滤波,然后利用差分算子检测在相应尺度上的边缘.滤波器 的选择取决于两个因素,一是要求滤波器在空间上平稳,空间位置误差 x 要 小,二是要求平滑滤波器本身是带通滤波器,在其有限带通内是平稳的,即 要求频域误差 要小.由信号处理中的测不准原理知,x 与 是矛盾的, 达到测不准下限的滤波器是高斯滤波器.Marr 和 Hildreth 提出的差分算子是 各向同性的拉普拉斯二阶差分算子. LoG 边缘检测器的基本特征是 (1)平滑滤波器是高斯滤波器 (2)增强步骤采用二阶导数(二维拉普拉斯函数) (3)边缘检测判据是二阶导数零交叉点并对应一阶导数的较大峰值 这种方法的特点是图像首先与高斯滤波器进行卷积,这一步既平滑了图 像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除9.由于平滑会导 致边缘的延展,因此边缘检测器只考虑那些具有局部梯度最大值的点为边缘 点,这一点可以用二阶导数的零交叉点来实现.拉普拉斯函数用作二维二阶 导数的近似,是因为它是一种无方向算子.为了避免检测出非显著边缘,应 选择一阶导数大于某一阈值的零交叉点作为边缘点10. LoG 算子的输出 h(x,y)是通过卷积运算得到的: h ( x, y ) = 2 g ( x, y ) f ( x , y ) (2-7) 根据卷积求导法有: h ( x, y ) = 2 g ( x, y ) f ( x, y ) (2-8) 其中: x 2 + y 2 2 2 g ( x, y ) = e 4 2 x2 + y 2 2 2 (2-9) 称之为墨西哥草帽算子. 由以上分析知,下面两种方法在数学上是等价的: (1)求图像与高斯滤波器卷积,再求卷积的拉普拉斯变换 (2)求高斯滤波器的拉普拉斯变换,再求与图像的卷积 如果采用第一种方法,就要用到高斯平滑滤波器.直接实现 LoG 算法的 典型模板见图 8. 图 8 典型拉普拉斯高斯模板 滤波(通常是平滑),增强,检测这三个边缘检测步骤对使用 LoG 边缘检 测仍然成立,其中平滑是用高斯滤波器来完成的;增强是将边缘转换成零交 叉点来实现的;边缘检测则是通过检测零交叉点来进行的. 可以看到,零交叉点的斜率依赖于图像强度在穿过边缘时的变化对比度. 剩下的问题是把那些由不同尺度算子检测到的边缘组合起来.在上述方法中, 边缘是在特定的分辨下得到的.为了从图像中得到真正的边缘,有必要把那 些通过不同尺度算子得到的信息组合起来. 这里介绍一下尺度空间概念.高斯平滑运算导致图像中边缘和其它尖锐 不连续部分的模糊, 其中模糊量取决于 的值. 值越大, 噪声滤波效果越好, 但同时也丢失了重要的边缘信息,影响了边缘检测器的性能.如果用小尺度 的滤波器,又有可能平滑不完全而留有太多的噪声.大尺度滤波器在平滑相 互邻近的两个边缘时,可能会将它们连在一起,这样只能检测出一个边缘. 因此,在不知道物体尺度和位置的情况下,很难准确确定滤波器的尺度11. 2.3 Canny 算子 Canny 检测阶跃边缘的基本思想是在图像中找出具有局部最大梯度幅值 的像素点.检测阶跃边缘的大部分工作集中在寻找能够用于实际图像的梯度 数字逼近. 由于实际的图像经过了摄像机光学系统和电路系统(带宽限制)固有 的低通滤波器的平滑,因此,图像中的阶跃边缘不是十分陡立.图像也受到 摄像机噪声和场景中不希望的细节的干扰.图像梯度逼近必须满足两个要求: 首先逼近必须能够抑制噪声效应;其次必须尽量精确地确定边缘的位置.抑 制噪声和边缘精确定位是无法同时得到满足的,也就是说,边缘检测算法通 过图像平滑算子去除了噪声,但却增加了边缘定位的不确定性;反过来,若 提高边缘检测算子对边缘的敏感性,同时也提高了对噪声的敏感性.有一种 线性算子可以在抗噪声干扰和精确定位之间提供最佳折衷方案,它就是高斯 函数的一阶导数. Canny 根据检测的要求,定义了下面三个最优准则: (1)最优检测.对真实边缘不漏检,非边缘点不错检,即要求输出信噪比 最大. (2)最优检测精度.检测的边缘点的位置距实际的边缘点的位置最近. (3)检测点与边缘点一一对应.每一个实际存在的边缘点和检测的边缘点 是一一对应的关系. Canny 首次将上述判据用是数学的形式表示出来, 然后采用最优化数值方 法,得到最佳边缘检测模板.对于二维图像,需要使用若干方向的模板分别 对图像进行卷积处理,再取最可能的边缘方向.现在对 Canny 边缘检测器作 一概括说明.用 fi,j表示图像.使用可分离滤波方法求图像与高斯平滑滤波器卷积,得到的结果是一个已平滑数据阵列. S i , j = G i , j; f i, j (2-10) 其中 Gi,j;代表一个高斯滤波的过程,而 是高斯函数的标准差,它控制着 平滑程度. 已平滑数据阵列 Si,j的梯度可以使用 22 一阶有限差分近似式来计算 x 与 y 偏导数的两个阵列 Pi,j与 Qi,j: P i , j ( S i , j + 1 S i , j + S i + 1, j + 1 S i + 1, j ) 2 Q i , j ( S i , j S i + 1, j + S i , j + 1 S i + 1, j + 1) 2 (2-11) (2-12) 在这个 22 正方形内求有限差分的均值,以便在图像中的同一点计算 x 和 y 的偏导数梯度.幅值和方位角可用直角坐标到极坐标的坐标转化公式来 计算: M i , j = P i , j + Q i , j 2 2 (2-13) (2-14) i , j = arctan ( Q i , j P i , j ) 其中,反正切函数包含了两个参量,它表示一个角度,其取值范围是整个圆 周范围内.为高效率地计算这些函数,尽量不用浮点运算.梯度的幅度和方 向也可以通过查找表由偏导数计算.反正切函数的大多数计算使用的是定点 运算,很少的几个计算是基本浮点运算,其中的浮点运算是由整数和定点算 术通过软件实现的. 在上式中,Mi,j反映了图像上的点i,j处的边缘强度, i,j是图像点i,j 的法向矢量, 正交于边缘方向. 根据 Canny 的定义, 中心边缘点为算子 Gi,j; 与图像 fi,j的卷积在边缘梯度方向上的最大值,这样就可以在每一个点的梯 度方向上判断此点强度是否为其邻域的最大值来确定该点是否为边缘点.当 一个像素满足下面三个条件时,则被认为是图像的边缘点: (1)该点的边缘强度大于沿该点梯度方向的两个相邻像素点的边缘强度 (2)与该点梯度方向上相邻两点的方向差小于 4 (3)以该点为中心的 33 邻域中的边缘强度极大值小于某个阈值 Canny 给出的这三个判据具有广泛的代表意义12. 3 最佳 Sobel 边缘检测方法 3.1 Sobel 图像边缘检测方法 传统的 Sobel 图像边缘检测方法, 是在图像空间利用两个方向模板与图像 进行邻域卷积来完成的.这两个方向模板一个检测垂直边缘,一个检测水平 边缘,如图 9 所示.图中,模板内的数字为模板系数,梯度方向与边缘方向总是正交水平边缘 Sobel 算子 垂直边缘 Sobel 算子 图 9 Sobel 算子 模板元素和窗口像素之间的对应关系(以 33 窗口为例)定义如下: 设窗口灰度为: F ( j 1, k 1) F = F ( j , k 1) F ( j + 1, k 1) F ( j, k ) F ( j + 1, k ) F ( j 1, k ) F ( j 1, k + 1) F ( j , k + 1) F ( j + 1, k + 1) (3-1) 模板卷积计算就是下式求乘积和的过程: fi ( j , k ) = m=1 n=1 F ( j + m, k + n) M 1 1 i m,n (3-2) 式中,i=1,2 分别代表垂直和水平模板. fi ( j , k ) 为模板卷积法边缘检测的输出, l = L 2 ,L 为窗口宽度,对 33 窗口,l=1.将两个卷积结果的最大值,赋给图 像中对应模板中心位置的像素,作为该像素的新灰度值,即: f max = max ( f i ( j , k ) ) i = 1, 2 (3-3) 3.2 改进的 Sobel 边缘检测方法 一种改进的 Sobel 边缘检测方法,就是在 3.1 节中两个模板的基础上,又 增加六个方向的模板,即 45,135,180,225,270,315,具体如图 10 所示. 这样可以更加有效地检测图像多个方向的边缘, 使边缘信息更加完整. 上面式(3-2),式(3-3)中的 i=1,2,8 代表图中的八个方向13. 图 10 边缘检测的八个方向模板 3.3 Sobel 算子的最佳阈值选取 尽管八方向的 Sobel 算子可以得到更完整的边缘信息,但是和 Sobel 算子 一样,它们的抗噪声能力都较差,即对于叠加噪声图像的边缘检测效果很不 理想.解决该问题的一个方法就是设定一个阈值,然后与经过 Sobel 算子检测 后的边缘值进行比较,当其幅值大于该阈值时定义为边缘,反之取为零,如 式(3-4)所示. A, fi ( j, k ) T g ( j, k ) = 0, fi ( j, k ) T 0 T0 sl ( m, n ) = xl ( m, n ) T0 0, (3-7) 其中, T0 = 2 s 2 w l (3-8) (3-7)式给出的边缘估计方法在小波域称为软门限去噪法, 因此可以认定 T0 即为所需要的最佳阈值. 可以看出,由(3-7)式和(3-8)式所给出的边缘估计的特点是:当图像边缘 的幅值大于阈值时,边缘的估计值为边缘幅值减去阈值.因此,具有更强的 去噪功能.为了由(3-7)式得到边缘信号的最佳估计,首先需要确定 T0 的值.因 此要分别估计出 s 和 w 的值. l 假定图像大小为 MM,那么 w 的值可以用中值法估计: l w = l median xl ( m, n ) 0.6745 ,1 m, n M (3-9) 其中 median表示取中值的运算.这样,注意到 2 x2 = s2 + w l l (3-10) 及 x = l 2 1 M M 2 xl ( m, n) M 2 m=1 n=1 (3-11) 就可以得到 2 s = max x w ,0 l l ( 2 ) (3-12) 把上面的(3-9),(3-12)给出的 s 和 w ,的估计值代入(3-7),就可以得到 l 阈值 T0 ,即最佳阈值. 上述方法的最大优点是:在去噪的同时有效地保留了图像的真实边缘, 即给出了边缘检测的最佳结果15. 4 基于 Matlab 的实验结果与分析 4.1 Matlab 简介 在科学研究和工程应用中,往往要进行大量的数学计算,其中包括矩阵 运算.这些运算一般来说难以用手工精确和快捷地进行,而要借助计算机编 制相应的程序做近似计算. 目前流行用 Basic, Fortran 和 C 语言编制计算程序, 既需要对有关算法有深刻的了解,还需要熟练地掌握所用语言的语法及编程 技巧.对多数科学工作者而言,同时具备这两方面技能有一定困难.通常, 编制程序也是繁杂的,不仅消耗人力与物力,而且影响工作进程和效率.为克 服上述困难,美国 Mathwork 公司于 1967 年推出了Matrix Laboratory(缩写 为 Matlab) 软件包, 并不断更新和扩充. 目前最新的 5.x 版本 (windows 环境) 是一种功能强, 效率高便于进行科学和工程计算的交互式软件包. 其中包括: 一般数值分析,矩阵运算,数字信号处理,建模和系统控制和优化等应用程 序,并集应用程序和图形于一体便于使用的集成环境中.在此环境下所解问 题的 Matlab 语言表述形式和其数学表达形式相同, 不需要按传统的方法编程. 不过, Matlab 作为一种新的计算机语言, 要想运用自如, 充分发挥它的威力, 也需先系统地学习它.但由于使用 Matlab 编程运算与人进行科学计算的思路 和表达方式完全一致,所以不象学习其它高级语言如 Basic,Fortran 和 C 等那样难于掌握16.实践证明,你可在几十分钟的时间内学会 Matlab 的基础 知识,在短短几个小时的使用中就能初步掌握它.从而使你能够进行高效率和 富有创造性的计算.Matlab 大大降低了对使用者的数学基础和计算机语言知 识的要求,而且编程效率和计算效率极高,还可在计算机上直接输出结果和 精美的图形拷贝,所以它的确为一高效的科研助手.自推出后即风行美国,流传世界17. 综上所述,Matlab 语言有如下特点: (1)编程效率高 它是一种面向科学与工程计算的高级语言,允许用数学形式的语言编写 程序,且比 Basic,Fortran 和 C 等语言更加接近书写计算公式的思维方式,用 Matlab 编写程序犹如在演算纸上排列出公式与求解问题.因此,Matlab 语言 也可通俗地称为演算纸式科学算法语言由于它编写简单,所以编程效率高, 易学易懂. (2)用户使用方便 Matlab 语言是一种解释执行的语言(在没被专门的工具编译之前),它 灵活,方便,其调试程序手段丰富,调试速度快,需要学习时间少.人们用 任何一种语言编写程序和调试程序一般都要经过四个步骤:编辑,编译,连 接以及执行和调试.各个步骤之间是顺序关系,编程的过程就是在它们之间 作瀑布型的循环.Matlab 语言与其它语言相比,较好地解决了上述问题,把 编辑,编译,连接和执行融为一体.它能在同一画面上进行灵活操作快速排 除输入程序中的书写错误,语法错误以至语意错误,从而加快了用户编写, 修改和调试程序的速度, 可以说在编程和调试过程中它是一种比 VB 还要简单 的语言. 具体地说,Matlab 运行时,如直接在命令行输入 Mailab 语句(命令), 包括调用 M 文件的语句, 每输入一条语句, 就立即对其进行处理, 完成绩译, 连接和运行的全过程.又如,将 Matlab 源程序编辑为 M 文件,由于 Mat1ab 磁盘文件也是 M 文件,所以编辑后的源文件就可直接运行,而不需进行编译和连接. 在运行 M 文件时, 如果有错, 计算机屏幕上会给出详细的出锗信息, 用户经修改后再执行,直到正确为止.所以可以说,Mat1ab 语言不仅是一种 语言,广义上讲是一种该语言开发系统,即语言调试系统. (3)扩充能力强 高版本的 Matlab 语言有丰富的库函数,在进行复杂的数学运算时可以直 接调用,而且 Matlab 的库函数同用户文件在形成上一样,所以用户文件也可 作为 Matlab 的库函数来调用.因而,用户可以根据自己的需要方便地建立和 扩充新的库函数,以便提高 Matlab 使用效率和扩充它的功能.另外,为了充 分利用 Fortran,C 等语言的资源,包括用户已编好的 Fortran,C 语言程序, 通过建立 Me 调文件的形式,混合编程,方便地调用有关的 Fortran,C 语言 的子程序. (4)语句简单,内涵丰富 Mat1ab 语言中最基 本最重要 的成分是 函数,其 一般形 式为 a,b , c=fun(d,e,f,),即一个函数由函数名,输入变量 d,e,f, 和输出变量 a,b,c组成,同一函数名 F,不同数目的输入变量(包括无 输入变量)及不同数目的输出变量,代表着不同的含义(有点像面向对象中 的多态性.这不仅使 Matlab 的库函数功能更丰富,而大大减少了需要的磁盘 空间,使得 Matlab 编写的 M 文件简单,短小而高效. (5)高效方便的矩阵和数组运算 Matlab 语言象 Basic,Fortran 和 C 语言一样规定了矩阵的算术运算符, 关系运算符,逻辑运算符,条件运算符及赋值运算符,而且这些运算符大部 分可以毫无改变地照搬到数组间的运算,有些如算术运算符只要增加就可用于数组间的运算,另外,它不需定义数组的维数,并给出矩阵函数,特殊 矩阵专门的库函数,使之在求解诸如信号处理,建模,系统识别,控制,优 化等领域的问题时,显得大为简捷,高效,方便,这是其它高级语言所不能 比拟的.在此基础上,高版本的 Matlab 已逐步扩展到科学及工程计算的其它 领域.因此,不久的将来,它一定能名符其实地成为万能演算纸式的科学算 法语言. (6)方便的绘图功能 Matlab 的绘图是十分方便的,它有一系列绘图函数(命令),例如线性 坐标, 对数坐标, 半对数坐标及极坐标, 均只需调用不同的绘图函数 (命令) , 在图上标出图题,XY 轴标注,格(栅)绘制也只需调用相应的命令,简单易 行.另外,在调用绘图函数时调整自变量可绘出不变颜色的点,线,复线或 多重线.这种为科学研究着想的设计是通用的编程语言所不及的. 总之,Matlab 语言的设计思想可以说代表了当前计算机高级语言的发展 方向,在不断使用中,人们会发现它的巨大潜力18. 4.2 一阶微分算法的实验结果与分析 4.2.1 实验程序清单 Roberts 算子程序: clc clear all close all A = imread(cameraman.tif); % 读入图像 imshow(A);title(原图); x_mask = 1 0;0 -1; % 建立X方向的模板 y_mask = rot90(x_mask); % 建立Y方向的模板 I = im2double(A); % 将图像数据转化为双精度 dx = imfilter(I, x_mask); % 计算X方向的梯度分量 dy = imfilter(I, y_mask); % 计算Y方向的梯度分量 grad = sqrt(dx.*dx + dy.*dy); % 计算梯度 grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像 level = graythresh(grad); % 计算灰度阈值 BW = im2bw(grad,level); % 用阈值分割梯度图像 figure, imshow(BW); % 显示分割后的图像即边缘图像 title(Roberts) Prewitt 算子程序: clc clear all close all A = imread(cameraman.tif); % 读入图像 imshow(A);title(原图); y_mask = -1 -1 -1;0 0 0;1 1 1; % 建立Y方向的模板 x_mask = y_mask; % 建立X方向的模板 I = im2double(A); % 将图像数据转化为双精度 dx = imfilter(I, x_mask); % 计算X方向的梯度分量 dy = imfilter(I, y_mask); % 计算Y方向的梯度分量 grad = sqrt(dx.*dx + dy.*dy); % 计算梯度 grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像 level = graythresh(grad); % 计算灰度阈值 BW = im2bw(grad,level); % 用阈值分割梯度图像 figure, imshow(BW); % 显示分割后的图像即边缘图像 title(Prewitt) Kirsch 算子程序 clc clear all close all A = imread(cameraman.tif); % 读入图像 imshow(A);title(原图); mask1=-3,-3,-3;-3,0,5;-3,5,5; % 建立方向模板 mask2=-3,-3,5;-3,0,5;-3,-3,5; mask3=-3,5,5;-3,0,5;-3,-3,-3; mask4=-3,-3,-3;-3,0,-3;5,5,5; mask5=5,5,5;-3,0,-3;-3,-3,-3; mask6=-3,-3,-3;5,0,-3;5,5,-3; mask7=5,-3,-3;5,0,-3;5,-3,-3; mask8=5,5,-3;5,0,-3;-3,-3,-3; I = im2double(A); % 将数据图像转化为双精度 d1 = imfilter(I, mask1); %
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安徽安全员考试模拟考试题及答案
- 2025年健身项目经理专业素质评定考试试题及答案解析
- 2025年健身房管理师职业水平评定试题及答案解析
- 2025年建筑玻璃幕墙工程师职业资格考试试题及答案解析
- 2025年安全生产安全检查标准试题及答案
- 2025年摄影师招聘面试技巧与模拟题答案
- 2025年暑期消防安全知识测试题库
- 机电知识培训目的课件
- 2025年工地安全员高处作业规范及答案
- 2025年收费站安全生产法规模拟题
- 2025至2030全球及中国实验室PH电极行业发展趋势分析与未来投资战略咨询研究报告
- 相控阵超声检测技术及应用
- 第四单元整本书阅读《红岩》课件 2025-2026学年统编版语文八年级上册
- 特色小吃街商业运营与管理合作协议
- 金提炼过程中的贵金属综合回收利用考核试卷
- 三级安全教育试题及答案
- 房屋市政工程生产安全重大事故隐患排查表
- 2025建筑工程设计合同(示范文本)GF
- T/SHPTA 082-2024光伏组件封装用共挤EPE胶膜
- 钢化玻璃制品项目可行性研究报告立项申请报告范文
- 《财税基础(AI+慕课版)》全套教学课件
评论
0/150
提交评论