图像边缘检测——⼆阶微分算⼦(上)Laplace算⼦、LOG算⼦、DOG算⼦(Matlab实现)
版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。 blog.csdn/u014485485/article/details/78364573
如果图像灰度变化剧烈,进⾏⼀阶微分则会形成⼀个局部的极值,由数学上的知识,对图像进⾏⼆阶微分则会形成⼀个过零点,并且在零点两边产⽣⼀个波峰和波⾕,我们要设定⼀个阈值,检测到这个过零点,如下图所⽰:
带来了两个好处:
1. ⼆阶微分关⼼的是图像灰度的突变⽽不强调灰度缓慢变化的区域,对边缘的定位能⼒更强。
2. Laplace算⼦是各项同性的,即具有旋转不变性(后⾯会证明),在⼀阶微分⾥,我们是⽤|dx|+|dy|来近似⼀个点的梯度的,当图像旋转⼀个⾓度时,这个值就变化了,但对于Laplace算⼦来说不管图像怎么旋转,得到的响应是⼀样的。
⼀个注意点:
matlab求导我们检测的必须是“过零点“,⽽不单单是零点,也就是要保证这个被选中的点⼀定要是局部极值点。⽐如下⾯这个例⼦,上⾯的曲线是图像空间,虚线处的点并不是图像的局部极值点,但求⼆阶导的时候确实是零点。再⽐如图像灰度的平坦区域,不管是⼀阶导还是⼆阶导都是0,它们显然不是我们要的点:
过零点的确定:
以p为中⼼的⼀个3*3领域,p点为过零点意味着⾄少有两个相对的领域像素的符号不同。有四种要检测的情况:左/右、上/下,和两个对⾓。如果g(x,y)的值与⼀个阈值⽐较(⼀种通⽤的⽅法),那么不仅要求相对领域的符号不同,数值差的绝对值要超过这个阈值,这时p称为⼀个过零点像素。
Laplace算⼦
Laplace算⼦是梯度的散度 :
图像是离散的⼆维矩阵,⽤差分近似微分:
所以,
模板表⽰为:                                              其他常⽤的模板还有:
Laplace算⼦的旋转不变性证明如下:
两个缺点:
1.没有了边缘的⽅向信息;
2.双倍加强了噪声的影响。
在Matlab中的测试结果:
原图:
原图在不同阈值下的边缘检测效果:
加了椒盐噪声之后:
加了⾼斯噪声之后:
代码: