Convolution

Introduction à la convolution

La convolution est une opération mathématique qui permet de combiner deux fonctions afin de décrire leur chevauchement. Elle consiste à faire « glisser » l'une des fonctions sur l'autre, en multipliant les valeurs des fonctions à chaque point de chevauchement, puis en additionnant les produits pour créer une nouvelle fonction. Ce processus crée une nouvelle fonction qui représente l'interaction entre les deux fonctions initiales.

Formellement, la convolution est une intégrale qui mesure le degré de chevauchement d'une fonction \(f(t)\) lorsqu'elle est déplacée sur une autre fonction \(g(t)\) et s'exprime comme suit :

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

Représentation graphique de la convolution.

Suivant le cas d'application de la convolution, les fonctions peuvent être remplacées par des signaux, des images ou d'autres types de données. La convolution et ses applications peuvent être implémentées de plusieurs manières dans MATLAB®.

La convolution dans le traitement du signal

La convolution est utilisée dans le traitement numérique du signal pour étudier et concevoir des systèmes linéaires invariants (LTI) comme les filtres numériques.

Le signal de sortie, \(y[n]\), dans les systèmes linéaires invariants, est la convolution du signal d'entrée, \(x[n]\), et de la réponse impulsionnelle \(h[n]\) du système.

Une représentation de la convolution sous forme de schéma bloc pour les systèmes linéaires invariants dans le temps. Convolution de X(n) avec h(n) pour produire Y(n).

La convolution pour les systèmes linéaires invariants.

Dans la pratique, le théorème de convolution est utilisé pour concevoir des filtres dans le domaine fréquentiel. Le théorème de convolution établit que la convolution dans le domaine temporel est équivalente à la multiplication dans le domaine fréquentiel.

Il est également possible d'utiliser le domaine fréquentiel pour améliorer la vitesse d'exécution des convolutions. L'algorithme FFT permet de transformer les signaux dans le domaine fréquentiel, de les multiplier, puis de les retransformer dans le domaine temporel. Pour les signaux de taille suffisamment importante, cela peut considérablement accélérer l'exécution.

Les fonctions MATLAB comme conv et filter vous permettent d'effectuer la convolution et de créer des filtres à partir de zéro. Signal Processing Toolbox™ et DSP System Toolbox™ disposent de plusieurs fonctions et blocs Simulink® pour l'implémentation directe de filtres numériques comme designfilt, low-pass et high-pass.

La convolution dans le traitement d'images

Dans le traitement d'images, le filtrage par convolution peut être utilisé pour implémenter des algorithmes comme la détection de contours, l'amélioration de la netteté de l'image et le floutage de l'image.

Pour ce faire, il faut sélectionner le noyau approprié (la matrice de convolution).

Opération de convolution avec un noyau 3x3 pour l'amélioration de la netteté.

Image Processing Toolbox™ dispose de fonctions comme fspecial et imfilterv permettant de concevoir des filtres pour mettre en évidence certaines caractéristiques ou en supprimer d'autres dans les images.

Deux images côte à côte montrant différents poivrons et oignons. L'image de gauche est nette et celle de droite est floue.

Floutage de l'image effectué par convolution avec un filtre moyenneur. Consultez l'exemple MATLAB.

Réseaux de neurones à convolution (CNN)

La convolution joue un rôle clé dans les réseaux de neurones à convolution (CNN). Les CNN sont un type de réseau profond couramment utilisé pour analyser des images. Ils permettent d'éviter l'extraction manuelle de caractéristiques et fonctionnent donc très bien sur des problèmes complexes comme la classification d'images et l'analyse d'images médicales. Les CNN sont également efficaces sur des analyses d'autres types de données comme les données audio, les séries temporelles et les signaux.

Les CNN possèdent plusieurs couches, les plus courantes étant la convolution, l'unité linéaire rectifiée (ReLU) et le pooling.

Schéma des couches de CNN. De gauche à droite : l'entrée, les couches d'apprentissage des caractéristiques et les couches de classification.

Les couches d'un réseau de neurones à convolution (CNN).

Les couches de convolution agissent comme des filtres : chaque couche applique un filtre et extrait des caractéristiques spécifiques de l'image. Ces valeurs de filtre sont apprises par le réseau lors de son apprentissage. Les couches initiales extraient généralement à partir des données des caractéristiques de bas niveau, tandis que les couches plus profondes extraient des caractéristiques de haut niveau.

Pour plus d'informations sur la convolution et ses applications dans le traitement du signal, le traitement d'images, le Deep Learning et d'autres domaines, consultez Signal Processing Toolbox, DSP System Toolbox, Image Processing Toolbox et Deep Learning Toolbox™ pour une utilisation avec MATLAB.

Voir aussi: réseau de neurones à convolution (CNN), détection des contours, intégrale, MATLAB et Simulink pour le traitement du signal, MATLAB pour le traitement d'images et la Computer Vision, MATLAB pour le Deep Learning

Image Processing Onramp

Maîtrisez les concepts fondamentaux des techniques de traitement d'images dans MATLAB.

Signal Processing Onramp

Une introduction interactive aux méthodes de traitement du signal pour l'analyse spectrale.