二阶微分边缘检测算子是利用图像在边缘处的阶跃性导致图像二阶微分在边缘处出现零值这一特性进行边缘检测的,因此,该方法也称过零点算子和拉普拉斯算子。
对图像的二阶微分可以用拉普拉斯算子来表示:
对∇2I的近似为
对于如图4-2所示的3×3范围的像元,中心像元的∇2I可近似为
∇2I=-4a8+(a1+a3+a5+a7)
其二阶微分模板为:
虽然使用二阶微分算子检测边缘的方法简单,但它对噪声十分敏感,同时也没有能够提供边缘的方向信息。为了实现对噪声的抑制,Marr等提出了高斯拉普拉斯(Laplacian of Gaussian,LOG)的方法。
为了减少噪声对边缘的影响,首先要对图像进行低通滤波平滑,LOG方法采用了高斯函数作为低通滤波器。高斯函数为
式中,σ决定了图像的平滑程度。高斯函数生成的滤波模板尺寸一般设定为6σ。使用高斯函数对图像进行滤波并对图像滤波后的结果进行二阶微分运算的过程,可以转换为先对高斯函数进行二阶微分,再利用高斯函数的二阶微分结果对图像进行卷积运算,该过程可用如下数学公式表示。
研究表明,∇2G(x,y)比较符合人的视觉特性。
在实际应用中,可将∇2G(x,y)简化为
在参数设计中,σ取值较大时,趋于平滑图像;σ较小时,则趋于锐化图像。通常应根据图像的特点并通过实验选择合适的σ。∇2G(x,y)用N×N模板算子表示时,一般选择算子尺寸为N=(3~4)W。K的选取应使各阵元为正数且使所有阵元之和为零。
在这里,检测边界就是∇2G(x,y)的过零点,可用以下几种参数表示过零点出灰度变化的速率。
➢过零点处的斜率。
➢二次微分峰-峰差值。
➢二次微分峰-峰间曲线下面积绝对值之和。
边界点方向信息可由梯度算子给出。为减小计算量,在使用中可用高斯差分算子(DOG):(www.xing528.com)
代替∇2G(x,y)。
利用LOG算子进行边缘检测的步骤如下。
1)用拉普拉斯高斯滤波器对图像滤波,得到滤波图像。
2)对得到的图像进行过零检测,具体方法为:假定得到的图像的一阶微分图像的每个像素为P[i,j]、L[i,j],为其拉普拉斯值,P和L的含义如图4-3所示。
接下来按照下面的规则进行判断。
➢如果L[i,j]=0,则看数对(L[i-1,j],L[i+1,j])或(L[i,j-1],L[i,j+1])中是否包含正负号相反的两个数。只要这两个数中有一个包含正负号相反的两个数,则P[i,j]是零穿越。然后看P[i,j]对应的一阶差分值是否大于一定的阈值,如果是,则P[i,j]是边缘点,否则不是。
图4-3 LOG算子过零检测示意图
➢如果L[i,j]不为零,则看4个数对(L[i,j],L[i-1,j]),(L[i,j],L[i+1,j]),(L[i,j],L[i,j-1]),(L[i,j],L[i,j+1])中是否有包含正负号相反的值。如果有,那么在P[i,j]附近有零穿越。看P[i,j]对应的一阶差分值是否大于一定的阈值,如果是,则将P[i,j]作为边缘点。
例程4-2是实现LOG算子检测边缘的MATLAB源程序代码,其运行过程如图4-4a所示,运行结果如图4-4b所示。
例程4-2
图4-4 例程4-2及其运行结果
a)运行过程 b)运行结果
此外,在MATLAB中,也提供了相关的图像边缘检测的函数,其调用格式如下。
其中,I是输入的灰度图像,thresh是阈值。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。