基于Sobel和Canny边缘检测

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mingtian715/article/details/53343680

图像边缘是由灰度突变产的,属于一种图像的特征,是目标探测、识别的重要手段之一。

 

检测边缘通常为求原图像的梯度或二阶导数,有如下结论:

1)一阶导数通常在图像中产生较粗的边缘

2)二阶导数对精细细节、如细线、孤立点和噪声有较强的响应

3)二阶导数在灰度斜坡和灰度台阶过渡处会产生双边缘响应

4)二阶导数的符号可用于确定边缘的过渡是从亮到暗还是从暗到亮

 

下面再说边缘检测中比较著名的算子SobelCanny

 

Sobel是基于梯度图像模值大小的检测算子,通常有水平和垂直两种算子。

 

Canny可以认为是Sobel的改进算子。它具有以下优点

1)低错误率

2)边缘点被很好定位

3)单一的边缘响应

 

  其基本步骤包括:

(1)用一个高斯滤波器平滑图像

%去除噪声的干扰

(2)计算梯度幅值图像和角度图像

(3)对梯度图像应用非最大抑制(保证单一边缘响应)

   %对规定方向以外的梯度方向进行非最大抑制

(4)用双阈值处理和连接分析来检测并连接边缘(保证了低错误率)

   %剔除小于阈值的边缘,保留大于阈值的边缘,处于高低阈值之间的边缘点,若其与大于阈值的像素点连接则保留,反之剔除。

 

PS

注意在OPENCV中利用调用Sobel函数检测边缘时,应该分别求其水平和垂直两个方向的边缘,再进行加权叠加。

Sobel函数可选对图像求几阶导数,由实验结果可以看出,二阶导数求出的边缘比一阶更细,这也与之前给出的结论相吻合。


实验结果:


左图为Sobel一阶导数,右图为Sobel二阶导数

   


下图为Canny结果,效果更好



没有更多推荐了,返回首页