首页

> 学术期刊知识库

首页 学术期刊知识库 问题

边缘检测论文范文

发布时间:

边缘检测论文范文

Canny边缘检测教程 作者:比尔绿色( 2002 ) 主页电子邮件 本教程假定读者: ( 1 )知道如何发展的源代码阅读栅格数据 ( 2 )已经阅读我Sobel边缘检测教程 本教程将教你如何: ( 1 )实施Canny边缘检测算法。 导言 边的特点,因此,边界问题,根本的重要性在图像处理中。在图像的边缘地区,强度强的反差?猛增强度从一个像素的下一个。边缘检测的图像大大减少了大量的数据,并过滤掉无用的信息,同时保持重要的结构性能的形象。这也是我在索贝尔和拉普拉斯边缘检测教程,但我只是想再次强调这一点的,为什么您要检测的边缘。 的Canny边缘检测算法是众所周知的许多人视为最佳边缘检测。精明的意图是要加强许多边缘探测器已经在的时候,他开始了他的工作。他很成功地实现他的目标和他的思想和方法中可以找到他的论文“计算方法的边缘检测” 。在他的文件中,他遵循的标准清单,以改善目前的边缘检测方法。第一个也是最明显的错误率低。重要的是,发生在图像边缘不应错过的,没有任何反应,非边缘。第二个标准是,边缘点很好地本地化。换言之,之间的距离边缘像素作为探测器发现和实际边缘要在最低限度。第三个标准是,只有一个回应单一优势。这是第一次实施,因为并没有实质性的2足以完全消除的可能性,多反应的优势。 根据这些标准, Canny边缘检测器的第一个平滑的图像,以消除和噪音。然后认定的形象,以突出地区梯度高空间衍生物。该算法然后轨道沿着这些地区和抑制任何像素这不是在最高( nonmaximum制止) 。梯度阵列现在进一步减少滞后。磁滞用来追踪沿其余像素,但没有压制。磁滞使用两个阈值,如果规模低于第一道门槛,这是设置为零(发了nonedge ) 。如果是规模以上的高门槛,这是一个优势。如果震级之间的2阈值,那么它设置为零,除非有一条从这个像素一个像素的梯度上述时刻。 第1步 为了落实Canny边缘检测算法,一系列步骤必须遵循。第一步是筛选出任何噪音的原始图像在寻找和发现任何边缘。而且因为高斯滤波器可以用一个简单的计算面具,它是专门用于在Canny算法。一旦合适的面罩已计算,高斯平滑可以用标准的卷积方法。阿卷积掩模通常远远小于实际的形象。因此,该面具是下跌的形象,操纵一个正方形像素的时间。较大的宽度高斯面具,较低的是探测器的敏感性噪音。定位误差检测边缘也略有增加的高斯宽度增加。高斯遮罩使用我在执行下面显示。 第2步 经过平滑的形象,消除噪音,下一步就是要找到优势兵力,采取梯度的形象。的Sobel算子进行二维空间梯度测量的形象。然后,大约绝对梯度幅度(边缘强度)各点可以找到。 Sobel算子的使用对3x3卷积口罩,一个梯度估计在X方向(栏)和其他的梯度估计的Y方向(行) 。它们如下所示: 的规模,或EDGE强度,梯度近似然后使用公式: | G | = | GX的| + |戈瑞| 第3步 寻找边缘方向是小事,一旦梯度在X和Y方向是众所周知的。然而,你会产生错误时sumX等于零。因此,在代码中必须有一个限制规定只要发生。每当梯度在x方向等于零,边缘的方向,必须等于90度或0度,取决于什么的价值梯度的Y方向等于。如果青的值为零,边缘方向将等于0度。否则边缘方向将等于90度。公式为寻找边缘方向是: 论旨= invtan (戈瑞/ GX的) 第4步 一旦边缘方向众所周知,下一步是与边缘方向为方向,可以追溯到在一个图像。因此,如果一个5x5像素图像对齐如下: x x x x x x x x x x x x 1 x x x x x x x x x x x x 然后,可以看到看像素的“ A ” ,只有4个可能的方向时,描述了周围的像素- 0度(水平方向) , 45度(沿积极对角线) , 90度(垂直方向) ,或135度(沿负对角线) 。所以,现在的边缘方向已经得到解决纳入其中四个方向取决于哪个方向,它是最接近于(如角被发现有3度,使零摄氏度) 。认为这是采取了半圆形和分裂成5个地区。 因此,任何先进的方向范围内的黄色范围( 0至5月22日& 至180度)设置为0度。任何先进的方向下滑的绿色范围( 至度)设置为45度。任何先进的方向下滑的蓝色范围( 至度)设置为90度。最后,任何先进的方向范围内的红色范围( 到度)设置为135度。 第5步 在被称为边缘方向, nonmaximum制止目前适用。 Nonmaximum抑制是用来追踪沿边缘方向和制止任何像素值(套等于0 )这是不被认为是优势。这将让细线在输出图像。 第6步 最后,滞后是用来作为一种手段,消除条纹。裸奔是打破的边缘轮廓线的经营者造成的产量波动上面和下面的门槛。如果一个门槛, T1讯号适用于图像,并具有优势的平均强度相等的T1 ,然后由于噪声,将先进的情况下,逢低低于阈值。同样它也将延长超过阈值决策的优势看起来像一个虚线。为了避免这种情况,滞后使用2的门槛,高和低。任何像素的图像,其值大于表# t1推定为边缘像素,并标示为这种立即。然后,任何像素连接到这个边缘像素,并有一个值大于时刻还选定为边缘像素。如果您认为以下的优势,您需要一个梯度的时刻开始,但你不停止直到触及梯度低于表# t1 。

Canny边缘检测是一种使用多种边缘检测算法检测边缘的方法。由John 于1986年提出,并在论文中有详尽的描述。 1)去噪。噪声会影响边缘检测的准确度。通常采用高斯滤波去除图像中的噪声。滤波器的核越大,边缘信息对噪声的敏感度就越低。不过,核越大,边缘检测的定位错误也会随之增加。通常一个5 X 5的核能满足大多数情况。 2)计算梯度的幅度与方向。梯度的方向与边缘的方向是垂直的,通常就取近似值为·水平、垂直、对角线等八个不同的方向。 3)非极大值抑制,即适当地让边缘变瘦。在获得了梯度的幅度和方向后,遍历图像中的像素点,去除所有非边缘的点。具体实现上,判断当前像素点是否是周围像素点中具有相同梯度方向的最大值,如果是,则保留该点;如果不是则抑制(归零)。 4)确定边缘。用双阈值算法确定最终的边缘信息。完成之前三步骤后,图像的强边缘已经在当前获取的边缘图像内。但一些虚边缘可能也在边缘图像内,这些虚边缘可能是真实的图像产生的,也可能是由于噪声产生的(必须将其剔除)。         设置两个阈值,其中一个为高阈值maxVal,另一个为低阈值minVal。根据当前边缘像素的梯度值与这两个阈值之间的关系,判断边缘的属性。如果当前边缘像素的梯度值不小于maxVal,则将当前边缘像素标记为强边缘;如果介于maxVal与minVal之间,则标记为弱边缘(先保留);如果小于minVal,则抑制当前边缘像素。之后再判断虚边缘是否与强边缘有连接,有连接,则处理为边缘;无连接则抑制。 OpenCV提供了()来实现边缘检测:dst : 为计算得到的边缘图像 image: 为8位输入图像 threshold1: 表示处理过程中的的第一个阈值 threshold2: 表示处理过程中的的第二个阈值 apertureSize: 表示Sobel算子的孔径大小。 L2gradient: 为计算图像梯度幅度的标识。其默认值是False。如果为True,则使用更精确的L2范数进行计算,否则使用L1范数。 例如:

