作为图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点:图像属性中包含的重要事件和变化我们是能通过图像属性中的显著变化检测出来! 这些包括深度上的不连续、表面方向不连续、物质属性变化和场景照明变化等等。
边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。
一.算法原理:
所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征。边缘存在于目标、背景和区域之间,所以,它是图像分割所依赖的最重要的依据。由于边缘是位置的标志,对灰度的变化不敏感,,因此,边缘也是图像匹配的重要的特征。边缘检测和区域划分是图像分割的两种不同的方法,二者具有相互补充的特点。在边缘检测中,是提取图像中不连续部分的特征,根据闭合的边缘确定区域。而在区域划分中,是把图像分割成特征相同的区域,区域之间的边界就是边缘。由于边缘检测方法不需要将图像逐个像素地分割,因此更适合大图像的分割.边缘大致可以分为两种,一种是阶跃状边缘,边缘两边像素的灰度值明显不同;另一种为屋顶状边缘,边缘处于灰度值由小到大再到小的变化转折点处。边缘检测的主要工具是边缘检测模板。我们以一个一维模板为例来考察边缘检测模板是如何作用的。模板的作用是将右邻点的灰度值减去左邻点的灰度值作为该点的灰度值。在灰度相近的区域内,这么做的结果使得该点的灰度值接近于0;而在边缘附近,灰度值有明显的跳变,这么做的结果使得该点的灰度值很大,这样就出现了上面的结果。这种模板就是一种边缘检测器,它在数学上的涵义是一种基于梯度的滤波器,习惯上又称边缘算子。我们知道,梯度是有方向的,和边缘的方向总是垂直的。模板
是水平方向的,而上面那幅图象的边缘恰好是垂直方向的,使用模板 就可以将它检测出来。如果图象的边缘是水平方向的,我们可以用梯度是垂直方向的模板 检测它的边缘。如果图象的边缘是45度方向的,我们可以用模板检测它的边缘。
二.算法分类
边缘检测法的种类很多,如微分算子法、样板匹配法、小波检测法、神经网络法等等,每一类检测法又有不同的具体方法。目前,微分算子法中有Roberts,Sobel,Prewitt,Canny,Laplacian,Log 以及二阶方向导数等算子检测法。
1.边缘检测
在图像中,边缘是图像局部强度变化最明显的地方,它主要存在于目标与目标、目标与背景、区域与区域( 包括不同色彩) 之间。边缘表明一个特征区域的终结和另一特征区域的开始。边缘所分开区域的内部特征或属性是一致的,而不同的区域内部特征或属性是不同的。边缘检测正是利用物体和背景在某种图像特征上的差异来实现检测,这些差异包括灰度、颜色或纹理特征,边缘检测实际上就是检测图像特征发生变化的位置。边缘的类型很多,常见的有以下三种:
第一种是阶梯形边缘,其灰度从低跳跃到高; 第二种是屋顶形边缘,其灰度从低逐渐到高然后慢慢减小; 第三种是线性边缘,其灰度呈脉冲跳跃变化。如图1 所示。
图1 边缘检测图示例(转载于网络,切勿用于商用)
图像中的边缘是由许多边缘元组成,边缘元可以看作是一个短的直线段,每一个边缘元都由一个位置和一个角度确定。边缘元对应着图像上灰度曲面N 阶导数的不连续性。如果灰度曲面在一个点的N 阶导数是一个Delta 函数,那么就定义灰度曲面在这个点是N
阶不连续,则线性边缘是0 阶不连续,阶梯形边缘是一阶不连续,而屋顶形边缘是二阶不连续。在实际中,单纯的阶跃和线性边缘图像是很少见的,由于大多数传感元件具有低频特性,使得阶跃边缘变成斜坡形边缘,线性边缘变成屋顶形边缘。 边缘检测可分为滤波、增强、检测、定位四个步骤,由于微分边缘检测算法主要是基于图像强度的一阶和二阶导数,而导数的计算对噪声很敏感,噪声的存在可能会使检测到的边缘变宽或在某些点处发生间断,因此,需要使用滤波器来滤掉噪声。大多数滤波器在降低噪声的同时也会引起边缘强度的损失,增强图像边缘可以弥补损失,但增强边缘和降低噪声之间需要折衷。在边缘检测算法中,前三个步骤用得十分普遍,这是因为在大多数情况下,只需要边缘检测器指出边缘出现在图像中某一像素点的附近即可,而没有必要指出边缘的精确位置。
2.微分边缘检测算子
2.1.一阶微分算子
2.1.1 Roberts 算子
Roberts 算子是一种利用局部差分算子寻找边缘的算子, 它由下式给出:
Roberts
算子是一种利用局部差分算子寻找边缘的算子
,
它由下式给出:
其中f(x,y) , f(x+1,y) ,f(x,y+1) ,f(x+1,y+1) 分别为4领域的坐标,且是具有整数像素坐标的输入图像。
Robert算子是2x2算子模板。图2所示的2个卷积核形成了Roberts算子。图像中的每一个点都用这2个核做卷积。
图2 Robert算子
Roberts 算子边缘定位精度较高,但容易丢失一部分边缘,同时由于没有经过图像平滑计算,因此不能抑制噪声,该算子对具有陡峭的低噪声图像响应较好。
其他微分算子法,如Sobel,Prewitt,Canny,Laplacian,Log 以及二阶方向导数等算子检测法大家可以去网上自行搜索了解下。
三.Qualcomm FastCv实现的边缘检测:
1.准备工具:一台win7电脑,Android测试机一台(带摄像头)。
2.环境搭建:大家可以参照我之前发的文章《在Android平台上搭建Qualcomm的FastCv》;
3.实测效果图:
图3 FastCv检测边缘点1
图4 FastCv检测边缘点2
|