UG爱好者

标题: 常用的边缘检测算法 [打印本页]

作者: 王绍昶    时间: 2016-3-28 22:55
标题: 常用的边缘检测算法
机器视觉模仿人类视觉认识目标的过程:首先,把图像边缘与背景分离出来,其次才能知觉到图像的细节,辨认出图像的轮廓。因此在检测物体边缘时,先对其轮廓点进行粗略检测,然后通过连接规则把检测到的轮廓点连接起来,同时也检测和连接遗漏的边界点及去除虚假的边界点。
图像的边缘是图像重要的特征,是计算机视觉、模式识别等的基础,边缘检测就是使用数学方法提取图像像元中具有亮度值(灰度)空间方向梯度大的边、线特征的过程。
常见的边缘点有三种 :第一种是阶梯形边缘(Step-edge), 即从一个灰度到比它高好多的另一个灰度。第二种是屋顶型边缘 (Roof-edge), 它的灰度是慢慢增加到一定程度然后慢慢减小。还有一种是线性边缘 (Line-edge), 它的灰度从一级别跳到另一个灰度级别之后然后回来。
边缘检测的方法主要有以下几种:
    第一种检测梯度的最大值。由于边缘发生在图像灰度值变化较大的地方 , 对应连续情形就是说是函数梯度较大的地方,所以研究比较好的求导算子就成为一种思路。 Roberts 算子、 Prewitt 算子、Sobel 算子和canny算子等就是比较简单而常用的例子。
还有一种比较直观的方法就是利用当前像素邻域中的一些像素值拟合一个曲面 , 然后求这个连续曲面在当前像素处梯度。从统计角度来说 ,可以通过回归分析得到一个曲面 , 然后也可以做类似的处理。
    第二种是检测二阶导数的零交叉点。这是因为边缘处的梯度取得最大值 ( 正的或者负的 ), 也就是灰度图像的拐点是边缘。从分析学上可知 , 拐点处函数的二阶导数是 0 。
    第三种,统计型方法。比如说利用假设检验来检测边缘中利用对二阶零交叉点的统计分析得到了图像中各个像素是边缘的概率,并进而得到边缘检测的方案。
常用的边缘检测算法
roberts算子、sobel算子、prewitt算子和 拉普拉斯-高斯算子(laplaceof gaussian ,LOG)涉及的数学公式较复杂,就不再详细阐述,我们着重看一下canny算子
Canny算子是一阶算子,canny算子检测边缘的方法是寻找图像梯度的局部极大值,盖房大师使用两个阈值来分别检测强边缘和弱边缘,不易受噪声干扰,能检测真正的弱边缘。
Canny算子比roberts算子、sobel算子和prewitt算子的去噪能力都强,但也容易平滑掉边缘信息。
                                                            原始图像                                                             canny算子处理效果
                                                                        LOG算法                                                       Sobel算子
Prewitt算子                       Roberts算子
通过比较可发现:
    Roberts算子简单直观,拉普拉斯算子只能获取边缘位置信息,不能检测边缘方向两种算子定位精度高,但受噪声影响大;
    Sobel算子和prewitt算子具有平滑作用,能滤除一定噪声去掉部分伪边缘,但同时也平滑了真正的边缘;
    Sobel算子、prewitt算子检测斜向阶跃边缘效果好,roberts算子检测水平和垂直边缘效果好。

dfs.png (59.46 KB, 下载次数: 16)

dfs.png





欢迎光临 UG爱好者 (https://www.ugsnx.com/) Powered by Discuz! X3.2