更新时间:2024-08-29 16:34
索贝尔算子是计算机视觉领域的一种重要处理方法。主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。索贝尔算子是把图像中每个像素的上下左右四领域的灰度值加权差,在边缘处达到极值从而检测边缘。
在边缘检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边缘的 ;另一个是检测垂直边缘的 。与Prewitt算子相比,Sobel算子对于象素的位置的影响做了加权,可以降低边缘模糊程度,因此效果更好。
Sobel算子另一种形式是各向同性Sobel(Isotropic Sobel)算子,也有两个,一个是检测水平边缘的 ,另一个是检测垂直边缘的 。各向同性Sobel算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。将Sobel算子矩阵中的所有2改为根号2,就能得到各向同性Sobel的矩阵。
由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有效,因此应用广泛。美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。 在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。
索贝尔算子边缘算子所采用的算法是先进行加权平均,然后进行微分运算,算子的计算方法如下:
Sobel算子垂直方向和水平方向的模板如图10-12所示,前者可以检测出图像中的水平方向的边缘,后者则可以检测图像中垂直方向的边缘。实际应用中,每个像素点取两个模板卷积的最大值作为该像素点的输出值,运算结果是一副边缘图像。
该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:
图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小。
然后可用以下公式计算梯度方向。
在以上例子中,如果以上的角度θ等于零,即代表图像该处拥有纵向边缘,左方较右方暗。
在对图象的研究和应用中,人们往往仅对图象中的某些部分感兴趣,这些部分通常称为目标或前景,其余部分则称为背景. 将图象分为目标和背景的操作称为图象分割.图象分割是由图象处理进到图象分析的关键步骤. 多年来,图象分割一直得到人们的高度重视,至今已提出了上千种分割算法. 它们大致可分为阈值法、边缘检测法和区域生长法等几大类 .在这些方法中,人们对阈值法较为重视,还不时有新的方法提出来.而对于后两种方法则注意较少,已有的方法基本上还是60~ 70年代提出的. 究其原因,是由于阈值法方法比较简单, 且计算量也较少些.但其缺点是,除了自适应阈值法外,其阈值的选取主要是根据灰度分布的直方图,而很少考虑象素的空间关系.当图象比较复杂时,目标与背景就不能简单地用一个阈值来分离. 这时就只有求助于边缘检测法或区域生长法. 而边缘检测法中最为常用的是Sobel算子.
Sobel算子的优点是方法简单、处理速度快,并且所得的边缘光滑、连续.其缺点是边缘较粗,由于处理时需作两值化处理,故得到的边缘与阈值的选取也有很大的关系.本文提出的边缘细化方法是通过引入衰减因子而得到不失真的灰阶边缘图,再用Sobel算子进行细化,对于边缘较陡的部分可以得到光滑、连续,且接近单点宽的边缘;而对于边缘模糊的部分,这种过程可以重复多次,也可得到较细的边缘(但不一定连续) .同时,这种方法还可保留低幅值的边缘.这样,既可提高定位精度,又可得到用其它方法难以得到的模糊边缘和微弱边缘. 而且对用其它边缘检测方法得到的边缘进行处理,此方法也有效.
边缘细化的应用大致可有以下几种情况:
( 1) 重叠对象的分离,如图8中的(a)两值图象上的3个细胞无法分割,而从细化的边缘图(图8中的(b) )中可得到分割所需的边缘信息.
( 2) 缺损对象的补齐,如图8中的(c)两值图象上的血管管壁,其内侧有缺损,而从细化的边缘图中(图8中的(d) )可得到补齐的所需边缘信息.
( 3) 可补上阈值选取不当而遗漏的对象,如图8细胞和血管壁的边缘图上都多出了一个小颗粒.
( 4) 由于边缘以灰度差为分离参数,且边缘线较细,故定位较准确,检测效果比阈值法要好,这有利于测量精度的提高.
本方法的缺点是处理效果与边缘本身的质量有关,若边缘质量好,且分界线较陡,则效果较好,反之则较差,而且还不适用于理想阶跃输入. 这些可从图中看出. 另外,细化边缘图可能“信息过量” ,从中直接提取边缘也很困难,最好能与其它特征,如原灰阶图、阈值图等一起考虑,可作为它们的补充. 如用阈值方法寻找对象,再用此方法精确定位.
使用MATLAB进行Sobel算子的可视化边缘检测,程序如图1所示:
其显示结果如图17-6所示。
采用Sobel对脚印图像的边缘检测可知,采用Sobel算子对图像进行边缘检测,纹理检测效果一般,边缘检测断断续续,不具后续处理。Sobel算子是一阶离散性差分算子, 用来运算图像亮度函数的梯度之近似值。Sobel算子并没有将图像的主体与背景严格地区 分开来.即Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的 视觉生理特征,所以提取的图像轮廓有时并不能令人满意。