【Canny边缘检测算法概述2600字】_第1页
【Canny边缘检测算法概述2600字】_第2页
【Canny边缘检测算法概述2600字】_第3页
【Canny边缘检测算法概述2600字】_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Canny边缘检测算法概述目录TOC\o"1-3"\h\u21341Canny边缘检测算法概述 1269871.1灰度化 143201.2高斯滤波 1259421.3计算梯度的幅值和方向 2123891.4对梯度幅值进行非极大值抑制 3151281.5双阈值算法检测和连接边缘 3车道线提取项目中的很重要的一步就是边缘检测。Canny是已知的最好的边缘检测算法之一:失误率低,位置精度高,能得到单像素宽度的边缘,它的算法复杂度高,空间复杂度也高,应用非常广泛。1.1灰度化Canny是根据图像的亮度变化来检测边缘的,因此为了更好的检测效果,Canny算法通常处理的都是灰度图。以RGB格式的彩图进行灰度化为例,通常灰度化采用的方法主要有:Gray=(R+G+B)/3或者Gray=0.299*R+0.587*G+0.114*B。若是CMYK格式或者HSV格式等其他格式的彩色图像,要先转成RGB格式再进行灰度化处理。1.2高斯滤波通常来说,滤波和边缘检测是不会一起出现的,滤波是减少噪声使图像变模糊,边缘检测则需要精确的位置定位,若要边缘定位准确,就要提高图像精度,那么噪声的灵敏度也会随着提高,这么看来两者相互矛盾。但实际研究表明,高斯滤波核可以很好的平衡边缘检测的精确度和噪声的干扰。因此要提升边缘检测算法的精度就是要减少图像噪声,也就是说需要降低图像的细节层次,那就可以利用高斯模糊进行处理,也就是高斯滤波。根据待滤波的像素点及其邻域点的灰度值按照一定的参数规则进行加权平均,也就相当于把图像的梯度磨平,原本的梯度是在两个像素之间的,经过模糊处理,梯度从左到右要经过好几个像素之后才进行像素值的下降,这样整体的梯度就放缓了,一些游离出来的噪声的干扰就减弱了。离散化的一维高斯函数如下式所示:(1-1)σ是标准差,σ越大,函数分布越分散,每个点所占的权重就相差不大,σ越小,函数分布越集中,中间点所占权重就远大于旁边点所占权重,那么高斯模糊就越明显,根据一维高斯函数可以推导出二维高斯核函数,如下式所示:(1-2)有了这个函数就可以计算出高斯滤波核中的值,也就是每一个点的权重。图2-1图像中的像素举一个例子来说高斯滤波是如何计算的,如图2-1所示,左边是一幅图像中的很多个像素点,右边是权重比,若要对图中红色背景的像素点进行高斯滤波,选定高斯滤波核的大小为3,也就是对红色像素点周围3行3列的像素点进行高斯滤波的计算,就是计算周围像素的加权平均值,中心的像素点权重高,向外扩展(无论是水平方向还是垂直方向)的像素点所占的权重比就越来越低,那么红色背景的像素点的高斯滤波值就是40*0.05+107*0.1+5*0.05+198*0.1+226*0.4+223*0.1+37*0.05+68*0.1+193*0.05,最后的结果就是164。1.3计算梯度的幅值和方向对于一个图像来说有360度方向,360度每个角度都求一次梯度再来检测它是不是边缘的话,运算的成本太高。Canny检测算法提出了有效的方法,只选取四个方向,在这四个方向上求梯度,但梯度有正有负,对于向上的这个梯度来说,如果向上的这个梯度是负的,实际上就相当于一个向下的梯度,所以实际上也可以认为是八个方向求取梯度之后,综合考虑这几个梯度值,得到了一个在这个像素点上总的梯度值,那这个总的梯度值就表示这个像素周围图像的亮度变化情况,这个总的梯度值越大,证明这个图像在这个点上越有可能在某个方向上产生了较大的梯度,也就是说这个图像越有可能在这个点上表现为边缘。关于图像灰度值的梯度可使用一阶有限差分来进行近似,这样就可以得图像在x和y方向上偏导数的两个矩阵。常用的梯度算子有如下几种:Sobel算子Canny算子和Laplacian算子等。Sobel算子属于一阶微分算子,结合了微分求导和高斯平滑,它有两个固定大小的核,分别算出水平方向上的梯度dx和垂直方向上的梯度dy,水平方向梯度由要计算的像素点的右边一列的值减去左边一列的值得到,垂直方向上的梯度由像素点的下面一行的值减去上面一行的值,差值越小,说明相差就不大,那么这个像素点就越不可能时边界。再在坐标轴上表示出来就能表示出梯度方向。通过计算图像明暗程度的近似值,把区域内超过某个数的特定点记为边缘。它在Prewitt算子的基础上增加了权重的概念,根据上下左右相邻的像素点灰度加权,认为像素点距离越近,对当前像素的影响就越大,从而实现图像锐化并突出边缘轮廓。Laplacian算子属于二阶微分算子,是n维欧几里德空间中的一个二阶微分算子通过判断图像中心像素灰度值与它周围其他像素的灰度值,如果中心像素的灰度更高,则提升中心像素的灰度;反之降低中心像素的灰度,从而实现图像锐化操作;在算法实现过程中,Laplacian算子通过对邻域中心像素的四方向或八方向求梯度,再将梯度相加起来判断中心像素灰度与邻域内其他像素灰度的关系;最后通过梯度运算的结果对像素灰度进行调整。1.4对梯度幅值进行非极大值抑制根据上文提到的梯度是具有方向的基础上,非极大值抑制就是在该像素的梯度的方向上进行梯度上前一个像素和后一个像素的比较,若这一像素点不是极大值就抑制它,若是极大值的话就保留它。通过这种方法能将一些较弱的边缘过滤掉图像梯度幅值矩阵中的元素值越大。在Canny算法中,非极大值抑制是进行边缘检测的重要步骤,通俗意义上是指寻找像素点局部最大值,将非极大值点所对应的灰度值置为0,这样可以剔除掉一大部分非边缘的点1.5双阈值算法检测和连接边缘在得到了一个在这个像素点上总的梯度值后,就能知道这个像素周围图像的亮度变化情况,这个总的梯度值越大,证明这个图像在这个点上越有可能在某个方向上产生了较大的梯度,也就是说这个图像越有可能在这个点上表现为边缘。梯度大小代表着这个点是否是一个边缘,可以直接设置阈值,高于这个阈值的点就认为是边缘点,如果这个点的梯度低于这个阈值,就认为它不是边缘点。但是这个方法有一个问题,因为一个图像它是有着光照变化等其他变化的,在图像的不同部分,像素的梯度不是那么规整的。由于其他因素的干扰,可能会导致一些问题。图2-3提取边缘线结果如图所示,1这一部分,外面有一层大的边缘,游离了一条小的斜线,这个斜线明显不是边缘,如果阈值取好没有,选择了较低的阈值,有可能会把它当作边缘。因此,我们取单一的一个阈值就很难过滤掉这些噪声点,Canny算法就提出了一个很有创意的想法:双阈值,有上阈值和下阈值。如下图所示。图2-4双阈值算法对于一些阈值特别大的点,就是超过上阈值的点,我们认为这些点肯定是个强边缘点,而对于梯度小于下阈值的点,我们认为它不可能是个边缘点;还有一些梯度值不大不小,介于上阈值和下阈值之间的点,是弱边缘点,它有可能是边缘点,有可能不是边缘点。若这些弱边缘点与强边缘点相邻,就认为它是真正

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论