边缘检测(Edges)
边缘线条会给我们带来大量关于图像信息,线条可以事物之间边界线,也可以事物阴影区域都是线条。边缘检测用于图像分割,提取图像形状的信息,那么边缘检测也就是用二值图表示出图片中边缘信息。所以在图像中,线条相对于颜色和纹理,显得格外重要。能够给我们带来大量的信息。我们无需色彩,仅单色的线条图就可以清楚来表达一些信息,而且这些信息足够反应图像的语义。线条位置也就是亮度变化明显的位置,或者颜色变化位置,下面介绍几种变化的模式共大家参考。
虽有通过无人驾驶中识别车道线例子来介绍边缘检测应用,其中会用到 Canny 边缘检测和霍夫变换。
边缘产生的位置
这里来简单地介绍一下,我们如何判断是边缘,要判断什么是边缘,首先需要知道什么是边缘,为什么会有边缘的存在。边缘定义——图像强度的不连续性就是边缘,那么什么是强度呢,强度暂时可以理解为灰度。
表面法向不连续性(surface normal discontinuity)
景深不连续性(depth discontinuity)
表面颜色不连续性(surface color discontiuity)
光照不连续性(illumination discontinuity)
线类模型
Step(a) 阶跃边缘模型,也就是变换一下从比较暗区域跳跃到明亮的区域,这是一种明暗变化的模式
Ramp(b) 斜坡边缘模型
Spike(c)
Roof(d)这种变换相对于上面 Step 阶跃变化变化不会那么突然,变换相对平稳,先是平稳上升接下来是平稳下降的过程
线检测的标准
其实在 AI 项目中,比较重要的是先定义出一个标准,有了标准才能开展随后的工作。有了标准才能看出好坏,这里标准适合大多数的机器学习项目。对于分类任务和预测任务是比较通用方法也适合边缘检测的能力。
Results of Method (RM) 这个区域表示算法识别出的
Ground Truth (GT): 表示图像中实际为边缘的区域
True Positives (TP): 表示模型将边缘正确识别的区域
True Negatives (TN): 表示不是边缘的检测为不是边缘
False Positivies (FP): 表示将不是边缘检测为边缘
False Negatives (FN): 表示模型没有检测出的边缘区域
边缘检测分类
一阶导数的边缘算子
通过模板作为核与图像的每个像素点做卷积和运算,然后选取合适的阈值来提取图像的边缘。接下来介绍的 Roberts Cross、Sobel 算子和 Prewitt 算子都属于一阶导数的边缘算子。
二阶导数的边缘算子
二阶导数过零点,常见的有 Laplacian 算子,此类算子对噪声敏感。
其他边缘算子
前面两类均是通过微分算子来检测图像边缘,还有一种就是Canny算子,其是在满足一定约束条件下推导出来的边缘检测最优化算子。