目录

  1. 边缘提取
  2. 原理
  3. Laplacian、Prewitt、Sobel、Laplace算子
  4. Canny算法

1 边缘提取

1.1 边缘提取:什么是边缘?

  • 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。
  • 边缘有正负之分,就像导数有正值也有负值一样:由暗到亮为正,由亮到暗为负
  • 应用:语义分割、实例分割
    3-2 边缘提取

1.2 求边缘幅度的算法:

  • 一阶导数:sobel、Roberts、prewitt等算子
  • 二阶导数:Laplacian、Canny算子

Canny算子效果比其他的都要好,但是实现起来有点麻烦

梯度: 梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)
3-2 边缘提取

1.3 高频信号&低频信号

  • 图像中的低频信号和高频信号也叫做低频分量和高频分量。
  • 简单一点说,图像中的高频分量,指的是图像强度(亮度/灰度)变化剧烈的地方,也就是边缘(轮廓);
  • 图像中的低频分量,指的是图像强度(亮度/灰度)变换平缓的地方,也就是大片色块的地方。

人眼对图像中的高频信号更为敏感。


2 边缘检测的原理和步骤

2.1 步骤

  1. 滤波
    边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波。
  2. 增强
    增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。在具体编程实现时,可通过计算梯度幅值来确定。
  3. 检测
    经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。实际工程中,常用的方法是通过阈值化方法来检测。

2.2 原理

  • 关于边缘检测的基础来自于一个事实,即在边缘部分,像素值出现”跳跃“或者较大的变化。如果在此边缘部分求取一阶导数,就会看到极值的出现。
  • 而在一阶导数为极值的地方,二阶导数为0,基于这个原理,就可以进行边缘检测。

3-2 边缘提取

2.3 图像锐化

  • 图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,分为空域处理和频域处理两类。
  • 图像锐化是为了突出图像上地物的边缘、轮廓,或某些线性目标要素的特法提高了地物边缘与周围像元之间的反差,因此也被称为边缘增强。

3-2 边缘提取

2.4 图像平滑

  • 图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分的图像处理方法,目的是使图像亮度平缓渐变,减小突变梯度,改善图像质量。
    3-2 边缘提取

3 Laplacian、Prewitt、Sobel、Laplace算子

3.1 Laplacian

[注] 拉普拉斯核函数:

  • 会忽略一维的边缘(如,背景中的柱子)
  • 横向纵向一次性检测出 – 因为他是二阶导数,故可以直接作用在图像上

3.2 Sobel算子

  • Sobel算子是典型的基于一阶导数的边缘检测算子,由于该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响。
  • Sobel算子对于像素的位置的影响做了加权,因此与Prewitt算子、Roberts算子相比效果更好。

3-2 边缘提取
3-2 边缘提取

3.3 Prewitt算子

  • Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。
    3-2 边缘提取

其原理与sobel算子一样

3.4 Laplace算子

  • 从上例中我们可以推论检测边缘可以通过定位梯度值大于邻域的相素的方法找到(或者推广到大于一个阀值).
  • 从以上分析中,我们推论二阶导数可以用来检测边缘 。
    因为图像是 “2维”, 我们需要在两个方向求导。使用Laplacian算子将会使求导过程变得简单。
    3-2 边缘提取

4 Canny算法

  • Canny是目前最优秀的边缘检测算法,其目标为找到一个最优的边缘
  • 其最优边缘的定义为:
    1. 好的检测:算法能够尽可能的标出图像中的实际边缘
    2. 好的定位:标识出的边缘要与实际图像中的边缘尽可能接近
    3. 最小响应:图像中的边缘只能标记一次

[注] 找到最优边缘,非所有边缘

4.1 算法

  1. 对图像进行灰度化:(灰度化:计算量少)
    方法1:Gray=(R+G+B)/3;
    方法2:Gray=0.299R+0.587G+0.114B;(这种参数考虑到了人眼的生理特点)
  2. 对图像进行高斯滤波:
    根据待滤波的像素点及其邻域点的灰度值按照一定的参数规则进行加权平均。这样可以有效滤去理想图像中叠加的高频噪声。
  3. 检测图像中的水平、垂直和对角边缘(如Prewitt,Sobel算子等)。
  4. 对梯度幅值进行非极大值抑制
  5. 用双阈值算法检测和连接边缘