Canny边缘检测教程 Author: Bill Green (2002) 作者:比尔绿色( 2002 ) HOME EMAIL 主页 电子邮件 This tutorial assumes the reader: 本教程假定读者: (1) Knows how to develop source code to read raster data ( 1 )知道如何发展的源代码阅读栅格数据 (2) Has already read my Sobel edge detection tutorial ( 2 )已经阅读我Sobel边缘检测教程 This tutorial will teach you how to:本教程将教你如何: (1) Implement the Canny edge detection algorithm. ( 1 )实施Canny边缘检测算法。 INTRODUCTION 导言 Edges characterize boundaries and are therefore a problem of fundamental importance in image processing.边的特点,因此,边界问题,根本的重要性在图像处理中。 Edges in images are areas with strong intensity contrasts – a jump in intensity from one pixel to the next.在图像的边缘地区,强度强的反差-一个跳转的强度从一个像素的下一个。 Edge detecting an image significantly reduces the amount of data and filters out useless information, while preserving the important structural properties in an image. This was also stated in my Sobel and Laplace edge detection tutorial, but I just wanted reemphasize the point of why you would want to detect edges.边缘检测的图像大大减少了大量的数据,并过滤掉无用的信息,同时保持重要的结构性能的形象。这也是我在索贝尔和拉普拉斯边缘检测教程,但我只是想再次强调这一点的,为什么你会要检测的边缘。 The Canny edge detection algorithm is known to many as the optimal edge detector. Canny's intentions were to enhance the many edge detectors already out at the time he started his work.的Canny边缘检测算法是众所周知的许多人视为最佳边缘检测。坎尼的意图是要加强许多先进的探测器已经在的时候,他开始他的工作。 He was very successful in achieving his goal and his ideas and methods can be found in his paper, " A Computational Approach to Edge Detection ".他很成功地实现他的目标和他的思想和方法中可以找到他的论文“ 计算方法的边缘检测 ” 。 In his paper, he followed a list of criteria to improve current methods of edge detection.在他的文件中,他遵循的标准清单,以改善目前的边缘检测方法。 The first and most obvious is low error rate.第一个也是最明显的错误率低。 It is important that edges occuring in images should not be missed and that there be NO responses to non-edges.重要的是,发生在图像边缘不应错过的,没有任何反应,非边缘。 The second criterion is that the edge points be well localized. In other words, the distance between the edge pixels as found by the detector and the actual edge is to be at a minimum.第二个标准是,边缘点很好地本地化。换言之,之间的距离边缘像素作为探测器发现和实际边缘要在最低限度。 A third criterion is to have only one response to a single edge.第三个标准是,只有一个回应单一优势。 This was implemented because the first 2 were not substantial enough to completely eliminate the possibility of multiple responses to an edge.这是第一次实施,因为并没有实质性的2足以完全消除的可能性,多反应的优势。 Based on these criteria, the canny edge detector first smoothes the image to eliminate and noise.根据这些标准, Canny边缘检测器的第一个平滑的图像,以消除和噪音。 It then finds the image gradient to highlight regions with high spatial derivatives.然后认定的形象,以突出地区梯度高空间衍生物。 The algorithm then tracks along these regions and suppresses any pixel that is not at the maximum (nonmaximum suppression).该算法然后轨道沿着这些地区和抑制任何像素这不是在最高( nonmaximum制止) 。 The gradient array is now further reduced by hysteresis.梯度阵列现在进一步减少滞后。 Hysteresis is used to track along the remaining pixels that have not been suppressed.磁滞用来追踪沿其余像素,但没有压制。 Hysteresis uses two thresholds and if the magnitude is below the first threshold, it is set to zero (made a nonedge).磁滞使用两个阈值,如果规模低于第一道门槛,这是设置为零(发了nonedge ) 。 If the magnitude is above the high threshold, it is made an edge.如果是规模以上的高门槛,这是一个优势。 And if the magnitude is between the 2 thresholds, then it is set to zero unless there is a path from this pixel to a pixel with a gradient above T2.如果震级之间的2阈值,那么它设置为零,除非有一条从这个像素一个像素的梯度上述时刻。 Step 1 第1步 In order to implement the canny edge detector algorithm, a series of steps must be followed.为了落实Canny边缘检测算法,一系列步骤必须遵循。 The first step is to filter out any noise in the original image before trying to locate and detect any edges.第一步是筛选出任何噪音的原始图像在寻找和发现任何边缘。 And because the Gaussian filter can be computed using a simple mask, it is used exclusively in the Canny algorithm.而且因为高斯滤波器可以用一个简单的计算面具,它是专门用于在Canny算法。 Once a suitable mask has been calculated, the Gaussian smoothing can be performed using standard convolution methods.一旦合适的面罩已计算,高斯平滑可以用标准的卷积方法。 A convolution mask is usually much smaller than the actual image.阿卷积掩模通常远远小于实际的形象。 As a result, the mask is slid over the image, manipulating a square of pixels at a time. The larger the width of the Gaussian mask, the lower is the detector's sensitivity to noise .因此,该面具是下跌的形象,操纵一个正方形的像素上。 较大的宽度高斯面具,较低的是探测器的敏感性噪音 。 The localization error in the detected edges also increases slightly as the Gaussian width is increased.定位误差检测边缘也略有增加的高斯宽度增加。 The Gaussian mask used in my implementation is shown below.高斯遮罩使用我在执行下面显示。 Step 2 第2步 After smoothing the image and eliminating the noise, the next step is to find the edge strength by taking the gradient of the image.经过平滑的形象,消除噪音,下一步就是要找到优势兵力,采取梯度的形象。 The Sobel operator performs a 2-D spatial gradient measurement on an image.的Sobel算子进行二维空间梯度测量的形象。 Then, the approximate absolute gradient magnitude (edge strength) at each point can be found.然后,大约绝对梯度幅度(边缘强度)各点可以找到。 The Sobel operator uses a pair of 3x3 convolution masks, one estimating the gradient in the x-direction (columns) and the other estimating the gradient in the y-direction (rows). Sobel算子的使用对3x3卷积口罩,一个梯度估计在X方向(栏)和其他的梯度估计的Y方向(行) 。 They are shown below:它们如下所示: The magnitude, or EDGE STRENGTH, of the gradient is then approximated using the formula:的规模,或EDGE强度,梯度近似然后使用公式: |G| = |Gx| + |Gy| | G | = | GX的| + |戈瑞| Step 3 第3步 Finding the edge direction is trivial once the gradient in the x and y directions are known.寻找边缘方向是小事,一旦梯度在X和Y方向是众所周知的。 However, you will generate an error whenever sumX is equal to zero.然而,你会产生错误时sumX等于零。 So in the code there has to be a restriction set whenever this takes place.因此,在代码中必须有一个限制规定只要发生。 Whenever the gradient in the x direction is equal to zero, the edge direction has to be equal to 90 degrees or 0 degrees, depending on what the value of the gradient in the y-direction is equal to.每当梯度在x方向等于零,边缘的方向,必须等于90度或0度,取决于什么的价值梯度的Y方向等于。 If GY has a value of zero, the edge direction will equal 0 degrees.如果青的值为零,边缘方向将等于0度。 Otherwise the edge direction will equal 90 degrees.否则边缘方向将等于90度。 The formula for finding the edge direction is just:公式为寻找边缘方向是: theta = invtan (Gy / Gx)论旨= invtan (戈瑞/ GX的) Step 4 第4步 Once the edge direction is known, the next step is to relate the edge direction to a direction that can be traced in an image.一旦边缘方向众所周知,下一步是与边缘方向为方向,可以追溯到在一个图像。 So if the pixels of a 5x5 image are aligned as follows:因此,如果一个5x5像素图像对齐如下: x x x x x x x x x x x x x x x x x x x x x x a x x x x 1 x x x x x x x x x x x x x x x x x x x x x x Then, it can be seen by looking at pixel " a ", there are only four possible directions when describing the surrounding pixels - 0 degrees (in the horizontal direction), 45 degrees (along the positive diagonal), 90 degrees (in the vertical direction), or 135 degrees (along the negative diagonal).然后,可以看到看像素的“ A ” ,只有4个可能的方向时,描述了周围的像素- 0度 (水平方向) , 45度 (沿积极对角线) , 90度 (垂直方向) ,或135度 (沿负对角线) 。 So now the edge orientation has to be resolved into one of these four directions depending on which direction it is closest to (eg if the orientation angle is found to be 3 degrees, make it zero degrees).所以,现在的边缘方向已经得到解决纳入其中四个方向取决于哪个方向,它是最接近于(如角被发现有3度,使零摄氏度) 。 Think of this as taking a semicircle and dividing it into 5 regions.认为这是采取了半圆形和分裂成5个地区。 Therefore, any edge direction falling within the yellow range (0 to & to 180 degrees) is set to 0 degrees.因此,任何先进的方向范围内的黄色范围 ( 0至5月22日& 至180度)设置为0度。 Any edge direction falling in the green range ( to degrees) is set to 45 degrees. Any edge direction falling in the blue range ( to degrees) is set to 90 degrees.任何先进的方向下滑的绿色范围 ( 至度)设置为45度。任何优势的方向下滑的蓝色范围 ( 至度)设置为90度。 And finally, any edge direction falling within the red range ( to degrees) is set to 135 degrees.最后,任何先进的方向范围内的红色范围 ( 到度)设置为135度。 Step 5 第5步 After the edge directions are known, nonmaximum suppression now has to be applied. Nonmaximum suppression is used to trace along the edge in the edge direction and suppress any pixel value (sets it equal to 0) that is not considered to be an edge. This will give a thin line in the output image.在被称为边缘方向, nonmaximum抑制现在必须适用。 Nonmaximum抑制是用来追踪沿边缘方向和制止任何像素值(套等于0 )这是不被认为是优势。这将给细线的输出图像。 Step 6 第6步 Finally, hysteresis is used as a means of eliminating streaking.最后,滞后是用来作为一种手段,消除条纹。 Streaking is the breaking up of an edge contour caused by the operator output fluctuating above and below the threshold.裸奔是打破的边缘轮廓线的经营者造成的产量波动上面和下面的门槛。 If a single threshold, T1 is applied to an image, and an edge has an average strength equal to T1, then due to noise, there will be instances where the edge dips below the threshold.如果一个门槛, T1讯号适用于图像,并具有优势的平均强度相等的T1 ,然后由于噪声,将有情况下,边逢低低于阈值。 Equally it will also extend above the threshold making an edge look like a dashed line.同样它也将延长超过阈值决策的优势看起来像一个虚线。 To avoid this, hysteresis uses 2 thresholds, a high and a low.为了避免这种情况,滞后使用2的门槛,高和低。 Any pixel in the image that has a value greater than T1 is presumed to be an edge pixel, and is marked as such immediately.任何像素的图像,其值大于表# t1推定为边缘像素,并标示为这种立即。 Then, any pixels that are connected to this edge pixel and that have a value greater than T2 are also selected as edge pixels.然后,任何像素连接到这个边缘像素,并有一个值大于时刻还选定为边缘像素。 If you think of following an edge, you need a gradient of T2 to start but you don't stop till you hit a gradient below T1.如果您认为以下的优势,您需要一个梯度的时刻开始,但你不停止直到触及梯度低于表# t1 。 You are visitor number: 你是第位访客人数:

