Convolución

Introducción a la convolución

La convolución es una operación matemática que combina dos funciones para describir la superposición entre ambas. La convolución toma dos funciones, “desliza” una sobre la otra, multiplica los valores de las funciones en todos los puntos de superposición, y suma los productos para crear una nueva función. Este proceso crea una nueva función que representa cómo interactúan las dos funciones originales entre sí.

Formalmente, la convolución es una integral que expresa la cantidad de superposición de una función, \(f(t)\), cuando se desplaza sobre otra función, \(g(t)\), de este modo:

$$(f*g)(t) \approx^{def} \int_{-\infty}^{\infty}f(\tau)g(t-\tau)dr$$

Representación gráfica de la convolución.

Según sea la aplicación de convolución, las funciones se pueden reemplazar con señales, imágenes u otros tipos de datos. La convolución y sus aplicaciones se pueden implementar de varias maneras en MATLAB®.

Convolución en el procesamiento de señales

La convolución se utiliza en el procesamiento digital de señales para estudiar y diseñar sistemas lineales de tiempo invariante (LTI), como los filtros digitales.

La señal de salida de un sistema LTI, \(y[n]\), es la convolución de la señal de entrada \(x[n]\) y la respuesta al impulso \(h[n]\) del sistema.

Diagrama de bloques que representa la convolución de sistemas lineales de tiempo invariante. X(n) se convoluciona con h(n) para producir Y(n).

Convolución para sistemas lineales de tiempo invariante.

En la práctica, el teorema de convolución se utiliza para diseñar filtros en el dominio de la frecuencia. El teorema de convolución establece que la convolución en el dominio del tiempo es igual a la multiplicación en el dominio de la frecuencia.

También puede usar el dominio de la frecuencia para reducir el tiempo de ejecución de las convoluciones. El algoritmo FFT permite transformar las señales al dominio de la frecuencia, multiplicarlas y transformarlas de nuevo al dominio del tiempo. Para señales lo suficientemente grandes, esto puede acelerar sustancialmente la velocidad.

Algunas funciones de MATLAB, tales como conv y filter, permiten realizar convolución y crear filtros desde cero. Signal Processing Toolbox™ y DSP System Toolbox™ cuentan con varias funciones y bloques de Simulink® para implementar directamente filtros digitales tales como designfilt, paso bajo y paso alto.

Convolución en el procesamiento de imágenes

En el procesamiento de imágenes, el filtrado convolucional se puede utilizar para implementar algoritmos tales como detección de bordes, aumento de nitidez y desenfoque de imágenes.

Esto se logra seleccionando el kernel apropiado (matriz de convolución).

Operación de convolución con un kernel de filtro de aumento de nitidez de 3x3.

Image Processing Toolbox™ cuenta con las funciones fspecial e imfilterv, que permiten diseñar filtros para destacar o eliminar determinadas características de las imágenes.

Dos imágenes idénticas de distintas variedades de pimientos y cebollas. La imagen de la izquierda es nítida y la imagen de la derecha está borrosa.

Desenfoque de imagen realizado a través de convolución con un filtro promediador. Vea un ejemplo de MATLAB.

Redes neuronales convolucionales (CNN)

La convolución desempeña un papel clave en las redes neuronales convolucionales (CNN). Las CNN son un tipo de red profunda que se suele utilizar para analizar imágenes. Estas redes evitan extraer características de forma manual, por eso funcionan muy bien en problemas complejos tales como la identificación de imágenes y el análisis de imágenes médicas. Las CNN también son efectivas en el análisis de datos no relacionados con imágenes, como audio, series temporales y datos de señales.

Las redes tienen varias capas; las más frecuentes son las de convolución, ReLU y agrupación.

Diagrama de capas de una CNN. De izquierda a derecha: entrada, capas de aprendizaje de características y capas de clasificación.

Capas de una red neuronal convolucional (CNN).

Las capas de convolución actúan como filtros; cada capa aplica un filtro y extrae características específicas de la imagen. La red aprende estos valores de filtro durante su entrenamiento. Las capas iniciales suelen extraer características elementales de los datos, mientras que las capas más profundas extraen características de alto nivel.

Para obtener más información sobre la convolución y sus aplicaciones en procesamiento de señales, procesamiento de imágenes, Deep Learning y otras áreas, consulte Signal Processing Toolbox, DSP System Toolbox, Image Processing Toolbox y Deep Learning Toolbox™ para su uso con MATLAB.

También puede consultar estos temas: Redes neuronales convolucionales, Detección de bordes, Integral, MATLAB y Simulink para procesamiento de señales, MATLAB para procesamiento de imágenes y visión artificial, MATLAB para Deep Learning

Image Processing Onramp

Aprenda los conceptos básicos sobre las técnicas prácticas de procesamiento de imágenes en MATLAB.

Signal Processing Onramp

Curso interactivo de introducción a métodos prácticos de procesamiento de señales para análisis del espectro.