【计算机视觉】Lecture 5:梯度和边缘检测

什么是边缘?

简单的回答:灰度不连续处

【计算机视觉】Lecture 5:梯度和边缘检测

物体的边界

【计算机视觉】Lecture 5:梯度和边缘检测

不同材料性质的边界

【计算机视觉】Lecture 5:梯度和边缘检测

光照的边界

【计算机视觉】Lecture 5:梯度和边缘检测

边缘的类型(一维剖面)

边缘可以根据灰度剖面来建模
阶跃边缘 Step edge:图像灰度突然从不连续一侧的一个值变为另一侧的另一个值
斜坡边缘 Ramp edge:灰度变化不是瞬间的而是在有限距离内发生的一种阶跃边缘
【计算机视觉】Lecture 5:梯度和边缘检测

例子

【计算机视觉】Lecture 5:梯度和边缘检测

边缘的类型(一维剖面)

山脊边缘 Ridge edge:图像灰度值突然变化,然后在很短的距离内回到开始的值;通常由图像中的线产生
【计算机视觉】Lecture 5:梯度和边缘检测

例子

【计算机视觉】Lecture 5:梯度和边缘检测【计算机视觉】Lecture 5:梯度和边缘检测

边缘的类型(一维剖面)

屋顶边缘:灰度变化不是瞬间的而是在有限距离内发生的一种山脊边缘;通常在曲面相交处产生
【计算机视觉】Lecture 5:梯度和边缘检测

例子

【计算机视觉】Lecture 5:梯度和边缘检测

阶跃/斜坡边缘术语

边缘描述子
——边缘法向:最大灰度变化方向的单位矢量。
——边缘方向:沿着边缘的单位矢量(垂直于边缘法线)。
——边缘位置/中心:边缘所在图像中的位置
——边缘强度/幅值:沿着边缘法向的局部图像对比度
【计算机视觉】Lecture 5:梯度和边缘检测
重点:所有这些信息都可以从梯度向量场计算出来!!

梯度的总结

【计算机视觉】Lecture 5:梯度和边缘检测
边缘像素是在梯度幅值局部最大的地方
梯度方向垂直于边缘方向

梯度向量:【计算机视觉】Lecture 5:梯度和边缘检测

梯度幅值:【计算机视觉】Lecture 5:梯度和边缘检测

梯度方向:【计算机视觉】Lecture 5:梯度和边缘检测

使用梯度进行简单的边缘检测

一种简单的梯度幅度边缘检测方法

图像分别和水平导数滤波器以及垂直导数滤波器进行卷积,从而计算每个像素的梯度向量

计算每个像素处的梯度幅值

如果某一像素处的幅值超过一个阈值,则报告可能的边缘点

计算空间图像梯度

【计算机视觉】Lecture 5:梯度和边缘检测

使用梯度进行简单的边缘检测

一种简单的梯度幅度边缘检测方法

图像分别和水平导数滤波器以及垂直导数滤波器进行卷积,从而计算每个像素的梯度向量

计算每个像素处的梯度幅值

如果某一像素处的幅值超过一个阈值,则报告可能的边缘点

计算梯度幅值

【计算机视觉】Lecture 5:梯度和边缘检测
梯度幅值为sqrt(Ix.2+Iy.2)sqrt(Ix.^2 + Iy.^2)

测量每个像素处的坡度陡度(=边缘对比度)

【计算机视觉】Lecture 5:梯度和边缘检测

使用梯度进行简单的边缘检测

一种简单的梯度幅度边缘检测方法

图像分别和水平导数滤波器以及垂直导数滤波器进行卷积,从而计算每个像素的梯度向量

计算每个像素处的梯度幅值

如果某一像素处的幅值超过一个阈值,则报告可能的边缘点

查找边缘像素的阈值

【计算机视觉】Lecture 5:梯度和边缘检测

使用梯度进行边缘检测

【计算机视觉】Lecture 5:梯度和边缘检测

需要解决的问题

我们应该如何选择阈值?
【计算机视觉】Lecture 5:梯度和边缘检测

权衡:平滑与定位