摘 要 针对基于PC实现的图像边缘检测普遍存在的执行速度慢、不能满足实时应用需求等缺点,本文借助于TI公司的TMS320DM642图像处理芯片作为数字图像处理硬件平台,DSP/BIOS为实时操作系统,利用CCS开发环境来构建应用程序;并通过摄像头提取视频序列,实现对边缘检测Sobel算子改进[1]。 关键词 DM642;Sobel算子;程序优化;图像边缘检测 1 引言 边缘是图像中重要的特征之一,是计算机视觉、模式识别等研究领域的重要基础。图像的大部分主要信息都存在于图像的边缘中,主要表现为图像局部特征的不连续性,是图像中灰度变化比较强烈的地方,也即通常所说的信号发生奇异变化的地方。经典的边缘检测算法是利用边缘处的一阶导数取极值、二阶导数在阶梯状边缘处呈零交叉或在屋顶状边缘处取极值的微分算法。图像边缘检测一直是图像处理中的热点和难点。 近年来,随着数学和人工智能技术的发展,各种类型的边缘检测算法不断涌现,如神经网络、遗传算法、数学形态学等理论运用到图像的边缘检测中。但由于边缘检测存在着检测精度、边缘定位精度和抗噪声等方面的矛盾及对于不同的算法边缘检测结果的精度却没有统一的衡量标准,所以至今都还不能取得令人满意的效果。另外随着网络和多媒体技术的发展,图像库逐渐变得非常庞大;而又由于实时图像的目标和背景间的变化都不尽相同,如何实现实时图像边缘的精确定位和提取成为人们必须面对的问题。随着DSP芯片处理技术的发展,尤其是在图像处理方面的提高如TMS320C6000系列,为实现高效的、实时的边缘检测提供了可能性[5]。在经典的边缘检测算法中,Sobel边缘检测算法因其计算量小、实现简单、处理速度快,并且所得的边缘光滑、连续等优点而得到广泛的应用。本文针对Sobel算法的性能,并借助于TMS320DM642处理芯片[3],对该边缘检测算法进行了改进和对程序的优化,满足实时性需求。2 Sobel边缘检测算法的改进 经典的Sobel图像边缘检测算法,是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个是检测垂直边缘,一个是检测水平边缘。算法的基本原理:由于图像边缘附近的亮度变化较大,所以可以把那些在邻域内,灰度变化超过某个适当阈值TH的像素点当作边缘点。Sobel算法的优点是计算简单,速度快。但由于只采用了两个方向模板,只能检测水平方向和垂直方向的边缘,因此,这种算法对于纹理较复杂的图像,其边缘检测效果欠佳;同时,经典Sobel算法认为,凡灰度新值大于或等于阈值的像素点都是边缘点。这种判定依据是欠合理的,会造成边缘点的误判,因为多噪声点的灰度新值也很大。 图像加权中值滤波 由于图像中的边缘和噪声在频域中均表现为高频成分,所以在边缘检测之前有必要先对图像进行一次滤波处理,减少噪声对边缘检测的影响。中值滤波是一种非线性信号的处理方法[2],在图像处理中,常用来保护边缘信息;保证滤波的效果。加权中值滤波,首先对每个窗口进行排序,取适当的比例,进行曲线拟合,拟合后的曲线斜率表征了此窗口的图像特征,再根据图像各部分特性适当的选择权重进行加权。 增加方向模板 除了水平和垂直两方向外,图像的边缘还有其它的方向,如135o和45o等,为了增加算子在某一像素点检测边缘的精度,可将方向模板由2个增加为8个即再在经典的方向模板的基础上增加6个方向模板,如图1所示。 边缘的定位及噪声的去除 通常物体的边缘是连续而光滑的,且边缘具有方向和幅度两个特征,而噪声是随机的。沿任一边缘点走向总能找到另一个边缘点,且这两个边缘点之间的灰度差和方向差相近。而噪声却不同,在一般情况下,沿任一噪声点很难找到与其灰度值和方差相似的噪声点[4]。基于这一思想,可以将噪声点和边缘点区分开来。对于一幅数字图像f(x,y),利用上述的8个方向模板Sobel算子对图像中的每个像素计算,取得其中的最大值作为该点的新值,而该最大值对应的模板所表示的方向为该像素点的方向。若|f(x,y)-f(x+i,y+j)|>TH2,对于任意i=0,1,-1;j=0,1,-1均成立,则可判断点(x,y)为噪声点。图2给出了图像边缘检测系统改进算法的软件流程图。图1 边缘检测8个方向模板图2 系统结构图3 基于TMS320DM642的图像处理的设计及算法优化 TMS320DM642功能模块及图像处理系统的硬件结构 DSP以高速数字信号处理为目标进行芯片设计,采用改进的哈佛结构(程序总线和数据总线分开)、内部具有硬件乘法器、应用流水线技术、具有良好的并行性和专门用于数字信号处理的指令及超长指令字结构(VLIW)等特点;能完成运算量大的实时数字图像处理工作。 TMS320DM642是TI公式最近推出的功能比较强大的TMS320C6x系列之一,是目前定点DSP领域里性能较高的一款[6]。其主频是600MHz,8个并行运算单元、专用硬件逻辑、片内存储器和片内外设电路等硬件,处理能力可达4800MIPS。DM642基于C64x内核,并在其基础上增加了很多外围设备和接口,因而在实际工程中的应用更为广泛和简便。本系统使用50 MHz晶体震荡器作为DSP的外部时钟输入,经过内部锁相环12倍频后产生600 MHz的工作频率。DM642采用了2级缓存结构(L1和L2),大幅度提高了程序的运行性能。片内64位的EMIF(External Memory Interface)接口可以与SDRAM、Flash等存储器件无缝连接,极大地方便了大量数据的搬移。更重要的是,作为一款专用视频处理芯片,DM642包括了3个专用的视频端口(VP0~VP2),用于接收和处理视频,提高了整个系统的性能。此外,DM642自带的EMAC口以及从EMIF 口扩展出来的ATA口,还为处理完成后产生的海量数据提供了存储通道。本系统是采用瑞泰公司开发的基于TI TMS320DM642 DSP芯片的评估开发板——ICETEK DM642 PCI。在ICETEK DM642 PCI评估板中将硬件平台分为五个部分,分别是视频采集、数据存储、图像处理、结果显示和电源管理。视频采集部分采用模拟PAL制摄像头,配合高精度视频A/D转换器得到数字图像。基于DSP的视频采集要求对视频信号具备采集,实时显示、对图像的处理和分析能力。视频A/D采样电路—SAA7115与视频端口0或1相连,实现视频的实时采集功能。视频D/A电路—SAA7105与视频口2相连,视频输出信号支持RGB、HD合成视频、PAL/NTSC复合视频和S端子视频信号。通过I2C总线对SAA7105的内部寄存器编程实现不同输出。 整个系统过程由三个部分组成:图像采集—边缘处理—输出显示,如图2所示。摄像头采集的视频信号经视频编码器SAA7115数字化,DM642通过I2C总线对SAA7115进行参数配置。在SAA7115内部进行一系列的处理和变换后形成的数字视频数据流,输入到核心处理单元DM642。经过DSP处理后的数字视频再经过SAA7105视频编码器进行D/A转换后在显示器上显示最终处理结果。 图像处理的软件设计和算法优化的实现 由于在改进Sobel边缘检测算子性能的同时,也相对增加了计算量,尤其是方向模板的增加,每个像素点均由原来的2次卷积运算增加为8次卷积运算,其实时性大大减弱。为了改进上述的不足,在深入研究处理系统和算法后,针对TMS320DM642的硬件结构特点,研究适合在TMS320DM642中高效运行的Sobel改进算法,满足实时处理的要求。整个程序的编写和调试按照C6000软件开发流程进行,流程分为:产生C代码、优化C代码和编写线性汇编程序3个阶段。使用的工具是TI的集成开发环境CCS。在CCS下,可对软件进行编辑、编译、调试、代码性能测试等工作。在使用C6000编译器开发和优化C代码时[7-8],对C代码中低效率和需要反复调用的函数需用线性汇编重新编写,再用汇编优化器优化。整个系统的控制以及数字图像处理是用C程序实现,大部分软件设计采用C程序实现,这无疑提高了程序的可读性和可移植性,而汇编程序主要是实现DM642的各部分初始化。其边缘检测优化算法在DM642中的实现步骤具体如下: S1:根据DM642的硬件结构要求和控制寄存器设置,初始化系统并编写实现边缘检测算法的C程序。 S2:借助CCS开发环境的优化工具如Profiler等产生.OUT文件。 S3:根据产生的附件文件如.MAP文件,分析优化结果及源程序结构,进一步改进源程序和优化方法。 S4:使用CCS中调试、链接、运行等工具,再生成.OUT可执行文件。 S5:运行程序,如果满足要求则停止;否则重复步骤S2~S4直至满足使用要求。4 实验结果 本文以Lena图像为例根据上述的硬件环境和算法实现的原理和方法,图4~图6分别给出了在该系统下采集的视频Lena图像及使用边缘检测算子和改进后处理的结果。由实验结果可以看出,在该系统下能实时完成视频图像的处理,并且给出的边缘检测算子能较好的消除噪声的影响,边缘轮廓清晰。该算法不仅能抑制图像中大部分噪声和虚假边缘,还保证了较高的边缘点位精度。图4 Lena原始图像 图5 传统Sobel算子 图6 改进Sobel算子5 总结 本文实现了在TMS320DM642评估板上用改进的Sobel算子对实时图像进行边缘检测,无延迟地得到边缘图像。边缘检测效果较好,既提高了图像检测的精度又满足了实时性的要求。从检测结果看,利用该改进后的算子在边缘精确定位、边缘提取都达到了很好的效果,且抗噪声能力强,并为目标跟踪、无接触式检测、自动驾驶、视频监控等领域的应用提供了坚实的基础。参考文献[1] 王磊等. 基于Sobel理论的边缘提取改善方法[J].中国图像图形学报,[2] 陈宏席. 基于保持平滑滤波的Sobel算子边缘检测.兰州交通大学学报,2006,25(1):86—90[3] 熊伟. 基于TMS320DM642的多路视频采集处理板卡硬件设计与实现[ M]. 国外电子元器件,2006[4] 朱立.一种具有抗噪声干扰的图像边缘提取算法的研究[J].电子技术应用.2004,25(1)[5] 刘松涛,周晓东.基于TMS320C6201的实时图像处理系统[J].计算机工程,2005(7):17—23[6] TI TMS320DM642 video/imaging fixed-point digital signal processor data manual,2003[7] TMS320C6x Optimizing C Compiler User’s Guide’ TEXAS INSTRUMENTS”,2002[8] TMS320C32x Optimizing C/C++ Compiler User's Guide,Texas Instruments Incorporated,2001

图像的边缘检测论文

Canny边缘检测教程 作者:比尔绿色( 2002 ) 主页电子邮件 本教程假定读者: ( 1 )知道如何发展的源代码阅读栅格数据 ( 2 )已经阅读我Sobel边缘检测教程 本教程将教你如何: ( 1 )实施Canny边缘检测算法。 导言 边的特点,因此,边界问题,根本的重要性在图像处理中。在图像的边缘地区,强度强的反差?猛增强度从一个像素的下一个。边缘检测的图像大大减少了大量的数据,并过滤掉无用的信息,同时保持重要的结构性能的形象。这也是我在索贝尔和拉普拉斯边缘检测教程,但我只是想再次强调这一点的,为什么您要检测的边缘。 的Canny边缘检测算法是众所周知的许多人视为最佳边缘检测。精明的意图是要加强许多边缘探测器已经在的时候,他开始了他的工作。他很成功地实现他的目标和他的思想和方法中可以找到他的论文“计算方法的边缘检测” 。在他的文件中,他遵循的标准清单,以改善目前的边缘检测方法。第一个也是最明显的错误率低。重要的是,发生在图像边缘不应错过的,没有任何反应,非边缘。第二个标准是,边缘点很好地本地化。换言之,之间的距离边缘像素作为探测器发现和实际边缘要在最低限度。第三个标准是,只有一个回应单一优势。这是第一次实施,因为并没有实质性的2足以完全消除的可能性,多反应的优势。 根据这些标准, Canny边缘检测器的第一个平滑的图像,以消除和噪音。然后认定的形象,以突出地区梯度高空间衍生物。该算法然后轨道沿着这些地区和抑制任何像素这不是在最高( nonmaximum制止) 。梯度阵列现在进一步减少滞后。磁滞用来追踪沿其余像素,但没有压制。磁滞使用两个阈值,如果规模低于第一道门槛,这是设置为零(发了nonedge ) 。如果是规模以上的高门槛,这是一个优势。如果震级之间的2阈值,那么它设置为零,除非有一条从这个像素一个像素的梯度上述时刻。 第1步 为了落实Canny边缘检测算法,一系列步骤必须遵循。第一步是筛选出任何噪音的原始图像在寻找和发现任何边缘。而且因为高斯滤波器可以用一个简单的计算面具,它是专门用于在Canny算法。一旦合适的面罩已计算,高斯平滑可以用标准的卷积方法。阿卷积掩模通常远远小于实际的形象。因此,该面具是下跌的形象,操纵一个正方形像素的时间。较大的宽度高斯面具,较低的是探测器的敏感性噪音。定位误差检测边缘也略有增加的高斯宽度增加。高斯遮罩使用我在执行下面显示。 第2步 经过平滑的形象,消除噪音,下一步就是要找到优势兵力,采取梯度的形象。的Sobel算子进行二维空间梯度测量的形象。然后,大约绝对梯度幅度(边缘强度)各点可以找到。 Sobel算子的使用对3x3卷积口罩,一个梯度估计在X方向(栏)和其他的梯度估计的Y方向(行) 。它们如下所示: 的规模,或EDGE强度,梯度近似然后使用公式: | G | = | GX的| + |戈瑞| 第3步 寻找边缘方向是小事,一旦梯度在X和Y方向是众所周知的。然而,你会产生错误时sumX等于零。因此,在代码中必须有一个限制规定只要发生。每当梯度在x方向等于零,边缘的方向,必须等于90度或0度,取决于什么的价值梯度的Y方向等于。如果青的值为零,边缘方向将等于0度。否则边缘方向将等于90度。公式为寻找边缘方向是: 论旨= invtan (戈瑞/ GX的) 第4步 一旦边缘方向众所周知,下一步是与边缘方向为方向,可以追溯到在一个图像。因此,如果一个5x5像素图像对齐如下: x x x x x x x x x x x x 1 x x x x x x x x x x x x 然后,可以看到看像素的“ A ” ,只有4个可能的方向时,描述了周围的像素- 0度(水平方向) , 45度(沿积极对角线) , 90度(垂直方向) ,或135度(沿负对角线) 。所以,现在的边缘方向已经得到解决纳入其中四个方向取决于哪个方向,它是最接近于(如角被发现有3度,使零摄氏度) 。认为这是采取了半圆形和分裂成5个地区。 因此,任何先进的方向范围内的黄色范围( 0至5月22日& 至180度)设置为0度。任何先进的方向下滑的绿色范围( 至度)设置为45度。任何先进的方向下滑的蓝色范围( 至度)设置为90度。最后,任何先进的方向范围内的红色范围( 到度)设置为135度。 第5步 在被称为边缘方向, nonmaximum制止目前适用。 Nonmaximum抑制是用来追踪沿边缘方向和制止任何像素值(套等于0 )这是不被认为是优势。这将让细线在输出图像。 第6步 最后,滞后是用来作为一种手段,消除条纹。裸奔是打破的边缘轮廓线的经营者造成的产量波动上面和下面的门槛。如果一个门槛, T1讯号适用于图像,并具有优势的平均强度相等的T1 ,然后由于噪声,将先进的情况下,逢低低于阈值。同样它也将延长超过阈值决策的优势看起来像一个虚线。为了避免这种情况,滞后使用2的门槛,高和低。任何像素的图像,其值大于表# t1推定为边缘像素,并标示为这种立即。然后,任何像素连接到这个边缘像素,并有一个值大于时刻还选定为边缘像素。如果您认为以下的优势,您需要一个梯度的时刻开始,但你不停止直到触及梯度低于表# t1 。

