Visión general¶
Se proporcionan dos funciones de convolución. Se importan como:
>>> from astropy.convolution import convolve, convolve_fft
y se utilizan como:
>>> result = convolve(image, kernel) >>> result = convolve_fft(image, kernel)
convolve()
se implementa como algoritmo de convolución directa, mientras queconvolve_fft()
utiliza una transformación rápida de Fourier (FFT). Por lo tanto, el primero es mejor para los granos pequeños, mientras que el segundo es mucho más eficiente para los granos más grandes.
Las imágenes y núcleos de entrada deben ser listas o numpy
arrays con 1, 2 o 3 dimensiones (y el número de dimensiones debe ser el mismo para la imagen y el núcleo). El resultado es un array numpy
con las mismas dimensiones que la imagen de entrada. La convolución siempre se hace como punto flotante.
La función convolve()
toma un argumento opcional boundary=
que describe cómo realizar la convolución en el borde de la matriz. Los valores de boundary
pueden ser:
-
None
: establezca los valores de resultado en cero donde el núcleo se extiende más allá del borde de la matriz (predeterminado). -
'fill'
: establezca valores fuera del límite de la matriz en una constante. Si se especifica esta opción, la constante se debe especificar usando el argumentofill_value=
, que por defecto es cero. -
'wrap'
: supongamos que los límites son periódicos. -
'extend'
: establezca valores fuera de la matriz en el valor de matriz más cercano.
Por defecto, el núcleo no está normalizado. Para normalizar antes de convolución,uso:
>>> result = convolve(image, kernel, normalize_kernel=True)