Scipy Convole

Scipy Convole
El concepto básico de convolver es combinar dos señales utilizando alguna función matemática para hacer la tercera señal. Es la técnica de procesamiento de señal digital más comúnmente utilizada. La convolución de dos señales se considera como la integral de una señal de una señal en otra señal. Esto se hace mientras se multiplica con el producto escalar en cada punto de vectores que se superponen.

El mismo concepto de convolver se usa en Python. La matriz se considera una señal que se usa en la función de convolencia Scipy para realizar una convolución en múltiples matrices unidimensionales. El scipy convole es una matriz n-dimensional. Por lo general, son dos o más secuencias 1-D. En este artículo, discutiremos la función de complemento Scipy en detalle e intentaremos aprender el uso de la función de convolir con la ayuda de ejemplos.

Scipy Convolucionar el uso y su sintaxis

El scipy convol se utiliza para convolucionar dos matrices n-dimensionales. Aquí está la sintaxis de la función Scipy Convolve:

# Scipy.señal.convolve (inp1, inp2, mode = 'full', método = 'auto')

'INP1' es la primera matriz de entrada, 'INP2' es la segunda matriz de entrada, y debe tener el mismo número de dimensiones que el parámetro 'INP1'. El parámetro 'Modo' es un parámetro de cadena que determina el tamaño de salida; se define por tres opciones, iguales, válidas o llenas. Es un parámetro opcional.

El modo 'completo' indica que se debe proporcionar la convolución lineal discreta completa de las entradas, y es el modo predeterminado; Si no se proporciona ningún modo, el modo 'completo' se considera predeterminado. El modo 'mismo' devuelve la salida como el tamaño como el parámetro 'INP1', centrado de acuerdo con la salida 'completa'.

El último modo, también un modo 'válido', devuelve elementos que no se basan únicamente en la reducción de cero. El parámetro 'Método' es otro parámetro opcional. Es un parámetro de cadena que indica qué método se utilizará para la convolución. También toma uno de los tres argumentos; auto, FFT y directo. El 'FFT' es la transformación de Fourier, utilizada para realizar la convolución llamando a la función FFTConvolve incorporada.

El argumento 'directo' representa la convolución directa, que es la definición básica de convolución. Y finalmente, se proporciona el argumento 'auto' donde se requiere la selección automática del argumento 'directo' o 'fft', lo que sea más rápido. El argumento 'Auto' es el valor predeterminado; Si no se proporciona nada, 'Auto' se considera el argumento predeterminado.

La salida de la función de convolve será el subconjunto de convolución lineal discreta de INP1 con INP2. Veamos los ejemplos a continuación para comprender cómo implementar scipy convolir.

Ejemplo 1:

Este es el primer ejemplo de este artículo que ayudará a limpiar los pensamientos sobre la información teórica que hemos mencionado anteriormente.

En este ejemplo, trazaremos un pulso suave en forma cuadrada con una ventana Hann. El código del programa utiliza una matriz NP (indicada como Sig_one) para trazar la curva y la señal.convolve () se usa para completar las señales.

Vea el código completo adjunto a continuación. Aquí, primero hemos importado las bibliotecas requeridas y hemos declarado la matriz. Después de llamar a la función de convolir, hemos trazado el pulso. En el resto del código, puede ver que hemos establecido los márgenes y mostramos la respuesta de impulso original y filtrada y la señal filtrada en el gráfico.

de la señal de importación escasa
importar numpy como p
Importar matplotlib.Pyplot como MTP
Sig_one = P.Repita ([1., 0., 1.], 100)
Window_one = señal.Windows.Hann (65)
filtred_res = señal.convole (sig_one, window_one, mode = 'mismo') / sum (window_one)
figura_one, (axis_orig, axis_win, axis_filt) = mtp.subtramas (3, 1, sharex = true)
axis_orig.Gráfico (Sig_one)
axis_orig.set_title ('Aquí está el pulso original')
axis_orig.márgenes (0, 0.1)
axis_win.tram (window_one)
axis_win.set_title ('Aquí está la respuesta del impulso del filtro')
axis_win.márgenes (0, 0.1)
axis_filt.TRAM (Filtered_Res)
axis_filt.set_title ('Aquí está la señal filtrada')
axis_filt.márgenes (0, 0.1)
figura_one.TRIT_LAYOUT ()
figura_one.espectáculo()