HED 论文: Holistically-Nested Edge Detection HED(Holistically-Nested Edge Detection)是一个端到端的边缘检测网络,特点是提取不同尺度的特征,和多输出的多监督及融合。 HED 在产业上应用比较广泛。 Holistic:指该方法的预测和训练都是端到端的;Neted:指通过多层级的输出,渐进地优化最终结果。作者的命名逻辑... 看这篇边缘检测的论文主要是想知道边缘检测的损失函数应该怎么设计。我本来的想法是直接像语义分割一样,用 IoU ,后来想想不对,如果一个边缘检测结果是 GT 平移了几个像素,那它仍可称得上好,但它的 IoU 却会骤降至和随机结果差不了多少。如果对边缘检测问题用 IoU 做优化对象,恐怕在优化时根本找不到可以下降的梯度方向。边缘检测的任务是提取图像内每个对象的边界,而排除对象的纹理。HED 被设计以解决两个问题:(1)对图像整体的训练和预测,End-to-end;(2)多尺度的特征提取。端到端很容易实现,因为边缘检测任务的输入和输出都是一张图片,只是通道数不同,很明显可以应用一个全卷积的网络来实现。HED 的骨干网络采用 VGG,并将 VGG 后面的全连接层结构全部移除,只保留卷积层。一些曾被应用过或正在被应用的多尺度特征提取方法。 (a) 多通路并行网络,通过不同的网络深度得到不同的感受野,输出聚合在一起; (b) 跳线连接,将来自不同卷积层的输出通过跳线连接在一起,作为特征提取结果(实际上跳线连接也可以在各个卷积层之间连接,而不仅限于到输出层,比如 U-Net 结构); (c) 同一个网络,采用不同尺寸的输入; (d) 不同深度的网络完全分立(这个方法感觉最拉跨,各个尺度上的特征没有相关性,也没听说过有人这么搞); (e) HED 提出的结构,在卷积网络的不同深度引出“侧输出”,将这些侧输出聚合成最终输出(和 (b) 的不同在于每个侧输出都能被监督并进行反向传播,这里应用了中继监督的思想,也是一个很泛用的做法)。这篇文章也用了中继监督,之前看的 Stacked Hourglass 也是。不过 Stacked Hourglass 的侧输出是还要被输入到下个特征提取网络里继续 refine 的,旨在迭代地优化输出结果。 HED 的侧输出和 GoogLnet 等一些常见的侧输出比较像,前面也说了,浅层的特征保留了更多的信息,但是相对而言感受野更小,那么 HED 就取多个不同深度的特征,分别在这些位点设置输出层。具体地,HED 在每个 VGG 内尺寸的特征图上引出一个卷积层作为侧输出层。HED 将边缘检测任务归纳为对每个像素点的二分类任务——“边缘”和“非边缘”。对于 HED 的单个输出而言,其损失函数为所有像素点的二分类损失函数的和,另外,由于边缘占的像素总数一般都会少于非边缘,所以实际是边缘的像素提供的二分类损失函数会乘以一个更大的权重,以进行正负样本平衡。HED 整体的损失函数就是它所有输出的损失函数的加权和。 转化成数学语言就是:其中 指特征提取网络(VGG)的权重, 指 HED 第 层输出的输出层权重, 为平衡每层输出为最终损失贡献的系数, 为平衡正负样本的系数, 和 分别指代边缘像素和非边缘像素, 为像素 输出的置信度。 上面的损失函数是针对每个侧输出进行优化,HED 的最终输出是每个侧输出按照一定的权重加总得到的融合输出,这些权重是通过训练学习到的,而非人为设定的。 融合输出的损失函数如下:其中融合输出 , 是每个侧输出在融合时的权重, 计算输出和 GT 之间的距离,这里采用交叉熵函数。 整个模型在训练时的优化目标权重为:可以看到,最终的损失函数中存在一定的冗余,由于融合输出是由侧输出得到的,侧输出似乎被不止一次地惩罚了。不过,先不论这种冗余是不是必要的,据作者言,只对融合输出进行惩罚得到的效果是不够好的,因为模型总会区域学习更大尺度上的特征。 HED 的损失函数是一种很直接的思路,不过任然有这样的问题:当一个被预测为“边缘”的像素点实际上是“非边缘”时,不管它和 GT 离得有多近,体现在损失函数上,都和一个差 GT 十万八千里的像素点没有区别。这种设计——就我个人的理解——会让损失函数的梯度出现大面积的平坦区域,梯度下降难以工作。但目前的工作似乎都是在用交叉熵作为损失函数,虽然今年也提出了 G-IoU、D-IoU 等将 IoU 调整后作为损失函数的方法,但是限于数学表达上的困难,目前只能应用于矩形边界框,而不能应用于像素集分割。

