拉普拉斯滤波器是如何计算的?

how is Laplacian filter calculated?

我不太明白他们是如何得出导数方程的。有人可以详细解释一下,甚至 link 到某个有足够数学解释的地方吗?

image

拉普拉斯滤波器看起来像

拉普拉斯先生提出了这个等式。这就是拉普拉斯算子的简单定义:二阶导数之和(也可以看成Hessian matrix的迹)

您显示的第二个等式是 finite difference approximation to a second derivative. It is the simplest approximation you can make for discrete (sampled) data. The derivative is defined as the slope (equation from Wikipedia):

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

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)

因为每个导数都引入了半个像素的偏移,所以 2nd 阶导数以 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 ]