常见边缘检测算子:Roberts 、Sobel 、Prewitt、Laplacian、Log/Marr、Canny、Kirsch、Nevitia
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模板)
这两个算子是利用多个方向的子模板进行分别计算,最后取幅值最大的那个为最终边缘幅值,方向即最大幅值对应的那个方向。
六、各边缘检测算子对比
参考文献:
1、http://blog.csdn.net/xiaojiegege123456/article/details/7714863
2、http://blog.csdn.net/yanmy2012/article/details/8110316
3、http://blog.csdn.net/langb2014/article/details/45667921
4、https://blog.csdn.net/tigerda/article/details/61192943