Canny边缘检测教程 Author: Bill Green (2002) 作者:比尔绿色( 2002 ) HOME EMAIL 主页 电子邮件 This tutorial assumes the reader: 本教程假定读者: (1) Knows how to develop source code to read raster data ( 1 )知道如何发展的源代码阅读栅格数据 (2) Has already read my Sobel edge detection tutorial ( 2 )已经阅读我Sobel边缘检测教程 This tutorial will teach you how to:本教程将教你如何: (1) Implement the Canny edge detection algorithm. ( 1 )实施Canny边缘检测算法。 INTRODUCTION 导言 Edges characterize boundaries and are therefore a problem of fundamental importance in image processing.边的特点,因此,边界问题,根本的重要性在图像处理中。 Edges in images are areas with strong intensity contrasts – a jump in intensity from one pixel to the next.在图像的边缘地区,强度强的反差-一个跳转的强度从一个像素的下一个。 Edge detecting an image significantly reduces the amount of data and filters out useless information, while preserving the important structural properties in an image. This was also stated in my Sobel and Laplace edge detection tutorial, but I just wanted reemphasize the point of why you would want to detect edges.边缘检测的图像大大减少了大量的数据,并过滤掉无用的信息,同时保持重要的结构性能的形象。这也是我在索贝尔和拉普拉斯边缘检测教程,但我只是想再次强调这一点的,为什么你会要检测的边缘。 The Canny edge detection algorithm is known to many as the optimal edge detector. Canny's intentions were to enhance the many edge detectors already out at the time he started his work.的Canny边缘检测算法是众所周知的许多人视为最佳边缘检测。坎尼的意图是要加强许多先进的探测器已经在的时候,他开始他的工作。 He was very successful in achieving his goal and his ideas and methods can be found in his paper, " A Computational Approach to Edge Detection ".他很成功地实现他的目标和他的思想和方法中可以找到他的论文“ 计算方法的边缘检测 ” 。 In his paper, he followed a list of criteria to improve current methods of edge detection.在他的文件中,他遵循的标准清单,以改善目前的边缘检测方法。 The first and most obvious is low error rate.第一个也是最明显的错误率低。 It is important that edges occuring in images should not be missed and that there be NO responses to non-edges.重要的是,发生在图像边缘不应错过的,没有任何反应,非边缘。 The second criterion is that the edge points be well localized. In other words, the distance between the edge pixels as found by the detector and the actual edge is to be at a minimum.第二个标准是,边缘点很好地本地化。换言之,之间的距离边缘像素作为探测器发现和实际边缘要在最低限度。 A third criterion is to have only one response to a single edge.第三个标准是,只有一个回应单一优势。 This was implemented because the first 2 were not substantial enough to completely eliminate the possibility of multiple responses to an edge.这是第一次实施,因为并没有实质性的2足以完全消除的可能性,多反应的优势。 Based on these criteria, the canny edge detector first smoothes the image to eliminate and noise.根据这些标准, Canny边缘检测器的第一个平滑的图像,以消除和噪音。 It then finds the image gradient to highlight regions with high spatial derivatives.然后认定的形象,以突出地区梯度高空间衍生物。 The algorithm then tracks along these regions and suppresses any pixel that is not at the maximum (nonmaximum suppression).该算法然后轨道沿着这些地区和抑制任何像素这不是在最高( nonmaximum制止) 。 The gradient array is now further reduced by hysteresis.梯度阵列现在进一步减少滞后。 Hysteresis is used to track along the remaining pixels that have not been suppressed.磁滞用来追踪沿其余像素,但没有压制。 Hysteresis uses two thresholds and if the magnitude is below the first threshold, it is set to zero (made a nonedge).磁滞使用两个阈值,如果规模低于第一道门槛,这是设置为零(发了nonedge ) 。 If the magnitude is above the high threshold, it is made an edge.如果是规模以上的高门槛,这是一个优势。 And if the magnitude is between the 2 thresholds, then it is set to zero unless there is a path from this pixel to a pixel with a gradient above T2.如果震级之间的2阈值,那么它设置为零,除非有一条从这个像素一个像素的梯度上述时刻。 Step 1 第1步 In order to implement the canny edge detector algorithm, a series of steps must be followed.为了落实Canny边缘检测算法,一系列步骤必须遵循。 The first step is to filter out any noise in the original image before trying to locate and detect any edges.第一步是筛选出任何噪音的原始图像在寻找和发现任何边缘。 And because the Gaussian filter can be computed using a simple mask, it is used exclusively in the Canny algorithm.而且因为高斯滤波器可以用一个简单的计算面具,它是专门用于在Canny算法。 Once a suitable mask has been calculated, the Gaussian smoothing can be performed using standard convolution methods.一旦合适的面罩已计算,高斯平滑可以用标准的卷积方法。 A convolution mask is usually much smaller than the actual image.阿卷积掩模通常远远小于实际的形象。 As a result, the mask is slid over the image, manipulating a square of pixels at a time. The larger the width of the Gaussian mask, the lower is the detector's sensitivity to noise .因此,该面具是下跌的形象,操纵一个正方形的像素上。 较大的宽度高斯面具,较低的是探测器的敏感性噪音 。 The localization error in the detected edges also increases slightly as the Gaussian width is increased.定位误差检测边缘也略有增加的高斯宽度增加。 The Gaussian mask used in my implementation is shown below.高斯遮罩使用我在执行下面显示。 Step 2 第2步 After smoothing the image and eliminating the noise, the next step is to find the edge strength by taking the gradient of the image.经过平滑的形象,消除噪音,下一步就是要找到优势兵力,采取梯度的形象。 The Sobel operator performs a 2-D spatial gradient measurement on an image.的Sobel算子进行二维空间梯度测量的形象。 Then, the approximate absolute gradient magnitude (edge strength) at each point can be found.然后,大约绝对梯度幅度(边缘强度)各点可以找到。 The Sobel operator uses a pair of 3x3 convolution masks, one estimating the gradient in the x-direction (columns) and the other estimating the gradient in the y-direction (rows). Sobel算子的使用对3x3卷积口罩,一个梯度估计在X方向(栏)和其他的梯度估计的Y方向(行) 。 They are shown below:它们如下所示: The magnitude, or EDGE STRENGTH, of the gradient is then approximated using the formula:的规模,或EDGE强度,梯度近似然后使用公式: |G| = |Gx| + |Gy| | G | = | GX的| + |戈瑞| Step 3 第3步 Finding the edge direction is trivial once the gradient in the x and y directions are known.寻找边缘方向是小事,一旦梯度在X和Y方向是众所周知的。 However, you will generate an error whenever sumX is equal to zero.然而,你会产生错误时sumX等于零。 So in the code there has to be a restriction set whenever this takes place.因此,在代码中必须有一个限制规定只要发生。 Whenever the gradient in the x direction is equal to zero, the edge direction has to be equal to 90 degrees or 0 degrees, depending on what the value of the gradient in the y-direction is equal to.每当梯度在x方向等于零,边缘的方向,必须等于90度或0度,取决于什么的价值梯度的Y方向等于。 If GY has a value of zero, the edge direction will equal 0 degrees.如果青的值为零,边缘方向将等于0度。 Otherwise the edge direction will equal 90 degrees.否则边缘方向将等于90度。 The formula for finding the edge direction is just:公式为寻找边缘方向是: theta = invtan (Gy / Gx)论旨= invtan (戈瑞/ GX的) Step 4 第4步 Once the edge direction is known, the next step is to relate the edge direction to a direction that can be traced in an image.一旦边缘方向众所周知,下一步是与边缘方向为方向,可以追溯到在一个图像。 So if the pixels of a 5x5 image are aligned as follows:因此,如果一个5x5像素图像对齐如下: x x x x x x x x x x x x x x x x x x x x x x a x x x x 1 x x x x x x x x x x x x x x x x x x x x x x Then, it can be seen by looking at pixel " a ", there are only four possible directions when describing the surrounding pixels - 0 degrees (in the horizontal direction), 45 degrees (along the positive diagonal), 90 degrees (in the vertical direction), or 135 degrees (along the negative diagonal).然后,可以看到看像素的“ A ” ,只有4个可能的方向时,描述了周围的像素- 0度 (水平方向) , 45度 (沿积极对角线) , 90度 (垂直方向) ,或135度 (沿负对角线) 。 So now the edge orientation has to be resolved into one of these four directions depending on which direction it is closest to (eg if the orientation angle is found to be 3 degrees, make it zero degrees).所以,现在的边缘方向已经得到解决纳入其中四个方向取决于哪个方向,它是最接近于(如角被发现有3度,使零摄氏度) 。 Think of this as taking a semicircle and dividing it into 5 regions.认为这是采取了半圆形和分裂成5个地区。 Therefore, any edge direction falling within the yellow range (0 to & to 180 degrees) is set to 0 degrees.因此,任何先进的方向范围内的黄色范围 ( 0至5月22日& 至180度)设置为0度。 Any edge direction falling in the green range ( to degrees) is set to 45 degrees. Any edge direction falling in the blue range ( to degrees) is set to 90 degrees.任何先进的方向下滑的绿色范围 ( 至度)设置为45度。任何优势的方向下滑的蓝色范围 ( 至度)设置为90度。 And finally, any edge direction falling within the red range ( to degrees) is set to 135 degrees.最后,任何先进的方向范围内的红色范围 ( 到度)设置为135度。 Step 5 第5步 After the edge directions are known, nonmaximum suppression now has to be applied. Nonmaximum suppression is used to trace along the edge in the edge direction and suppress any pixel value (sets it equal to 0) that is not considered to be an edge. This will give a thin line in the output image.在被称为边缘方向, nonmaximum抑制现在必须适用。 Nonmaximum抑制是用来追踪沿边缘方向和制止任何像素值(套等于0 )这是不被认为是优势。这将给细线的输出图像。 Step 6 第6步 Finally, hysteresis is used as a means of eliminating streaking.最后,滞后是用来作为一种手段,消除条纹。 Streaking is the breaking up of an edge contour caused by the operator output fluctuating above and below the threshold.裸奔是打破的边缘轮廓线的经营者造成的产量波动上面和下面的门槛。 If a single threshold, T1 is applied to an image, and an edge has an average strength equal to T1, then due to noise, there will be instances where the edge dips below the threshold.如果一个门槛, T1讯号适用于图像,并具有优势的平均强度相等的T1 ,然后由于噪声,将有情况下,边逢低低于阈值。 Equally it will also extend above the threshold making an edge look like a dashed line.同样它也将延长超过阈值决策的优势看起来像一个虚线。 To avoid this, hysteresis uses 2 thresholds, a high and a low.为了避免这种情况,滞后使用2的门槛,高和低。 Any pixel in the image that has a value greater than T1 is presumed to be an edge pixel, and is marked as such immediately.任何像素的图像,其值大于表# t1推定为边缘像素,并标示为这种立即。 Then, any pixels that are connected to this edge pixel and that have a value greater than T2 are also selected as edge pixels.然后,任何像素连接到这个边缘像素,并有一个值大于时刻还选定为边缘像素。 If you think of following an edge, you need a gradient of T2 to start but you don't stop till you hit a gradient below T1.如果您认为以下的优势,您需要一个梯度的时刻开始,但你不停止直到触及梯度低于表# t1 。 You are visitor number: 你是第位访客人数:

图像边缘检测论文英文

Canny边缘检测是一种使用多种边缘检测算法检测边缘的方法。由John 于1986年提出,并在论文中有详尽的描述。 1)去噪。噪声会影响边缘检测的准确度。通常采用高斯滤波去除图像中的噪声。滤波器的核越大,边缘信息对噪声的敏感度就越低。不过,核越大,边缘检测的定位错误也会随之增加。通常一个5 X 5的核能满足大多数情况。 2)计算梯度的幅度与方向。梯度的方向与边缘的方向是垂直的,通常就取近似值为·水平、垂直、对角线等八个不同的方向。 3)非极大值抑制,即适当地让边缘变瘦。在获得了梯度的幅度和方向后,遍历图像中的像素点,去除所有非边缘的点。具体实现上,判断当前像素点是否是周围像素点中具有相同梯度方向的最大值,如果是,则保留该点;如果不是则抑制(归零)。 4)确定边缘。用双阈值算法确定最终的边缘信息。完成之前三步骤后,图像的强边缘已经在当前获取的边缘图像内。但一些虚边缘可能也在边缘图像内,这些虚边缘可能是真实的图像产生的,也可能是由于噪声产生的(必须将其剔除)。         设置两个阈值,其中一个为高阈值maxVal,另一个为低阈值minVal。根据当前边缘像素的梯度值与这两个阈值之间的关系,判断边缘的属性。如果当前边缘像素的梯度值不小于maxVal,则将当前边缘像素标记为强边缘;如果介于maxVal与minVal之间,则标记为弱边缘(先保留);如果小于minVal,则抑制当前边缘像素。之后再判断虚边缘是否与强边缘有连接,有连接,则处理为边缘;无连接则抑制。 OpenCV提供了()来实现边缘检测:dst : 为计算得到的边缘图像 image: 为8位输入图像 threshold1: 表示处理过程中的的第一个阈值 threshold2: 表示处理过程中的的第二个阈值 apertureSize: 表示Sobel算子的孔径大小。 L2gradient: 为计算图像梯度幅度的标识。其默认值是False。如果为True,则使用更精确的L2范数进行计算,否则使用L1范数。 例如:

姓名:高强     学号: 【嵌牛导读】:本文主要介绍Canny图像边缘检测算法的步骤和对各个步骤的理解 【嵌牛鼻子】:边缘检测,Canny,步骤 【嵌牛提问】:canny边缘检测算法的步骤是怎样? 【嵌牛正文】: 1. Canny边缘检测算法的提出和指标 Canny算法是John Canny在1986年提出的,那年John Canny 28岁,该文章发表在PAMI顶级期刊上( Transactions on Pattern Analysis and Machine Intelligence,vol. 8, 1986 , pp 679-698  )。 Canny算子与Marr(LoG)边缘检测方法类似(Marr大爷号称计算机视觉之父),也属于是先平滑后求导数的方法。John Canny研究了最优边缘检测方法所需的特性,给出了评价边缘检测性能优劣的三个指标: (1)好的信噪比 ,即将非边缘点判定为边缘点的概率要低,将边缘点判为非边缘点的概率要低; (2)高的定位性能 ,即检测出的边缘点要尽可能在实际边缘的中心; (3)对单一边缘仅有唯一响应 ,即单个边缘产生多个响应的概率要低,并且虚假响应边缘应该得到最大抑制。 用一句话说,就是希望在提高对景物边缘的敏感性的同时,可以抑制噪声的方法才是好的边缘提取方法。 2.  Canny边缘检测算法的步骤 : (1)图像高斯滤波进行降噪处理。 (2)用一阶偏导的有限差分计算梯度的幅值和方向。 (3)对梯度幅值进行非极大值抑制。 (4)用双阈值算法检测和连接边缘。 3.  Canny边缘检测算法的通俗理解 Canny算法的目的就是边缘检测,何为边缘?图象局部区域亮度变化显著的部分,对于灰度图像来说,也就是灰度值有一个明显变化,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。那么怎么表征这种灰度值的变化呢?这里想到的就是导数微分,导数就是表征变化率的,但是数字图像都是离散的,也就是导数肯定会用差分来代替。也就是具体算法中的步骤2,用相邻像素的差分来计算梯度的大小和方向。但是在真实的图像中,一般会有噪声,噪声会影响梯度的计算,所以步骤1要先滤波。理论上将图像梯度幅值的元素值越大,说明图像中该点的梯度值越大,但这不能说明该点就是边缘。在Canny算法中,步骤3的非极大值抑制是进行边缘检测的重要步骤,通俗意义上是指寻找像素点的局部最大值,沿着梯度方向,比较它前面和后面的梯度值,若梯度值局部最大则有可能为边缘像素,进行保留,否则就进行抑制。步骤4是一个典型算法,有时候我们并不能一刀切,也就是超过阈值的都是边缘点,而是设两个阈值,希望在高阈值和低阈值之间的点也可能是边缘点,而且这些点最好在高阈值的附近,也就是说这些中间阈值的点是高阈值边缘点的一种延伸。所以步骤4用了双阈值来进行检测和连接边缘。双阈值有时也叫做滞后阈值。

