转载:https://blog.csdn.net/tigerda/article/details/61192943

     常见边缘检测算子:Roberts 、Sobel 、Prewitt、Laplacian、Log/Marr、Canny、Kirsch、Nevitia

       一阶微分算子:Roberts 、Sobel 、Prewitt

        Robert算子是第一个边缘检测算子,提出者Lawrence Roberts in 1963。

        Sobel边缘算子,当年作者并没有公开发表过论文,仅仅是在一次博士生课题讨论会(1968)上提出("A 3x3 Isotropic Gradient Operator for Image Processing"),后在1973年出版的一本专著("Pattern Classification and Scene Analysis")的脚注里作为注释出现和公开的。提出者Irwin Sobel。

        Prewitt算子来自J.M.S. Prewitt "Object Enhancement and Extraction" in "Picture processing and Psychopictorics", Academic Press,1970。

        我们看这三种边缘检测算子模板及写成差分的形式

边缘检测算子总结边缘检测算子总结

边缘检测算子总结

 Roberts算子

边缘检测算子总结边缘检测算子总结

边缘检测算子总结

Sobel算子

边缘检测算子总结边缘检测算子总结

边缘检测算子总结

Prewitt算子

图 4 一阶微分算子

       如何计算边缘幅值与方向?以Sobel算子为例。3*3 Sobel两个方向的算子在图像上滑动,模板与其覆盖的图像3*3区域9个像素进行卷积,求和后得到此方向的边缘检测幅值。

边缘检测算子总结

边缘检测算子总结边缘检测算子总结

边缘检测算子总结

边缘检测算子总结

f(x,y)为图像,Gx和Gy分别是水平和竖直方向算子的卷积结果,G则是最终得到的边缘幅值,θ值则是边缘方向。当然G的计算有时简化为

边缘检测算子总结  边缘检测算子总结

或者

 边缘检测算子总结

求幅值时是有多种选择的,一般根据具体应用选择用水平还是竖直或是两个方向同时检测。

        另外,需要说明的是,Sobel算子还有一种变种,是各向同性Sobel算子,其模板为

边缘检测算子总结

边缘检测算子总结

图 5 各向同性Sobel算子

Sobel各向同性算子的权值比普通Sobel算子的权值更准确。为什么?模板的权值是离中心位置越远则权值(看绝对值)影响越小,如上图,把模板看成是9个小正方形,小正方形边长为1,则虚线三角形的斜边长为边缘检测算子总结边缘检测算子总结,下直角边长为1,则如果(0,0)位置权值绝对值大小为1,则按照距离关系,位置(1,0)处的权值绝对值大小应该为边缘检测算子总结边缘检测算子总结才是准确的。

       二阶微分算子:Laplacian、Log/Marr

        拉普拉斯算子来自拉普拉斯变换,而Log算子又称Marr算子,由David Courtnay Marr和Ellen Hildreth(1980)共同提出,计算神经学创始人Marr在1980年正式发表论文时,因换白血病早逝,后面设立Marr奖以此纪念其贡献,现在每两年的ICCV(与ECCV,CVPR并称计算机视觉三大顶级会议)会评出一个Marr奖。这两种算子模板如下:

边缘检测算子总结边缘检测算子总结

Laplacian算子(两种模板)

边缘检测算子总结边缘检测算子总结

Log算子

图 6 二阶微分算子

 

拉普拉斯算子数学公式是

边缘检测算子总结

写成差分形式为

边缘检测算子总结边缘检测算子总结

        Log边缘检测则是先进行高斯滤波再进行拉普拉斯算子检测,然后找过零点来确定边缘位置,很多时候我们只是知道Log 5*5模板如上图所示,但是具体是怎么得到的?下面进行推导。

二维高斯公式是

边缘检测算子总结

按拉普拉斯算子公式求x,y方向的二阶偏导后为边缘检测算子总结

边缘检测算子总结

这里x,y不能看成模板位置,应看成是模板其他位置到中心位置的距离。那么写成

边缘检测算子总结边缘检测算子总结

这里x0,y0就是模板中心位置,x,y是模板其他位置,对于5*5模板,则x0=2,y0 = 2,那对于模板中(0,0)位置的权值,即把x= 0,y= 0,x0= 2,y0 = 2带入上式,另边缘检测算子总结边缘检测算子总结= 1,得到边缘检测算子总结约等于0.0175,这样得到

边缘检测算子总结边缘检测算子总结

通过取整变符号,且模板总和为0,得到图6所示的模板。

        另外,这里模板大小是如何取的?通常高斯分布中,在(-3边缘检测算子总结边缘检测算子总结,3边缘检测算子总结边缘检测算子总结)的范围内就覆盖了绝大部分区域,所以模板大小一般取dim = 1 + 6边缘检测算子总结边缘检测算子总结(在SIFT特征中,其中的高斯模糊也是这样取),dim如果为小数,则取不小于dim的最小整数,当然实际使用时没有这么严格,如上面我们取边缘检测算子总结边缘检测算子总结=1时,模板大小取5*5。那同一个尺寸的模板中的权值调整就是边缘检测算子总结边缘检测算子总结的变化得到的,边缘检测算子总结变化到一定程度,模板尺寸大小改变(这个是个人理解,欢迎拍砖边缘检测算子总结)。

 

       非微分边缘检测算子:Canny

       Canny边缘检测大家应该很熟悉,这里列出步骤,并给出一个详细介绍的链接Canny算子

    1.      彩色图像转换为灰度图像
    2.      对图像进行高斯模糊
    3.      计算图像梯度,根据梯度计算图像边缘幅值与角度(这里其实用到了微分边缘检测算子来计算梯度幅值方向)
    4.      非最大信号压制处理(边缘细化)
    5.      双阈值边缘连接处理
    6.      二值化图像输出结果

   方向算子Kirsch(8个3*3模板),Nevitia (12个5*5模板)

        这两个算子是利用多个方向的子模板进行分别计算,最后取幅值最大的那个为最终边缘幅值,方向即最大幅值对应的那个方向

 

五、各边缘检测算子对比

边缘检测算子总结

边缘检测算子总结边缘检测算子总结

相关文章: