【问题标题】:how is Laplacian filter calculated?拉普拉斯滤波器是如何计算的?
【发布时间】:2019-05-01 20:50:21
【问题描述】:

我并没有真正理解他们是如何得出导数方程的。有人可以详细解释一下,甚至可以提供一个有足够数学解释的地方的链接吗?

拉普拉斯滤波器看起来像

【问题讨论】:

  • 第 2 行是 x 导数,第 2 列是 y 导数,所以当你把它们都加起来时,它就会变成矩阵之上,即f(x+1,y) + f(x-1,y) -2f(x,y) + f(x,y+1) + f(x,y-1) - 2f(x,y)
  • 我知道,我的问题是为什么这毕竟代表拉普拉斯算子的二阶导数?

标签: image-processing filtering convolution derivative laplacian


【解决方案1】:

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

您展示的第二个等式是finite difference approximation 的二阶导数。这是您可以对离散(采样)数据进行的最简单的近似。导数定义为斜率(来自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 ] 

【讨论】:

  • 谢谢。你能提供你从哪里得到方程吗?
  • 所以浏览维基百科页面似乎他们正在采用“二阶中心”,它解释了函数内部的 + 和 - 符号!
  • @wisdom: h 是步长。在离散情况下它设置为 1。导数是关于x。一阶离散导数引入了 1/2 像素右移,因此选择二阶一阶导数左移一个像素,导致二阶导数没有偏移。我将在答案中添加一些文字来解释这一点。
猜你喜欢
  • 2011-02-02
  • 2011-04-28
  • 2019-02-02
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 2023-03-24
相关资源
最近更新 更多