在平滑和好的边缘定位之间一直有一个权衡
【计算机视觉】Lecture 5:梯度和边缘检测

需要解决的问题

边缘细化和连接

【计算机视觉】Lecture 5:梯度和边缘检测

平滑+阈值给我们提供了一个具有“厚”的边缘的二值mask
【计算机视觉】Lecture 5:梯度和边缘检测

我们想要薄的,一个像素宽度的,连接的轮廓

Canny边缘检测算子

一个重要的案例研究,可能是CV从业者最常用的边缘检测算法,实验一致表明它的性能非常好

J. Canny, A Computational Approach to Edge Detection, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 8, No. 6, Nov 1986

一种最优边缘检测算子的规则化设计

边缘检测包括三步:

  1. 噪声平滑
  2. 边缘增强
  3. 边缘定位
    J. Canny将这些步骤规则化,以设计最佳边缘检测算子

边缘模型(一维)

一个理想的边缘可以建模为一个阶跃
【计算机视觉】Lecture 5:梯度和边缘检测

加性的白高斯噪声:均方根噪声的幅值/单位长度为n02n^2_0

性能标准(1)

好的检测:滤波器在边缘位置(x=0)的响应必须比噪声强

【计算机视觉】Lecture 5:梯度和边缘检测

性能标准(2)

好的定位:滤波器在非常接近 x=0 的地方的响应必须是最大值

【计算机视觉】Lecture 5:梯度和边缘检测

性能标准(3)

低误报率:在 x=0 的合理邻域中应该只有一个最大值

【计算机视觉】Lecture 5:梯度和边缘检测

Canny边缘检测算子

Canny找到了一个线性的连续滤波器,它最大化了这三个给定的标准
最优滤波器没有闭合形式的解
然而,它看起来非常类似于高斯函数的导数

【计算机视觉】Lecture 5:梯度和边缘检测

回忆:边缘检测的实际问题

细化和连接

【计算机视觉】Lecture 5:梯度和边缘检测
选择一个幅值阈值

【计算机视觉】Lecture 5:梯度和边缘检测

Canny对所有这些都有很好的回答

细化

注意:在定阈值之前进行细化
【计算机视觉】Lecture 5:梯度和边缘检测
我们想在曲线上标出幅值最大的点
我们可以通过沿着垂直于曲线的一维灰度切片寻找最大值(非最大抑制)来实现这一点
这些点可以形成一个像素宽度的曲线

选择哪个阈值?

【计算机视觉】Lecture 5:梯度和边缘检测
问题:
加入阈值太大: 非常少的(或者几乎没有)边缘;错误检测率高,很多间断
加入阈值太小:非常多的(所有像素)边缘;误报率高,很多额外的边缘

解决方法:滞后阈值法

允许我们同时应用两者!(例如,“模糊”阈值)

  1. 同时保持一个高阈值H和一个低阈值L;
  2. 任何强度小于L的边缘都将被丢弃;
  3. 任何强度高于H的边缘都将被保留;
  4. 只有当有一条强度大于L的边路径将P连接到强度大于H的边时,强度介于L和H之间的边缘P才被保留;
  5. 在实际应用中,该阈值与边缘连接相结合,得到连接的轮廓

滞后阈值法例子

【计算机视觉】Lecture 5:梯度和边缘检测

Canny边缘:例子

【计算机视觉】Lecture 5:梯度和边缘检测【计算机视觉】Lecture 5:梯度和边缘检测
精细尺度,高阈值

【计算机视觉】Lecture 5:梯度和边缘检测
粗糙尺度,高阈值

【计算机视觉】Lecture 5:梯度和边缘检测
粗糙尺度,低阈值

完整的Canny算法

  1. 计算图像关于x和y的导数:【计算机视觉】Lecture 5:梯度和边缘检测

  2. 计算每个像素梯度幅值:【计算机视觉】Lecture 5:梯度和边缘检测

  3. 去掉梯度方向上幅值不是局部最大的像素

  4. 滞后阈值法
    选择幅值M大于高阈值Th的像素点
    选择幅值大于低阈值Tl,同时是已经连接的检测出来的边缘点附近的像素点