1 边缘检测基本原理

图像边缘是图像最基本的特征,所谓边缘(Edge) 是指图像局部特性的不连续性。灰度或结构等信息的突变处称之为边缘。例如,灰度级的突变、颜色的突变、纹理结构的突变等。边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。

如图1所示,当我们看到一个有边缘的物体时,首先感受到的就是边缘。

灰度级跃变的边缘模型

图1 灰度级跃变的边缘模型

图1(a)是一个理想的边缘所具备的特性。每个灰度级跃变到一个垂直的台阶上。而实际上,在图像采集系统的性能、采样率和获取图像的照明条件等因素的影响,得到的边缘往往是模糊的,边缘被模拟成具有“斜坡面”的剖面,如图1(b)所示,在这个模型中,模糊的边缘变得“宽”了,而清晰的边缘变得“窄”了。

图像的边缘有方向和幅度两种属性。边缘通常可以通过一阶导数或二阶导数检测得到。一阶导数是以最大值作为对应的边缘的位置,而二阶导数则以过零点作为对应边缘的位置。


2 边缘检测算子分类

(1) 一阶导数的边缘算子
通过模板作为核与图像的每个像素点做卷积和运算,然后选取合适的阈值来提取图像的边缘。常见的有Roberts算子Sobel算子Prewitt算子

(2) 二阶导数的边缘算子
依据于二阶导数过零点,常见的有Laplacian 算子,此类算子对噪声敏感。

(3) 其他边缘算子
前面两类均是通过微分算子来检测图像边缘,还有一种就是Canny算子,其是在满足一定约束条件下推导出来的边缘检测最优化算子。

3 参考文章

  1. 入坑计算机视觉必备的图像基础
  2. 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子)
  3. 亚像素边缘检测
  4. A Sub-Pixel Edge Detector: an Implementation of the Canny/Devernay Algorithm
  5. 数字图像处理:边缘检测(Edge detection)
  6. OpenCV图像处理——C++实现亚像素尺寸标定板边缘轮廓提取