Panoramica¶
Vengono fornite due funzioni di convoluzione. Sono importati come:
>>> from astropy.convolution import convolve, convolve_fft
e sono entrambi usati come:
>>> result = convolve(image, kernel) >>> result = convolve_fft(image, kernel)
convolve()
è implementato come algoritmo di convoluzione diretta, mentre convolve_fft()
utilizza un FourierTransform veloce (FFT). Quindi, il primo è migliore per i kernel piccoli, mentre il secondoè molto più efficiente per i kernel più grandi.
Le immagini e i kernel di input dovrebbero essere elenchi o numpy
array con 1,2 o 3 dimensioni (e il numero di dimensioni dovrebbe essere lo stesso per theimage e kernel). Il risultato è un array numpy
con le stesse dimensioni dell’immagine di input. La convoluzione viene sempre eseguita in virgola mobile.
La funzione convolve()
accetta un argomento opzionale boundary=
che descrive come eseguire la convoluzione sul bordo dell’array. I valori per boundary
possono essere:
-
None
: imposta i valori dei risultati a zero dove il kernel si estende oltre il bordo dell’array (predefinito). -
'fill'
: impostare i valori al di fuori del limite dell’array su una costante. Se viene specificata thisoption, la costante deve essere specificata utilizzando l’argomentofill_value=
, che per impostazione predefinita è zero. -
'wrap'
: supponiamo che i confini siano periodici. -
'extend'
: impostare i valori esterni all’array sul valore dell’array più vicino.
Per impostazione predefinita, il kernel non è normalizzato. Per normalizzarlo prima della convoluzione, utilizzare:
>>> result = convolve(image, kernel, normalize_kernel=True)