边缘检测是检测图像中的一些像素点,它们周围的像素点的灰度发生了急剧的变化,我们认为在这过程中,图像中的物体不同导致了这一变化,因此可以将这些像素点作为一个集合,可以用来标注图像中不同物体的边界。边缘区域的灰度剖面可以看作是一个阶跃,即图像的灰度在一个很小的区域内变化到另一个相差十分明显的区域。边缘是图像中的重要的结构性特征,边缘往往存在于目标和背景之间,不同的区域之间,因此它可以作为图像分割的重要依据。在边缘检测中,它提取的是图像中不连续部分的特征,将闭合的边缘提取出来便可以作为一个区域。与区域划分相比,边缘检测不需要逐个的对像素进行比较,比较适合大图像的处理.     如图     边缘其实就是图像上灰度级变化很快的点的集合。这些点往往梯度很大。图像的梯度可以用一阶导数和二阶偏导数来求解。但是图像以矩阵的形式存储的,不能像数学理论中对直线或者曲线求导一样,对一幅图像的求导相当于对一个平面、曲面求导。对图像的操作,我们采用模板对原图像进行卷积运算,从而达到我们想要的效果。而获取一幅图像的梯度就转化为:模板(Roberts、Prewitt、Sobel、Lapacian算子)对原图像进行卷积。     使用一阶导的算子有,prewitt,sobel和canny;使用二阶导的有lapacian     (1)一阶导算子:             1、prewitt                 通常用 f '(x) = f(x + 1) - f(x - 1) 近似计算一阶差分。可以提出系数:[-1, 0, 1],这个就是模板。在二维情况下是:                 -1, 0, 1                 -1, 0, 1                 -1, 0, 1                 这个就是prewitt算子。即                 f(x-1, y-1), f(x, y-1), f(x+1, y-1)                 f(x-1, y),    f(x, y),    f(x+1, y)                 f(x-1, y+1),  f(x, y+1),  f(x+1, y+1)             2、sobel                 中心点 f(x, y) 是重点考虑的,它的权重应该多一些,所以改进成下面这样的                 -1, 0, 1                 -2, 0, 2                 -1, 0, 1                 这就是 Sobel 边缘检测算子,偏 x 方向的。同理可得偏y方向上的。                 -1, -2, -1                 0,  0,  0                 1,  2,  1                 分别计算偏 x 方向的 Gx,偏 y 方向的 Gy,求绝对值,压缩到 [0, 255]区间,即 G(x, y) = Gx + Gy 就是 sobel 边缘检测后的图像了。因此sobel算子是有两个方向的。             3、canny                 canny算子的计算步骤如下:                     1.高斯滤波器平滑图像。去除噪声                     2.一阶差分偏导计算梯度值和方向。通过sobel算子计算的。                     3.对梯度值不是极大值的地方进行抑制。把不是极值的点,全部置0,去掉了大部分弱的边缘。所以图像边缘会变细。                     4.用双阈值连接图上的联通点。设置双阈值 t1, t2, 是这样的,t1 <= t2 大于 t2 的点肯定是边缘;小于 t1 的点肯定不是边缘;在 t1, t2 之间的点,通过已确定的边缘点,发起8领域方向的搜索(广搜),图中可达的是边缘,不可达的点不是边缘。最后得出 canny 边缘图。     (2)二阶导算子                  1、lapacian                     一阶差分:f '(x) = f(x) - f(x - 1)                     二阶差分:f '(x) = (f(x + 1) - f(x)) - (f(x) - f(x - 1))                     化简后:f '(x) = f(x - 1) - 2 f(x)) + f(x + 1)                     提取前面的系数:[1, -2, 1]         二维的情况下,同理可得f '(x, y) = -4 f(x, y) + f(x-1, y) + f(x+1, y) + f(x, y-1) + f(x, y+1)提取各个系数,写成模板的形式                     0, 1, 0                     1, -4, 1                     0,  1, 0     考虑两个斜对角的情况                     1,  1, 1                     1, -8, 1                     1,  1, 1     与原图卷积运算即可求出边缘。 那么这些算子有什么区别呢:     下面三张图分别是 sobel,canny,laplace 结果图。        sobel 产生的边缘有强弱,抗噪性好,计算量小         laplace 对边缘敏感,可能有些是噪声的边缘,也被算进来了         canny 产生的边缘很细,可能就一个像素那么细,没有强弱之分。计算量大,但是准确 部分参考自:

是的格式的更好的发生过

边缘检测技术简介论文

图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波。我们知道微分运算是求信号的变化率,具有加强高频分量的作用。 在空域运算中来说,对图像的锐化就是计算微分。 由于数字图像的离散信号,微分运算就变成计算差分或梯度。 图像处理中有多种边缘检测(梯度)算子,常用的包括普通一阶差分,Robert算子(交叉差分),Sobel算子等等,是基于寻找梯度强度。拉普拉斯算子(二阶差分)是基于过零点检测。通过计算梯度,设置阀值,得到边缘图像。

边缘检测 是图像处理和计算机视觉中的基本问题。 边缘检测的目的 是标识数字图像中亮度变化明显的点。 图像属性中的显著变化通常反映了属性的重要事件和变化。

边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。

除非场景中的物体非常简单并且照明条件得到了很好的控制,否则确定一个用来判断两个相邻点之间有多大的亮度变化才算是有边界的阈值,并不是一件容易的事。实际上,这也是为什么边缘检测不是一个微不足道问题的原因之一。

图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。 有许多方法用于边缘检测,它们的绝大部分可以划分为两类:

滤波 做为边缘检测的预处理通常是必要的,通常采用高斯滤波。 已发表的边缘检测方法应用计算边界强度的度量,这与平滑滤波有本质的不同。 正如许多边缘检测方法依赖于图像梯度的计算,他们用不同种类的滤波器来估计x-方向和y-方向的梯度。

其它一些边缘检测操作是 基于亮度的二阶导数 。这实质上是亮度梯度的变化率。

在理想的连续变化情况下,在二阶导数中检测过零点将得到梯度中的局部最大值。另一方面,二阶导数中的峰值检测是边线检测,只要图像操作使用一个合适的尺度表示。

如上所述,边线是双重边缘,这样我们就可以在边线的一边看到一个亮度梯度,而在另一边看到相反的梯度。这样如果图像中有边线出现的话我们就能在亮度梯度上看到非常大的变化。

①滤波: 边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折中。 ②增强: 增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将邻域(或局部)强度值有显著变化的点突显出来。边缘增强一般是通过计算梯度幅值来完成的。 ③检测: 在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点。最简单的边缘检测判据是梯度幅值阈值判据。 ④定位: 如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。 在边缘检测算法中,前三个步骤用得十分普遍。这是因为大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一像素点的附近,而没有必要指出边缘的精确位置或方向。

边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线。我们将 边缘定义 为图像中灰度发生急剧变化的区域边界。 边缘检测方法 图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用 局部图像微分技术 来获得边缘检测算子。 经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测边缘这一目的的。