4.2 高斯平滑

高斯平滑水平和垂直方向呈现高斯分布,更突出了中心点在像素平滑后的权重,相比于均值滤波而言,有着更好的平滑效果。
3-2 边缘提取

  • 高斯平滑水平和垂直方向呈现高斯分布,更突出了中心点在像素平滑后的权重,相比于均值滤波而言,有着更好的平滑效果。
    3-2 边缘提取

  • 重要的是需要理解:高斯卷积核大小的选择将影响Canny检测器的性能:尺寸越大,检测器对噪声的敏感度越低,但是边缘检测的定位误差也将略有增加。一般 5x5 是一个比较不错的trade off。

[注] 为什么要取高斯平滑来做平滑?
经验表明,高斯函数确定的核,抗噪声干扰和边缘检测精确定位之间提供一个较好的折中方案
3-2 边缘提取

4.3 非极大值抑制

4.3.1 简介

  • 非极大值抑制,简称为NMS算法,英文为Non-Maximum Suppression
  • 其思想是搜素局部最大值,抑制极大值。
  • NMS算法在不同应用中的具体实现不太一样,但思想是一样的。

4.3.2 为什么要用非极大值抑制?

  • 以目标检测为例:目标检测的过程中在同一目标的位置上会产生大量的候选框,这些候选框相互之间可能会有重叠,此时我们需要利用非极大值抑制找到最佳的目标边界框,消除冗余的边界框。
    3-2 边缘提取

4.3.3 方法

  • 对于重叠的候选框,若大于规定阈值(某一提前设定的置信度),则删除;
  • 低于阈值则保留;
  • 对于无重叠的候选框,都保留。

图像中的方法

  1. 将当前像素的梯度强度与沿正负梯度方向上的两个像素进行比较。
  2. 如果当前像素的梯度强度与另外两个像素相比最大,则该像素点保留为边缘点,否则该像素点将被抑制(灰度值置为0)。
    3-2 边缘提取

4.3.4 用双阈值算法检测(滞后阈值)

  • 完成非极大值抑制后,会得到一个二值图像,非边缘的点灰度值均为0,可能为边缘的局部灰度极大值点可设置其灰度为128。
  • 这样一个检测结果还是包含了很多由噪声及其他原因造成的假边缘。因此还需要进一步的处理。

双阈值检测

• 如果边缘像素的梯度值高于高阈值,则将其标记为强边缘像素;
• 如果边缘像素的梯度值小于高阈值并且大于低阈值,则将其标记为弱边缘像素;
• 如果边缘像素的梯度值小于低阈值,则会被抑制。

  • 大于高阈值为强边缘,小于低阈值不是边缘。介于中间是弱边缘。
  • 阈值的选择取决于给定输入图像的内容。

抑制孤立低阈值点

  • 到目前为止,被划分为强边缘的像素点已经被确定为边缘,因为它们是从图像中的真实边缘中提取出来的。
  • 然而,对于弱边缘像素,将会有一些争论,因为这些像素可以从真实边缘提取也可以是因噪声或颜色变化引起的。
  • 为了获得准确的结果,应该抑制由后者引起的弱边缘:
    • 通常,由真实边缘引起的弱边缘像素将连接到强边缘像素,而噪声响应未连接。
    • 为了跟踪边缘连接,通过查看弱边缘像素及其8个邻域像素,只要其中一个为强边缘像素,则该弱边缘点就可以保留为真实的边缘。

3-2 边缘提取

[注] 阈值为0时,所有检测到的都是真边缘,在图像上是存在这样的纹理的


来源于八斗学院

相关文章:

  • 2021-05-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-12
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-23
  • 2022-02-12
  • 2022-01-11
  • 2021-11-16
  • 2022-12-23
  • 2021-09-02
相关资源
相似解决方案