Tenga en cuenta que el código se ejecuta en la colaboración de Google. Google Collaboratory es una herramienta de código abierto utilizada para implementar códigos de Python. Es una herramienta gratuita y fácilmente accesible a través de Google o cualquier otro navegador.

Después de ejecutar el código, podrá ver las olas. Consulte la imagen adjunta a continuación.

Ejemplo 2:

Este es el segundo ejemplo de este artículo y aquí utilizaremos el método NDIMAGE para demostrar la funcionalidad de la función de convolir.

En este ejemplo, el parámetro 'Modo' de NDIMAGE toma uno de los cinco argumentos; envolver, espejo, más cercano, constante y reflejar. El argumento 'reflejar' representa la media muestra simétrica extendida al recordar el borde. La 'constante' se usa para representar todos los valores que están más allá del borde pero con el mismo valor constante.

El 'más cercano' representa un valor específico que se extiende replicando el píxel final. El 'espejo' representa el centro del último píxel, y el argumento de 'envoltura' representa la envoltura al borde opuesto. Vea el código que se da a continuación:

de scipy import ndimage
importar numpy como p
One_arr = P.Array ([[1, 0, 2],
[1, 1, 0],
[1, 0, 0]])
Two_arr = P.Array ([[0, 1, 0],
[1, 1, 0],
[0, 1, 0],
[0, 1, 1],
[0, 1, 0]])
Imprimir (ndimage.convolve (One_arr, two_arr, mode = 'más cercano'))

Aquí está la salida del código anterior, que es la matriz enrevesada como puede ver.

Ejemplo 3:

El siguiente ejemplo demostrará una función de convolencia 2D. Las dos matrices bidimensionales se convolucionan utilizando la función Convolve2D. El Convolve2D usa dos parámetros adicionales adicionales 'Fillvalue' y 'Boneyary'.

El parámetro 'límite' toma uno de los tres argumentos; llenar, envolver y symm. El argumento 'Fill' es el valor predeterminado y las matrices de entrada de PAD con FillValue. El argumento de 'envoltura' representa las condiciones de contorno circular. El argumento 'symm' representa las condiciones de contorno simétrica.

El 'FillValue' está representado por un valor escalar que se utiliza para llenar la matriz de entrada de la almohadilla, y su valor predeterminado es 0. En el código adjunto, calcularemos el gradiente de una imagen.

de la señal de importación escasa
de Scipy Import Misc
importar numpy como p
Importar matplotlib.Pyplot como MTB
Ascent_one = Misc.ascenso()
scharr_one = P.Array ([[-3-3J, 0-10J, +3 -3J],
[-6 +0j, 1+ 0j, +6 +0j],
[-2 +2J, 0 +6J, +3 +2J]])
grad_one = señal.convolve2d (ascent_one, scharr_one, boundary = 'symm', mode = 'mismo')
Fig_one, (axis_orig, axis_mag, axis_ang) = mtb.subtramas (3, 1, figsize = (7, 16))
axis_orig.imshow (ascent_one, cmap = 'gris')
axis_orig.set_title ('original')
axis_orig.set_axis_off ()
axis_mag.Imshow (P.Absolute (Grad_one), CMAP = 'Gray')
axis_mag.set_title ('resultado de magnitud de gradiente')
axis_mag.set_axis_off ()
axis_ang.Imshow (P.Angle (Grad_one), CMAP = 'HSV')
axis_ang.set_title ('Resultado de orientación de gradiente')
axis_ang.set_axis_off ()
Fig_one.espectáculo()

Aquí está la salida del código dado anteriormente:

Conclusión

En este artículo, hemos aprendido la función Scipy Convole con la ayuda de ejemplos. Primero, hemos discutido el concepto básico de la función de convolir, y luego hemos aprendido sobre la sintaxis de la función de convolir, y luego hemos examinado tres ejemplos diferentes para ver el uso de la función de convolencia de Scipy de una manera muy diferente.