摘 要 针对基于PC实现的图像边缘检测普遍存在的执行速度慢、不能满足实时应用需求等缺点,本文借助于TI公司的TMS320DM642图像处理芯片作为数字图像处理硬件平台,DSP/BIOS为实时操作系统,利用CCS开发环境来构建应用程序;并通过摄像头提取视频序列,实现对边缘检测Sobel算子改进[1]。 关键词 DM642;Sobel算子;程序优化;图像边缘检测 1 引言 边缘是图像中重要的特征之一,是计算机视觉、模式识别等研究领域的重要基础。图像的大部分主要信息都存在于图像的边缘中,主要表现为图像局部特征的不连续性,是图像中灰度变化比较强烈的地方,也即通常所说的信号发生奇异变化的地方。经典的边缘检测算法是利用边缘处的一阶导数取极值、二阶导数在阶梯状边缘处呈零交叉或在屋顶状边缘处取极值的微分算法。图像边缘检测一直是图像处理中的热点和难点。 近年来,随着数学和人工智能技术的发展,各种类型的边缘检测算法不断涌现,如神经网络、遗传算法、数学形态学等理论运用到图像的边缘检测中。但由于边缘检测存在着检测精度、边缘定位精度和抗噪声等方面的矛盾及对于不同的算法边缘检测结果的精度却没有统一的衡量标准,所以至今都还不能取得令人满意的效果。另外随着网络和多媒体技术的发展,图像库逐渐变得非常庞大;而又由于实时图像的目标和背景间的变化都不尽相同,如何实现实时图像边缘的精确定位和提取成为人们必须面对的问题。随着DSP芯片处理技术的发展,尤其是在图像处理方面的提高如TMS320C6000系列,为实现高效的、实时的边缘检测提供了可能性[5]。在经典的边缘检测算法中,Sobel边缘检测算法因其计算量小、实现简单、处理速度快,并且所得的边缘光滑、连续等优点而得到广泛的应用。本文针对Sobel算法的性能,并借助于TMS320DM642处理芯片[3],对该边缘检测算法进行了改进和对程序的优化,满足实时性需求。2 Sobel边缘检测算法的改进 经典的Sobel图像边缘检测算法,是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个是检测垂直边缘,一个是检测水平边缘。算法的基本原理:由于图像边缘附近的亮度变化较大,所以可以把那些在邻域内,灰度变化超过某个适当阈值TH的像素点当作边缘点。Sobel算法的优点是计算简单,速度快。但由于只采用了两个方向模板,只能检测水平方向和垂直方向的边缘,因此,这种算法对于纹理较复杂的图像,其边缘检测效果欠佳;同时,经典Sobel算法认为,凡灰度新值大于或等于阈值的像素点都是边缘点。这种判定依据是欠合理的,会造成边缘点的误判,因为多噪声点的灰度新值也很大。 图像加权中值滤波 由于图像中的边缘和噪声在频域中均表现为高频成分,所以在边缘检测之前有必要先对图像进行一次滤波处理,减少噪声对边缘检测的影响。中值滤波是一种非线性信号的处理方法[2],在图像处理中,常用来保护边缘信息;保证滤波的效果。加权中值滤波,首先对每个窗口进行排序,取适当的比例,进行曲线拟合,拟合后的曲线斜率表征了此窗口的图像特征,再根据图像各部分特性适当的选择权重进行加权。 增加方向模板 除了水平和垂直两方向外,图像的边缘还有其它的方向,如135o和45o等,为了增加算子在某一像素点检测边缘的精度,可将方向模板由2个增加为8个即再在经典的方向模板的基础上增加6个方向模板,如图1所示。 边缘的定位及噪声的去除 通常物体的边缘是连续而光滑的,且边缘具有方向和幅度两个特征,而噪声是随机的。沿任一边缘点走向总能找到另一个边缘点,且这两个边缘点之间的灰度差和方向差相近。而噪声却不同,在一般情况下,沿任一噪声点很难找到与其灰度值和方差相似的噪声点[4]。基于这一思想,可以将噪声点和边缘点区分开来。对于一幅数字图像f(x,y),利用上述的8个方向模板Sobel算子对图像中的每个像素计算,取得其中的最大值作为该点的新值,而该最大值对应的模板所表示的方向为该像素点的方向。若|f(x,y)-f(x+i,y+j)|>TH2,对于任意i=0,1,-1;j=0,1,-1均成立,则可判断点(x,y)为噪声点。图2给出了图像边缘检测系统改进算法的软件流程图。图1 边缘检测8个方向模板图2 系统结构图3 基于TMS320DM642的图像处理的设计及算法优化 TMS320DM642功能模块及图像处理系统的硬件结构 DSP以高速数字信号处理为目标进行芯片设计,采用改进的哈佛结构(程序总线和数据总线分开)、内部具有硬件乘法器、应用流水线技术、具有良好的并行性和专门用于数字信号处理的指令及超长指令字结构(VLIW)等特点;能完成运算量大的实时数字图像处理工作。 TMS320DM642是TI公式最近推出的功能比较强大的TMS320C6x系列之一,是目前定点DSP领域里性能较高的一款[6]。其主频是600MHz,8个并行运算单元、专用硬件逻辑、片内存储器和片内外设电路等硬件,处理能力可达4800MIPS。DM642基于C64x内核,并在其基础上增加了很多外围设备和接口,因而在实际工程中的应用更为广泛和简便。本系统使用50 MHz晶体震荡器作为DSP的外部时钟输入,经过内部锁相环12倍频后产生600 MHz的工作频率。DM642采用了2级缓存结构(L1和L2),大幅度提高了程序的运行性能。片内64位的EMIF(External Memory Interface)接口可以与SDRAM、Flash等存储器件无缝连接,极大地方便了大量数据的搬移。更重要的是,作为一款专用视频处理芯片,DM642包括了3个专用的视频端口(VP0~VP2),用于接收和处理视频,提高了整个系统的性能。此外,DM642自带的EMAC口以及从EMIF 口扩展出来的ATA口,还为处理完成后产生的海量数据提供了存储通道。本系统是采用瑞泰公司开发的基于TI TMS320DM642 DSP芯片的评估开发板——ICETEK DM642 PCI。在ICETEK DM642 PCI评估板中将硬件平台分为五个部分,分别是视频采集、数据存储、图像处理、结果显示和电源管理。视频采集部分采用模拟PAL制摄像头,配合高精度视频A/D转换器得到数字图像。基于DSP的视频采集要求对视频信号具备采集,实时显示、对图像的处理和分析能力。视频A/D采样电路—SAA7115与视频端口0或1相连,实现视频的实时采集功能。视频D/A电路—SAA7105与视频口2相连,视频输出信号支持RGB、HD合成视频、PAL/NTSC复合视频和S端子视频信号。通过I2C总线对SAA7105的内部寄存器编程实现不同输出。 整个系统过程由三个部分组成:图像采集—边缘处理—输出显示,如图2所示。摄像头采集的视频信号经视频编码器SAA7115数字化,DM642通过I2C总线对SAA7115进行参数配置。在SAA7115内部进行一系列的处理和变换后形成的数字视频数据流,输入到核心处理单元DM642。经过DSP处理后的数字视频再经过SAA7105视频编码器进行D/A转换后在显示器上显示最终处理结果。 图像处理的软件设计和算法优化的实现 由于在改进Sobel边缘检测算子性能的同时,也相对增加了计算量,尤其是方向模板的增加,每个像素点均由原来的2次卷积运算增加为8次卷积运算,其实时性大大减弱。为了改进上述的不足,在深入研究处理系统和算法后,针对TMS320DM642的硬件结构特点,研究适合在TMS320DM642中高效运行的Sobel改进算法,满足实时处理的要求。整个程序的编写和调试按照C6000软件开发流程进行,流程分为:产生C代码、优化C代码和编写线性汇编程序3个阶段。使用的工具是TI的集成开发环境CCS。在CCS下,可对软件进行编辑、编译、调试、代码性能测试等工作。在使用C6000编译器开发和优化C代码时[7-8],对C代码中低效率和需要反复调用的函数需用线性汇编重新编写,再用汇编优化器优化。整个系统的控制以及数字图像处理是用C程序实现,大部分软件设计采用C程序实现,这无疑提高了程序的可读性和可移植性,而汇编程序主要是实现DM642的各部分初始化。其边缘检测优化算法在DM642中的实现步骤具体如下: S1:根据DM642的硬件结构要求和控制寄存器设置,初始化系统并编写实现边缘检测算法的C程序。 S2:借助CCS开发环境的优化工具如Profiler等产生.OUT文件。 S3:根据产生的附件文件如.MAP文件,分析优化结果及源程序结构,进一步改进源程序和优化方法。 S4:使用CCS中调试、链接、运行等工具,再生成.OUT可执行文件。 S5:运行程序,如果满足要求则停止;否则重复步骤S2~S4直至满足使用要求。4 实验结果 本文以Lena图像为例根据上述的硬件环境和算法实现的原理和方法,图4~图6分别给出了在该系统下采集的视频Lena图像及使用边缘检测算子和改进后处理的结果。由实验结果可以看出,在该系统下能实时完成视频图像的处理,并且给出的边缘检测算子能较好的消除噪声的影响,边缘轮廓清晰。该算法不仅能抑制图像中大部分噪声和虚假边缘,还保证了较高的边缘点位精度。图4 Lena原始图像 图5 传统Sobel算子 图6 改进Sobel算子5 总结 本文实现了在TMS320DM642评估板上用改进的Sobel算子对实时图像进行边缘检测,无延迟地得到边缘图像。边缘检测效果较好,既提高了图像检测的精度又满足了实时性的要求。从检测结果看,利用该改进后的算子在边缘精确定位、边缘提取都达到了很好的效果,且抗噪声能力强,并为目标跟踪、无接触式检测、自动驾驶、视频监控等领域的应用提供了坚实的基础。参考文献[1] 王磊等. 基于Sobel理论的边缘提取改善方法[J].中国图像图形学报,[2] 陈宏席. 基于保持平滑滤波的Sobel算子边缘检测.兰州交通大学学报,2006,25(1):86—90[3] 熊伟. 基于TMS320DM642的多路视频采集处理板卡硬件设计与实现[ M]. 国外电子元器件,2006[4] 朱立.一种具有抗噪声干扰的图像边缘提取算法的研究[J].电子技术应用.2004,25(1)[5] 刘松涛,周晓东.基于TMS320C6201的实时图像处理系统[J].计算机工程,2005(7):17—23[6] TI TMS320DM642 video/imaging fixed-point digital signal processor data manual,2003[7] TMS320C6x Optimizing C Compiler User’s Guide’ TEXAS INSTRUMENTS”,2002[8] TMS320C32x Optimizing C/C++ Compiler User's Guide,Texas Instruments Incorporated,2001

摘要,指纹识别是一个最 重要的生物特征识别技术鉴定。作为一个 方便,快捷和安全的方法,个人识别, 它已广泛应用于许多领域。边缘检测是一个 重要组成部分,指纹识别,它已严重 影响薄和特征提取的 图像,并最终影响匹配的图像。这个 介绍了边缘检测算子和比较 它们的特点和性能。在去年的实验 表明,每个算法都有其优点和缺点, 和适当的算法应根据选定的 特征图像检测,以便它能够执行 完美。 这么多人都回答了哈~~~

摘要,指纹识别是一个最 重要的生物识别技术鉴定。作为一个 方便,快捷和安全的方法,个人识别, 它已广泛应用于许多领域。边缘检测是一个 重要组成部分,指纹识别,它已严重 影响薄和特征提取的 图像,并最终影响匹配的图像。这个 介绍了边缘检测算子和比较 它们的特点和性能。在去年的实验 表明,每个算法都有其优点和缺点, 和适当的算法应根据选定的 特征图像检测,以便它能够执行 完美

灰度图像的边缘检测论文

这里IplImage* img=cvLoadImage("D:\\");如果不加参数,默认读取图像的原通道数。假如你载入的图像不是单通道的,if(in->nChannels != 1) return 0;这句就直接被执行然后return了,Img2自然什么都么有。 改正:把IplImage* img=cvLoadImage("D:\\");改成IplImage* img=cvLoadImage("D:\\",0);//强制转化读取的图像为灰度图 附:cvLoadImage函数使用方法cvLoadImage( filename, -1 ); //默认读取图像的原通道数cvLoadImage( filename, 0 ); //强制转化读取图像为灰度图cvLoadImage( filename, 1 ); //读取彩色图

问题: 我在提取图像边缘的时候,首先对图像进行灰度变换,之后进行二值处理,最后进行边缘检测得到边缘图像。 但是在查阅资料的过程中我经常发现很多人忽略二值化的步骤,直接进行边缘检测;还有很多人在实现某些功能的时候先进行边缘检测之后再阈值分割,让我感到非常迷惑,这篇文章旨在探求二者的关系。

首先要知道图像二值化和边缘检测的目的。

图像的阈值处理一般使得图像的像素值更单一、图像更简单。阈值可以分为全局阈值和局部阈值,可以是单阈值也可以是多阈值。 图像二值化是设置单阈值,为了将图像中感兴趣的像素分离出来作为前景像素,不感兴趣的部分作为背景像素。

最简单的二值化操作是使用以下函数:(这是全局化的阈值)

上述的二值化处理是设置一个全局阈值,让所有像素值与该阈值比较,下面还可以通过自适应阈值实现图像的二值化处理。 自适应阈值不需要确定一个固定的阈值,根据其对应的自适应方法,通过图像的局部特征自适应的设定阈值,做出二值化处理。 自适应阈值是一种局部阈值,要在图像中确定一个区域,求出该区域内的像素平均值,再与阈值比较

adaptiveMethod - 指定计算阈值的方法。   :阈值取相邻区域的平均值   :阈值取相邻区域的加权和,权重为一个高斯窗口。

thresholdType - 和上面一样 blockSize - 邻域大小(用来计算阈值的区域大小),计算图像的像素区域一般取3×3、5×5、7×7..... C - 常数,阈值等于平均值或者加权平均值减去这个常数。该参数用于微调阈值,可以为负数

还有一种非常多人提及的方法——Otsu’s 二值化,这种方法下次再记录。

要对图像进行边缘检测,首先对图像进行灰度变换,使图像只包含一个通道的信息,然后比较各相邻像素间的亮度差别,亮度产生突变的地方就是边缘像素,将这些边缘像素点连接到一起就形成了边缘图像。 那么首先要知道如何检测出边缘: 边缘有方向和幅值两个要素,通常对图像相邻域像素求取梯度来描述和检测边缘。 为何要求梯度? 图像梯度是对多个方向分别求偏导得到的导数组。比如下图是亮度在x方向上变化,在y方向上没有变化,所以此时只需对x求偏导,该处关于y的偏导为0。

同样图像的亮度在y轴变化时,x方向的偏导为0。

我们知道,当一个函数在某处变化大的时候,它的导数在该处得到极值。

可以看到,图像由亮变暗时函数陡然下降,导数得到极小值,由暗变亮时函数又陡然上升,导数得到极大值,接下来只要找到导数的峰值就行。

这里主要了解Canny边缘检测算法。 Canny算子首先对图像进行平滑滤波,滤除图像的噪声以减少噪声对图像边缘检测的干扰。 下面这两篇文章对Canny算子的介绍非常清晰,在此附上链接以供学习。 在进行边缘检测之前至少要将图像灰度化,因为梯度运算并不能反映色彩的变化差异,所以转换成只有一种颜色通道的灰度图像能够更好地进行边缘检测。

深入了解过图像二值化和边缘检测之后,我认为既可以直接使用灰度图像进行边缘检测,也可以二值化之后再进行边缘检测,二值化的目的是进一步简化灰度图像,使图像中的信息更加纯粹,边缘亮度变化更加明显。如果阈值选的较好还可以滤除不需要的弱边缘,使边缘处理后的图像轮廓更加清晰。

