CV基础—— 边缘检测
边缘
边缘是图像强度函数快速变化的地方
如何检测边缘
为了检测边缘,我们需要检测图像中的不连续性,可以使用导数来检测不连续性
如上图所示,上图的第一幅图表示一张数字图片,我们对水平红线处进行求导,便可得到上图二中的关系,可以看到在边缘处有着较大的跳变。但是,导数也会受到噪声的影响,因此建议在求导数之前先对图像进行平滑处理(上图三)。
但是,导数也会受到噪声的影响,因此建议在求导数之前先对图像进行平滑处理。 然后我们可以使用遮罩使用卷积来检测边缘。 同样,我不打算讨论数学部分,这里我们仅关注实现细节。
Sobel算子
Sobel算子是一阶导数的边缘检测算子,在算法实现过程中,通过3×3模板作为核与图像中的每个像素点做卷积和算,然后选取合适的阈值以提取边缘。采用3×3邻域可以避免在像素之间内插点上计算梯度。Sobel算子也是一种梯度幅值,即:其中的偏导数Sx 和Sy可用卷积模板来实现。
Canny边缘检测
Canny边缘检测算法是比较出色的算法,它包含以下四个步骤:
- 高斯滤波
- 计算梯度幅值和方向
- 非最大值抑制
- 使用上下阀值来检测边缘