图像边缘检测的概念,快速掌握Canny算法

Edge detection(边缘检测)


目标: 识别图像中的 突然变化(不连续) 的图像

(一)边缘特征

1.边缘种类

(1)表面法线不连续

(2)深度不连续

(3)表面颜色不连续

(4)光照不连续

在这里插入图片描述

2.导数(Derivative)

(1)边缘作为图像中快速变化的点,可以通过求导来提取边缘

导数公式
在这里插入图片描述
公式可近似为

在这里插入图片描述

(2)该点的导数等于右边的点减自身,可以用卷积来实现这个过程
在这里插入图片描述

在这里插入图片描述
左下图是对x求导,右下图是对y求导。

对x求导,可以提取左右差距比较明显的边缘
对y求导,可以提取上下差距比较明显的边缘

3.其他边缘提取方法

在这里插入图片描述
(1)prewitt:采用的是[-1 0 1],并且是左边和右边各取3个像素来判断该点是不是边缘

提取的更准确,对噪声的敏感程度更低

(2)sobel可以分解成[1 2 1]的转置×[-1 0 1]。

[1 2 1]的转置是一个高斯滤波操作,[-1 0 1]是一个边缘提取操作,即先对图像做了平滑操作再对图像边缘进行提取

对噪声的敏感程度更低一些

(3)**roberts:**衡量的是斜对角的差异值,Mx检测的是135度方向的边,My检测的是45度方向的边。

(二)梯度(Gradient)

1.定义

在这里插入图片描述

梯度指向强度增加最快的方向

梯度方向与边垂直,通过梯度的方向大致可以知道边的方向

2.计算

在这里插入图片描述

梯度值越强,表明该点越有可能是边

(三)噪声

1.噪声的影响

噪声导致很多点的变化比较大,这时求导的结果就会很不准确,根本无法准确提取边缘
在这里插入图片描述
由于误差导致的结果如图:

2.高斯偏导函数

用高斯偏导滤波器去噪

在这里插入图片描述
两次卷积操作:fg(去噪)和d(fg)/dx(边缘提取)

由于卷积非常耗时间,我们可以将两次卷积操作用一次完成
在这里插入图片描述

高斯偏导模板不可分离

在这里插入图片描述

高斯偏导(平滑化的导数)可以去除噪音,但会模糊边缘。

还可以找到不同 "尺度 "的边缘,越大越模糊。

在这里插入图片描述

3.高斯偏导函数vs高斯平滑函数

(1)高斯平滑过滤器
目标是平滑,去除 "高频 "成分。

高斯平滑滤波器的值不为负数,总和为1

(2)高斯偏导滤波器
目标是提取边缘信息

高斯偏导滤波器的值会是负数,总和为0,平坦的区域才没有响应值
值越高,跟周围差异越大,可能是边或噪声

(四)Canny边缘检测器算法

如何利用Canny来对下图进行边缘提取呢?

1.实现步骤

(1)通过高斯核进行滤波,去除噪声点,使图像平滑

(2)通过求取偏导,使用梯度强度和方向来提取边缘轮廓

(3)采用非极大值抑制的方法,将提取到的粗犷的边缘轮廓细化

(4)采用双阈值来进一步过滤噪声即过滤掉不想要的线条,同时保证轮廓的连续性
在这里插入图片描述

1.计算梯度

计算梯度强度和方向

该点梯度越小越小有可能是噪声产生的,因此将低于门限的点认为是是噪声。
在这里插入图片描述

2.非极大化抑制(Non-maximum suppression)

由于图像的像素是逐渐进行过渡的,因此我们通过上述过程提取到的边缘会很粗,我们想要得到的图像的边缘应该只有一个像素的粗细。因此我们要提取突变最大的地方作为图像的边缘。

非极大值抑制法,即沿梯度方向,选取梯度强度最大的一个像素块进行保留,将其余像素块舍弃的方法。

比较方法通常为:沿梯度方向,取一像素点,和该像素点前后各一像素的像素点,进行比较,保留最大值。

在这里插入图片描述
非最大化抑制后的结果:
在这里插入图片描述

3.双阈值滤波(Hysteresis thresholding)

在对图像去噪时有一些边也被抹掉了,如何让这些边在去噪时不被去除?

采用双阈值滤波法

双阈值滤波是基于如下的假设进行的:

假设所有噪声所产生的线条与图像的轮廓是不发生连接的。

这样,我们就可以设置两个阈值,一个高阈值,一个低阈值。高阈值用来保留轮廓线,低阈值用来过滤噪声和突变不明显的线条。

在低阈值和高阈值之间,且和轮廓线相邻的线条可保留,否则舍弃。采用的思想是判断强边周围是否存在弱边,即通过强边延伸弱边

判断弱边周围是否存在强边,来进而确定该弱边是否是我们所需要的边,是否进行滤除。该方法的缺陷:
强边为H,其上有一点a与弱边相连。该弱边为L,其上有一点b和一点c,b点和a点相连。
如果,在判断弱边是否滤除的时候,先判断b点,后判断c点,得知b点和a点相连,b点设为1值保留,c点和b点相连,因此c点也设为1值保留
如果,先判断c点,后判断b点,那么得出的结论是:c点周围没有1值,丢弃。这将导致我们丢失掉我们想要的点

猜你喜欢

转载自blog.csdn.net/Bluebro/article/details/127681561
今日推荐