高斯拉普拉斯
图像的高斯拉普拉斯 (LoG)F可以写成
∇2(f∗g)=f∗∇2g
和g高斯核和∗卷积。即高斯核平滑后的图像的拉普拉斯与高斯核的拉普拉斯卷积后的图像相同。在 2D 情况下,该卷积可以进一步扩展为
f∗∇2g=f∗(∂2∂x2g+∂2∂y2g)=f∗∂2∂x2g+f∗∂2∂y2g
因此,可以将其计算为输入图像的两个卷积与高斯核的二阶导数的相加(在 3D 中,这是 3 个卷积等)。这很有趣,因为高斯核是可分离的,它的导数也是如此。那是,
f(x,y)∗g(x,y)=f(x,y)∗(g(x)∗g(y))=(f(x,y)∗g(x))∗g(y)
这意味着我们可以使用两个 1D 卷积来计算相同的东西,而不是 2D 卷积。这节省了大量的计算。对于最小的高斯核,每个维度都有 5 个样本。一个 2D 卷积需要 25 次乘法和加法,两个 1D 卷积需要 10 次。内核越大,或者图像中的维度越多,这些计算节省就越显着。
因此,可以使用四个 1D 卷积计算 LoG。但是,Log 内核本身是不可分离的。
有一个近似值,其中图像首先与高斯核卷积,然后∇2使用有限差分实现,导致 3x3 内核,中间为 -4,四个边缘邻居为 1。
Ricker 小波或墨西哥帽子算子与 LoG 相同,直至缩放和归一化。
高斯差
图像的高斯差(DoG)f可以写成
f∗g(1)−f∗g(2)=f∗(g(1)−g(2))
因此,就像 LoG 一样,DoG 可以被视为单个不可分离的 2D 卷积或两个可分离卷积的总和(在这种情况下为差异)。这样看来,使用 DoG 比使用 LoG 似乎没有计算优势。然而,DoG 是一个可调带通滤波器,LoG 不能以同样的方式可调,应将其视为导数算子。DoG 也自然地出现在 scale-space 设置中,其中图像在许多尺度(具有不同 sigma 的高斯)上过滤,后续尺度之间的差异是一个 DoG。
DoG 内核有一个近似值是可分离的,将计算成本降低了一半,尽管该近似值不是各向同性的,导致滤波器的旋转依赖性。
我曾经(为我自己)展示了 LoG 和 DoG 的等价性,对于其中两个高斯内核之间的 sigma 差异非常小(直到缩放)的 DoG。我没有这方面的记录,但不难证明。
计算这些过滤器的其他形式
Laurent 的回答提到了递归过滤,而 OP 提到了傅里叶域中的计算。这些概念适用于 LoG 和 DoG。
可以使用因果和反因果 IIR 滤波器计算高斯及其导数。所以上面提到的所有 1D 卷积都可以在 sigma 的恒定时间内应用。请注意,这仅对较大的 sigma 有效。
同样,任何卷积都可以在傅里叶域中计算,因此 DoG 和 LoG 2D 内核都可以转换到傅里叶域(或者更确切地说是在那里计算)并通过乘法应用。
综上所述
这两种方法的计算复杂度没有显着差异。我还没有找到使用 DoG 来近似 LoG 的充分理由。