Canny边缘检测原理与C++实现(1)原理部分

转载请说明出处:http://blog.csdn.net/zhubaohua_bupt/article/details/73826080

Canny边缘检测算子是John F. Canny于 1986 年开发出来的一个多级边缘检测算法。
Canny 的目标是找到一个最优的 边缘检测 算法,最优边缘检测的含义是:
好的检测- 算法可以尽量多地标识出图像中的实际边缘。
好的定位- 标识出的边缘要尽量与实际图像中的实际边缘尽量接近。
最小响应- 图像中的边缘只能标识一次,而且可能存在的图像噪声不该标识为边缘
——摘自百度百科
最近作了个项目,须要canny边缘检测,可是,在平台上不支持opencv,因此就研究了一下canny边缘检测的原理,并用c++实现算法。

1 原理部分

     Canny边缘检测整个流程共分为4步,分别是
*滤波、
*梯度及方向角计算(加强)、
*边缘非极大值抑制、
*双阈值链接,
下面以一个图像边缘检测的流程探讨一下每一个部分。 原图为

 1.1 滤波

        1.1.1为何要滤波?

           滤波的目的是为了平滑一些纹理较弱的非边缘区域,从而更准确的检测边缘。

        1.1.2 高斯滤波

                   常见的滤波算法有均滤波、中值滤波、高斯滤波、双边滤波等等。咱们知道,均值滤波能够模糊图像;
            中值滤波能够去除椒盐噪声; 双边滤波能够保留边缘,平滑非边缘区域。canny边缘检测使用的高斯滤波
            和均值、双边滤波同样,高斯滤波也是经过对图像模板卷积实现的,  只不过模板的内容不同。下面探究一下高斯滤波:
            高斯滤波的模板(高斯核)是利用高斯函数造成的。
               
     

 
高斯核造成中有一个比较重要的参数,即方差,方差控制着高斯滤波对图像的平滑程度。方差越大,滤波后的图像越平滑。
极限状况下,方差无限大,高斯滤波退化成均值滤波。滤波就说到这里,关于高斯滤波更详细的特性能够自行百度。

1.1.3 高斯核为3,7时的效果


1.2 梯度及方向角计算

canny利用sobel算子来计算通过滤波后,图像的梯度和方向角。

高斯核大小分别为3,7时,sobel效果

1.3 非极大值抑制

在图像边缘区域,其附近梯度值每每都很大,为了知足最小响应标准,canny采用了非极大值抑制,
      来去除真实边缘附近的其余梯度较大的区域。
      非极大值抑制的思想是,沿着梯度方向,若是当前待检测像素的梯度不是最大值,那么,此像素就不是边缘。html


为了简化计算,因为一个像素周围有八个像素,本文把一个像素的梯度方向离散为八个方向,以下图c++



把像素可能的360梯度方向分为8个扇区,每一个扇区对应一个像素位置。这样就能够不利用插值,计算像素沿梯度方向先后的两个像素值。
     这样,对于一个像素,其先后像素的计算就对应4种状况,好比像素p的梯度方向角为12.1度,
     那么该像素沿着梯度方向先后的两个像素分别为(i-1,j+1),(i+1,j-1)。算法

高斯核分别为3,7时 ,通过非极大值抑制后的边缘函数


1.4 双阈值链接

         通过以上3个步骤,咱们已经能够获得一个通过非极大值抑制的边缘图像,若是没有什么特殊要求,这个边缘图像就能够利用了。spa

       之因此要有双阈值链接这一步,是由于在获取图像边缘时,咱们但愿获得一些梯度比较大边缘,即获得一些特征较鲜明的边缘。.net

        这样就必须设定一个阈值highThreshold来卡一下梯度值,只有图像梯度值大于highThreshold时才认为这些边缘特征鲜明。可是,htm

       以下图 只设定一个阈值会出现这样的问题,就是检测到的边缘不连续,blog

   

        为了获得特征明显且连续的边缘,所以,canny采用了双阈值链接法。开发

       即再设定一个低阈值,lowThreshold,用lowThreshold卡一下梯度图像,记录所用大于此阈值的像素位置,用来链接通过highThreshold阈值后get

      不连续的边缘。链接后图像以下,lowThreshold和highThreshold 一低 一高,为何叫双阈值,相信一下就明白了吧。



        双阈值链接效果,高斯核分别为3,7

  

      实现部分见下篇博客

参考:
1 http://blog.csdn.net/yanmy2012/article/details/8110316
2 http://blog.csdn.net/xiajun07061225/article/details/6926108
3 http://www.cnblogs.com/qiqibaby/p/5289977.html
4 http://blog.csdn.net/dcrmg/article/details/52344902
相关文章
相关标签/搜索