边缘检测
1. 关于边缘模式的算法
边缘指的是图像内出现的明部和暗部的边界。边缘检测则是通过图像处理检测出该浓度变化的边界。可通过以下
4 个流程检测边缘。
2. 关于边缘模式的参数设置
想从倾斜边缘或多个候补中检测出任意边缘时,光靠初始值可能无法顺利进行。
此时调整设置参数,就可以稳定检测。
接下来解说常用的 2 个参数。
3. 使边缘检测更加稳定的预处理滤波器
在测量区域内向指定方向扫描进行边缘检测的区段,然后测量各个区段的边缘位置。在 1个 测量区域中可测量多个边缘位置信息,因此除了整体平均、最大、最小之外,还可以检测出以个别测量结果和全部测量结果为点群的圆形和直线。
4. 使边缘检测更加稳定的预处理滤波器
边缘检测中,如何抑制边缘偏差成为关键所在。作为使边缘检测稳定的高效滤波器,“中值”和“平均化”最为人们所熟知。接下来对这些预处理滤波器的特征和高效选定方法进行说明。
.首先明白所谓“零交叉”的概念。
在求图像边缘的时候如果计算一阶导数的边缘检测器如:(a) Roberts交叉算子(b)Sobel算子(c) Prewitt算子,会导致检测的边缘点太多;一种更好的方法就是求梯度局部最大值对应的点,并认定它们是边缘点,如下图所示,若用阈值来进行边缘检测,则在a和b之间的所有点都被记为边缘点,这就是为什么计算一阶导数的边缘检测器会导致检测的边缘点太多.但通过去除一阶导数中的非局部最大值,可以检测出更精确的边缘.一阶导数的局部最大值对应着二阶导数的零交点这意味着在边缘点处有一阶导数的峰值,同样地,有二阶导数的零交叉点.这样,通过找图像强度的二阶导数的零交叉点就能找到边缘点。在二维空间,对应二阶导数有两种算子:拉普拉斯算子和二阶方向导数。
以一维函数f(x)(阶跃边缘) 与f'(x)及f''(x)的对应关系来理解这个概念。
2.在零交叉点概念的基础上明白Canny 边缘检测器处理的图像的步骤:
step1.用高斯滤波器平滑图像.
step2.用一阶偏导的有限差分来计算梯度的幅值和方向.
step3.对梯度幅值应用非极大值抑制.
step4.用双阈值算法检测和连接边缘.
3.Canny算子中特别之处在步骤3和步骤4中体现;
首先,步骤三中不是仅仅把图像快速变化的问题转化成求幅值阵列的局部最大值问题.为确定边缘,增加了细化幅值图像中的屋脊带,即根据3*3领域中心点的扇区值决定的梯度方向,用领域中心点幅值与梯度方向上相邻的2个元素进行比较,只保留幅值局部变化最大的点.这一过程叫非极大值抑制(Non-Maxima Suppression,NMS ),它会生成细化的边缘.
另外,步骤4中用了双阈值技术,双阈值算法对非极大值抑制图像作用双阈值t1和t2,且t2约为t1的两倍,得到两个阈值边缘图像T1[i,j]和T2[i,j].由于图像T2[i,j]是用高阈值得到的,因此它含有很少的假边缘,但T2[i,j]可能在轮廓上有间断(太多的假错误).双阈值法要在T2[i,j]中把边缘连接成轮廊,当到达轮廊的端点时,该算法就在T1[i,j]的8-邻点位置寻找可以连接到轮廊上的边缘,这样,算法将不断地在T1[i,j]中收集边缘,直到将T2[i,j]中所有的间隙连接起来为止.这一算法是阈值化的副产物,并解决了阈值选择的一些问题.