拉普拉斯算子如何计算?

时间:2018-11-29 17:57:13

标签: image-processing filtering convolution derivative

我不太了解他们是如何得出导数方程的。有人可以详细解释一下,或者甚至提供一个到处都有足够数学解释的链接吗?

image

拉普拉斯滤镜看起来像

enter image description here

1 个答案:

答案 0 :(得分:1)

拉普拉斯先生想出了这个等式。这只是Laplace运算符的定义:二阶导数之和(您也可以将其视为Hessian matrix的踪迹)。

您显示的第二个方程是二阶导数的finite difference approximation。您可以对离散(采样)数据进行最简单的近似。导数定义为斜率(与Wikipedia相等):

Equation of derivative

在离散网格中,最小的h为1。因此,导数为f(x+1)-f(x)。由于此导数使用x处的像素和右侧的像素,因此引入了半像素位移(即,您计算了这两个像素之间的斜率)。要获得2 nd 阶导数,只需根据导数的结果计算导数:

f'(x) = f(x+1) - f(x)
f'(x+1) = f(x+2) - f(x+1)

f"(x) = f'(x+1) - f'(x)
      = f(x+2) - f(x+1) - f(x+1) + f(x)
      = f(x+2) - 2*f(x+1) + f(x)

因为每个导数都导致半个像素的偏移,所以2 nd 阶导数最终以一个1个像素的偏移结束。因此我们可以将输出左移一个像素,从而不会产生偏差。这将导致序列f(x+1)-2*f(x)+f(x-1)

计算此二阶导数与使用过滤器[1,-2,1]卷积相同。

应用此过滤器及其转置并添加结果,等同于与内核进行卷积

[ 0, 1, 0       [ 0, 0, 0       [ 0, 1, 0
  1,-4, 1    =    1,-2, 1    +    0,-2, 0
  0, 1, 0 ]       0, 0, 0 ]       0, 1, 0 ]