图像分割:2.基于边缘检测的图像分割方法

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ml_ai_sun/article/details/81606418

一、图像边缘检测原理

基本思路:基于边缘检测的图像分割方法的基本思路是先确定图像中的边缘像素,然后再把这些像素连接在一起就构成所需的区域边界。

图像边缘:图像边缘,即表示图像中一个区域的终结和另一个区域的开始,图像中相邻区域之间的像素集合构成了图像的边缘。所以,图像边缘可以理解为图像灰度发生空间突变的像素的集合。图像边缘有两个要素,即:方向和幅度。沿着边缘走向的像素值变化比较平缓;而沿着垂直于边缘的走向,像素值则变化得比较大。因此,根据这一变化特点,通常会采用一阶和二阶导数来描述和检测边缘。

综上,图像中的边缘检测可以通过对灰度值求导数来确定,而导数可以通过微分算子计算来实现。在数字图像处理中,通常是利用差分计算来近似代替微分运算。 

二、微分算子

    常用的一阶微分算子有Roberts、Prewitt、Sobel等算子,常用的二阶微分算子有Laplace和Kirsh等算子。在实际处理操作中常用模板矩阵与图像像素值矩阵卷积来实现微分运算。

    由于垂直边缘的方向上的像素点和噪声都是灰度不连续点,所以变换到频域时,在频域均为高频分量,直接采用微分运算不可避免地会受到噪声的很大影响。 因此,微分算子只适用于图像噪声比较少的简单图像。针对此问题,LoG算子(Laplace of Gaussian)和Canny算子采取的方法是,先对图像进行平滑滤波,然后再用微分算子与图像进行卷积操作,这样处理会得到比较好的边缘检测结果。其中,LoG算子是采用Laplacian算子计算高斯函数的二阶导数,Canny算子是高斯函数的一阶导数,两种算子在抑制噪声和检测边缘之间取得了比较好的平衡。

1、roberts算子

2、prewitt算子


3、sobel算子

4、LoG算子(二阶微分算子)


LoG算子的特点: 
    1. 图像与高斯滤波器进行卷积,既平滑了图像又降低了噪声,孤立的噪声点和较小的结构组织将被滤除。 
    2. 在边缘检测时则仅考虑那些具有局部梯度最大值的点为边缘点,用拉普拉斯算子将边缘点转换成零交叉点,通过零交叉点的检测来实现边缘检测。 
    3. 缺点是在过滤噪声的同时使得原有的边缘一定程度上被平滑了。

5、canny算子

 Canny算子检测边缘点的方法基本思想是寻找图像梯度的局部最大值。 
    评价一个边缘检测算子的,一般考虑如下三个指标: 
    1. 低失误概率:在尽可能把所有边缘检测到的同时,减少将非边缘误判为边缘; 
    2. 高位置精度:检测出的边缘是真正的边界,检测到的边缘位置足够精确; 
    3. 检测得到的边界是单像素宽。 
    针对这三个指标,Canny在设计检测算子时提出了边缘检测算子的三个准则: 
    1. 信噪比准则; 
    2. 定义精度准则; 
    3. 单边缘响应准则。

    遵循这三个准则,Canny算子设计实现的步骤如下: 
    (1)首先用高斯滤波模板进行卷积以平滑图像; 
    (2)利用微分算子,计算梯度的幅值和方向; 
    (3)对梯度幅值进行非极大值抑制。即遍历图像,若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比不是最大,那么这个像素值置为0,即不是边缘; 
    (4)使用双阈值算法检测和连接边缘。即使用累计直方图计算两个阈值,凡是大于高阈值的一定是边缘;凡是小于低阈值的一定不是边缘。如果检测结果大于低阈值但又小于高阈值,那就要看这个像素的邻接像素中有没有超过高阈值的边缘像素,如果有,则该像素就是边缘,否则就不是边缘。

 

从左到右依次是原图、roberts、prewitt、sobel、LoG、canny

结论:边缘检测还是比较适用于噪声比较小的图像中,对于复杂图像不是很合适,二阶微分算子对噪声十分的敏感。

展开阅读全文

没有更多推荐了,返回首页