一、图像边缘
图像可以看作是一个函数,其边缘部位非常尖锐,如下图
边缘的重要性:
-
大部分语义和形状信息都来源于边缘,因此我们可以执行类识别和分析几何图形
-
边缘比像素更紧凑
如何求图像梯度?
- 右边像素减左边像素
- 下边像素减上边像素
这个过程可以用一个卷积核搞定:[-1, 0, 1]
- 计算图像梯度:
-
先选定一个滤波器
-
与图像卷积计算梯度
-
梯度、方向和振幅
-
二、用于计算梯度的滤波器
1、Sobel Filter
-
水平滤波:
-
垂直滤波:
- 效果图入下:
上图可以看出,水平滤波会将图像的垂直方向的边缘凸显出来,垂直滤波会将图像的水平方向的边缘凸显出来,看下面这个砖块的图像更加明显。
2、高斯滤波器的导数
- 当使用导数滤波器时,先进行模糊操作很重要,因为导数滤波器对图像的噪声很敏感
- 把 Gaussian 滤波+模糊这两个过程,可以用 高斯滤波的导数来代替,如下:
- 其三维效果图如下:
3、拉普拉斯滤波器
- 图像的二阶导数
- 针对高斯平滑滤波后的拉普拉斯导数,其一维效果图如下:
- 高斯平滑的Laplace滤波器与Laplace导数滤波器对比:
- 高斯平滑的Laplace滤波器与高斯滤波导数
三、Canny边缘检测
1、原理
Canny边缘检测通过一下步骤检测:
- 1、使用 x 和 y 的高斯滤波导数消除噪声
- 2、在每个像素上找到梯度的方向和大小
- 3、执行非最大抑制,它将边缘缩小到一个像素的宽度:从步骤2之后的梯度中提取的边缘将是非常模糊的,它只是一个精确的响应。
- 4、阈值设置和连接方式,也称为滞后现象,用于创建连接的边缘。
- 通过分别定义一个低阈值和一个高阈值来区分和确定弱边缘像素和强边缘像素
- 最终的边缘曲线,是先将强边缘连接起来,与强边缘连接的弱边缘也连接起来
2、例子
1、先高斯滤波导数进行图像平滑化
2、找到每个像素梯度的方向
3、非最大抑制
简单说,就是在边缘上的所以像素点上,寻找局部最大的像素点,保留他,其他点抑制掉(归0)
抑制后的效果图:
4、针对像素值,设置高低区间
- 在高区间的就是强边缘,可以归为图像的边缘
- 低于高区间但是和强边缘连接的弱边缘也可以归为边缘
- 低于高区间,又不跟强边缘连接的就去掉
原理图如下:
终于要结束啦~~感觉好辛苦哈哈,最后再来个Canny效果图