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)d\tau$$
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.
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).
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.
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.
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.
Ejemplos y procedimientos
Referencias de software
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.