图像的边缘集中了图像的大部分信息,边缘的检测对于整个图像场景的识别和理解非常重要,同时也是图像分割依赖的重要特征。

1.边缘检测的步骤:

在实际应用中,我们常常把边缘定义为亮度变化显著的地方。

1) 滤波

边缘检测算法主要基于图像强度的一阶和二阶导数,求取图像导数强调了高频的部分而放大了噪声。因为导数对噪声很敏感,因此在边缘检测之前需要采用一个低通滤波器对图像进行平滑。常用的滤波算法是高斯滤波。

2)增强

增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。

3)检测

经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。实际工程中,常用的方法是通过阈值化方法来检测。

2、Canny边缘检测算法原理

2.1 对原始图像进行灰度化

Canny算法通常处理的图像为灰度图,因此如果摄像机获取的是彩色图像,那首先就得进行灰度化。对一幅彩色图进行灰度化,就是根据图像各个通道的采样值进行加权平均。以RGB格式的彩图为例,通常灰度化采用的方法主要有:

方法1:Gray=(R+G+B)/3;

方法2:Gray=0.299R+0.587G+0.114B;(这种参数考虑到了人眼的生理特点)

2.2 对图像进行高斯滤波

图像高斯滤波的实现可以用两个一维高斯核分别两次加权实现,也可以通过一个二维高斯核一次卷积实现。

1)高斯核实现

上式为离散化的一维高斯函数,确定参数就可以得到一维核向量。

上式为离散化的二维高斯函数,确定参数就可以得到二维核向量。

注意1:关于参数Sigma的取值详见上篇博文。

注意2:在求的高斯核后,要对整个核进行归一化处理。

2)图像高斯滤波

对图像进行高斯滤波,听起来很玄乎,其实就是根据待滤波的像素点及其邻域点的灰度值按照一定的参数规则进行加权平均。这样可以有效滤去理想图像中叠加的高频噪声。

通常滤波和边缘检测是矛盾的概念,抑制了噪声会使得图像边缘模糊,这回增加边缘定位的不确定

3 边缘检测算法

1) 拉普拉斯边缘检测

基于图像灰度的二阶偏导数,二阶偏导数为0的点即为图像的极值点。图像的极值点是图像灰度局部快速变化的点,即可能的边缘点。

2)基于模板的边缘检测

边缘检测算法python 边缘检测算法步骤_灰度


3)基于梯度的边缘检测

canny算法