还有一种方法是先进行边缘检测,再二值化,这种情况一般适用于: 想得到二值化图像,但由于原图出现光照不均、前景和背景灰度差别很小等情况,我们不能直接得到完整的目标,这时就可以利用边缘检测对光线变化的不敏感性,先对图像作边缘检测,检测出我们想要进一步研究的目标轮廓,然后再根据只有边缘的图像,求出原图像所有边缘点的像素平均值,将该值作为阈值对原图像进行二值处理,就能很好得获得目标区域,并且目标区域的连通性也很好。

笔者刚刚开始学习图像处理与计算机视觉,可能会出现许多错误,欢迎各位提出改进意见!

摘 要 针对基于PC实现的图像边缘检测普遍存在的执行速度慢、不能满足实时应用需求等缺点,本文借助于TI公司的TMS320DM642图像处理芯片作为数字图像处理硬件平台,DSP/BIOS为实时操作系统,利用CCS开发环境来构建应用程序;并通过摄像头提取视频序列,实现对边缘检测Sobel算子改进[1]。 关键词 DM642;Sobel算子;程序优化;图像边缘检测 1 引言 边缘是图像中重要的特征之一,是计算机视觉、模式识别等研究领域的重要基础。图像的大部分主要信息都存在于图像的边缘中,主要表现为图像局部特征的不连续性,是图像中灰度变化比较强烈的地方,也即通常所说的信号发生奇异变化的地方。经典的边缘检测算法是利用边缘处的一阶导数取极值、二阶导数在阶梯状边缘处呈零交叉或在屋顶状边缘处取极值的微分算法。图像边缘检测一直是图像处理中的热点和难点。 近年来,随着数学和人工智能技术的发展,各种类型的边缘检测算法不断涌现,如神经网络、遗传算法、数学形态学等理论运用到图像的边缘检测中。但由于边缘检测存在着检测精度、边缘定位精度和抗噪声等方面的矛盾及对于不同的算法边缘检测结果的精度却没有统一的衡量标准,所以至今都还不能取得令人满意的效果。另外随着网络和多媒体技术的发展,图像库逐渐变得非常庞大;而又由于实时图像的目标和背景间的变化都不尽相同,如何实现实时图像边缘的精确定位和提取成为人们必须面对的问题。随着DSP芯片处理技术的发展,尤其是在图像处理方面的提高如TMS320C6000系列,为实现高效的、实时的边缘检测提供了可能性[5]。在经典的边缘检测算法中,Sobel边缘检测算法因其计算量小、实现简单、处理速度快,并且所得的边缘光滑、连续等优点而得到广泛的应用。本文针对Sobel算法的性能,并借助于TMS320DM642处理芯片[3],对该边缘检测算法进行了改进和对程序的优化,满足实时性需求。2 Sobel边缘检测算法的改进 经典的Sobel图像边缘检测算法,是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个是检测垂直边缘,一个是检测水平边缘。算法的基本原理:由于图像边缘附近的亮度变化较大,所以可以把那些在邻域内,灰度变化超过某个适当阈值TH的像素点当作边缘点。Sobel算法的优点是计算简单,速度快。但由于只采用了两个方向模板,只能检测水平方向和垂直方向的边缘,因此,这种算法对于纹理较复杂的图像,其边缘检测效果欠佳;同时,经典Sobel算法认为,凡灰度新值大于或等于阈值的像素点都是边缘点。这种判定依据是欠合理的,会造成边缘点的误判,因为多噪声点的灰度新值也很大。 图像加权中值滤波 由于图像中的边缘和噪声在频域中均表现为高频成分,所以在边缘检测之前有必要先对图像进行一次滤波处理,减少噪声对边缘检测的影响。中值滤波是一种非线性信号的处理方法[2],在图像处理中,常用来保护边缘信息;保证滤波的效果。加权中值滤波,首先对每个窗口进行排序,取适当的比例,进行曲线拟合,拟合后的曲线斜率表征了此窗口的图像特征,再根据图像各部分特性适当的选择权重进行加权。 增加方向模板 除了水平和垂直两方向外,图像的边缘还有其它的方向,如135o和45o等,为了增加算子在某一像素点检测边缘的精度,可将方向模板由2个增加为8个即再在经典的方向模板的基础上增加6个方向模板,如图1所示。 边缘的定位及噪声的去除 通常物体的边缘是连续而光滑的,且边缘具有方向和幅度两个特征,而噪声是随机的。沿任一边缘点走向总能找到另一个边缘点,且这两个边缘点之间的灰度差和方向差相近。而噪声却不同,在一般情况下,沿任一噪声点很难找到与其灰度值和方差相似的噪声点[4]。基于这一思想,可以将噪声点和边缘点区分开来。对于一幅数字图像f(x,y),利用上述的8个方向模板Sobel算子对图像中的每个像素计算,取得其中的最大值作为该点的新值,而该最大值对应的模板所表示的方向为该像素点的方向。若|f(x,y)-f(x+i,y+j)|>TH2,对于任意i=0,1,-1;j=0,1,-1均成立,则可判断点(x,y)为噪声点。图2给出了图像边缘检测系统改进算法的软件流程图。图1 边缘检测8个方向模板图2 系统结构图3 基于TMS320DM642的图像处理的设计及算法优化 TMS320DM642功能模块及图像处理系统的硬件结构 DSP以高速数字信号处理为目标进行芯片设计,采用改进的哈佛结构(程序总线和数据总线分开)、内部具有硬件乘法器、应用流水线技术、具有良好的并行性和专门用于数字信号处理的指令及超长指令字结构(VLIW)等特点;能完成运算量大的实时数字图像处理工作。 TMS320DM642是TI公式最近推出的功能比较强大的TMS320C6x系列之一,是目前定点DSP领域里性能较高的一款[6]。其主频是600MHz,8个并行运算单元、专用硬件逻辑、片内存储器和片内外设电路等硬件,处理能力可达4800MIPS。DM642基于C64x内核,并在其基础上增加了很多外围设备和接口,因而在实际工程中的应用更为广泛和简便。本系统使用50 MHz晶体震荡器作为DSP的外部时钟输入,经过内部锁相环12倍频后产生600 MHz的工作频率。DM642采用了2级缓存结构(L1和L2),大幅度提高了程序的运行性能。片内64位的EMIF(External Memory Interface)接口可以与SDRAM、Flash等存储器件无缝连接,极大地方便了大量数据的搬移。更重要的是,作为一款专用视频处理芯片,DM642包括了3个专用的视频端口(VP0~VP2),用于接收和处理视频,提高了整个系统的性能。此外,DM642自带的EMAC口以及从EMIF 口扩展出来的ATA口,还为处理完成后产生的海量数据提供了存储通道。本系统是采用瑞泰公司开发的基于TI TMS320DM642 DSP芯片的评估开发板——ICETEK DM642 PCI。在ICETEK DM642 PCI评估板中将硬件平台分为五个部分,分别是视频采集、数据存储、图像处理、结果显示和电源管理。视频采集部分采用模拟PAL制摄像头,配合高精度视频A/D转换器得到数字图像。基于DSP的视频采集要求对视频信号具备采集,实时显示、对图像的处理和分析能力。视频A/D采样电路—SAA7115与视频端口0或1相连,实现视频的实时采集功能。视频D/A电路—SAA7105与视频口2相连,视频输出信号支持RGB、HD合成视频、PAL/NTSC复合视频和S端子视频信号。通过I2C总线对SAA7105的内部寄存器编程实现不同输出。 整个系统过程由三个部分组成:图像采集—边缘处理—输出显示,如图2所示。摄像头采集的视频信号经视频编码器SAA7115数字化,DM642通过I2C总线对SAA7115进行参数配置。在SAA7115内部进行一系列的处理和变换后形成的数字视频数据流,输入到核心处理单元DM642。经过DSP处理后的数字视频再经过SAA7105视频编码器进行D/A转换后在显示器上显示最终处理结果。 图像处理的软件设计和算法优化的实现 由于在改进Sobel边缘检测算子性能的同时,也相对增加了计算量,尤其是方向模板的增加,每个像素点均由原来的2次卷积运算增加为8次卷积运算,其实时性大大减弱。为了改进上述的不足,在深入研究处理系统和算法后,针对TMS320DM642的硬件结构特点,研究适合在TMS320DM642中高效运行的Sobel改进算法,满足实时处理的要求。整个程序的编写和调试按照C6000软件开发流程进行,流程分为:产生C代码、优化C代码和编写线性汇编程序3个阶段。使用的工具是TI的集成开发环境CCS。在CCS下,可对软件进行编辑、编译、调试、代码性能测试等工作。在使用C6000编译器开发和优化C代码时[7-8],对C代码中低效率和需要反复调用的函数需用线性汇编重新编写,再用汇编优化器优化。整个系统的控制以及数字图像处理是用C程序实现,大部分软件设计采用C程序实现,这无疑提高了程序的可读性和可移植性,而汇编程序主要是实现DM642的各部分初始化。其边缘检测优化算法在DM642中的实现步骤具体如下: S1:根据DM642的硬件结构要求和控制寄存器设置,初始化系统并编写实现边缘检测算法的C程序。 S2:借助CCS开发环境的优化工具如Profiler等产生.OUT文件。 S3:根据产生的附件文件如.MAP文件,分析优化结果及源程序结构,进一步改进源程序和优化方法。 S4:使用CCS中调试、链接、运行等工具,再生成.OUT可执行文件。 S5:运行程序,如果满足要求则停止;否则重复步骤S2~S4直至满足使用要求。4 实验结果 本文以Lena图像为例根据上述的硬件环境和算法实现的原理和方法,图4~图6分别给出了在该系统下采集的视频Lena图像及使用边缘检测算子和改进后处理的结果。由实验结果可以看出,在该系统下能实时完成视频图像的处理,并且给出的边缘检测算子能较好的消除噪声的影响,边缘轮廓清晰。该算法不仅能抑制图像中大部分噪声和虚假边缘,还保证了较高的边缘点位精度。图4 Lena原始图像 图5 传统Sobel算子 图6 改进Sobel算子5 总结 本文实现了在TMS320DM642评估板上用改进的Sobel算子对实时图像进行边缘检测,无延迟地得到边缘图像。边缘检测效果较好,既提高了图像检测的精度又满足了实时性的要求。从检测结果看,利用该改进后的算子在边缘精确定位、边缘提取都达到了很好的效果,且抗噪声能力强,并为目标跟踪、无接触式检测、自动驾驶、视频监控等领域的应用提供了坚实的基础。参考文献[1] 王磊等. 基于Sobel理论的边缘提取改善方法[J].中国图像图形学报,[2] 陈宏席. 基于保持平滑滤波的Sobel算子边缘检测.兰州交通大学学报,2006,25(1):86—90[3] 熊伟. 基于TMS320DM642的多路视频采集处理板卡硬件设计与实现[ M]. 国外电子元器件,2006[4] 朱立.一种具有抗噪声干扰的图像边缘提取算法的研究[J].电子技术应用.2004,25(1)[5] 刘松涛,周晓东.基于TMS320C6201的实时图像处理系统[J].计算机工程,2005(7):17—23[6] TI TMS320DM642 video/imaging fixed-point digital signal processor data manual,2003[7] TMS320C6x Optimizing C Compiler User’s Guide’ TEXAS INSTRUMENTS”,2002[8] TMS320C32x Optimizing C/C++ Compiler User's Guide,Texas Instruments Incorporated,2001

相关百科

热门百科

首页
发表服务