Laplace de Gauss
F
∇2( f∗ g) = f∗ ∇2sol
sol∗
F∗ ∇2sol= f∗ ( ∂2∂X2sol+ ∂2∂y2sol) = f∗ ∂2∂X2sol+ f∗ ∂2∂y2sol
Por lo tanto, es posible calcularlo como la suma de dos convoluciones de la imagen de entrada con segundas derivadas del núcleo gaussiano (en 3D, esto es 3 convoluciones, etc.). Esto es interesante porque el núcleo gaussiano es separable, al igual que sus derivados. Es decir,
F( x , y) ∗ g( x , y) = f( x , y) ∗ ( g( x ) ∗ g( y) ) = ( f( x , y) ∗ g( x ) ) ∗ g( y)
lo que significa que en lugar de una convolución 2D, podemos calcular lo mismo usando dos convoluciones 1D. Esto ahorra muchos cálculos. Para el núcleo gaussiano más pequeño que se pueda pensar, tendría 5 muestras a lo largo de cada dimensión. Una convolución 2D requiere 25 multiplicaciones y sumas, dos convoluciones 1D requieren 10. Cuanto más grande sea el núcleo, o cuantas más dimensiones haya en la imagen, más significativos serán estos ahorros computacionales.
Por lo tanto, el LoG se puede calcular utilizando cuatro convoluciones 1D. Sin embargo, el núcleo LoG en sí mismo no es separable.
∇2
La wavelet Ricker o el operador de sombrero mexicano son idénticos al LoG, hasta la escala y la normalización .
Diferencia de gaussianos
F
F∗ g( 1 )- f∗ g( 2 )= f∗ ( g( 1 )- g( 2 ))
Entonces, al igual que con el LoG, el DoG puede verse como una sola convolución 2D no separable o la suma (diferencia en este caso) de dos convoluciones separables. Al verlo de esta manera, parece que no hay una ventaja computacional para usar el DoG sobre el LoG. Sin embargo, el DoG es un filtro de paso de banda sintonizable, el LoG no es sintonizable de la misma manera, y debe verse como el operador derivado que es. El DoG también aparece naturalmente en la configuración del espacio de escala, donde la imagen se filtra a muchas escalas (gaussianos con diferentes sigmas), la diferencia entre escalas posteriores es un DoG.
Hay una aproximación al núcleo DoG que es separable, lo que reduce el costo computacional a la mitad, aunque esa aproximación no es isotrópica, lo que lleva a la dependencia rotacional del filtro.
Una vez mostré (para mí) la equivalencia de LoG y DoG, para un DoG donde la diferencia en sigma entre los dos núcleos gaussianos es infinitamente pequeña (hasta escala). No tengo registros de esto, pero no fue difícil de mostrar.
Otras formas de calcular estos filtros
La respuesta de Laurent menciona el filtrado recursivo, y el OP menciona el cálculo en el dominio de Fourier. Estos conceptos se aplican tanto a LoG como a DoG.
El gaussiano y sus derivados se pueden calcular utilizando un filtro IIR causal y anticausal. Por lo tanto, todas las convoluciones 1D mencionadas anteriormente se pueden aplicar en tiempo constante con la sigma. Tenga en cuenta que esto solo es eficiente para sigmas más grandes.
Del mismo modo, cualquier convolución se puede calcular en el dominio de Fourier, por lo que tanto los núcleos DoG como LoG 2D se pueden transformar en el dominio de Fourier (o más bien se pueden calcular allí) y aplicar por multiplicación.
En conclusión
No hay diferencias significativas en la complejidad computacional de estos dos enfoques. Todavía tengo que encontrar una buena razón para aproximar el LoG usando el DoG.