237 views
--- title: INFO911 (4a) Filtres et convolution type: slide slideOptions: transition: slide progress: true slideNumber: true --- # Filtres et convolution ## (Traitement et Analyse d'Image 4a) > [name=Jacques-Olivier Lachaud][time=Novembre 2020][color=#907bf7] > (Les images peuvent être soumises à des droits d'auteur. Elles sont utilisées ici exclusivement dans un but pédagogique) ###### tags: `info911` Retour à [INFO911 (Main) Traitement et analyse d'image](https://codimd.math.cnrs.fr/s/UE_B59gMy) --- # Traitement et analyse d'image ```graphviz digraph summary{ node [color=Red,fontname=Courier,shape=box] //All nodes will this shape and colour edge [color=Blue] //All the lines look like this rankdir="LR" resolution=72 monde [label="Monde réel", shape=ellipse] subgraph cluster_imagerie { label="Vision par ordinateur" acquisition [label="Acquisition", shape=box] traitement [label="Traitement", shape=box] segmentation [label="Segmentation"] reconnaissance [label="Reconnaissance"] {rank=same acquisition traitement} {rank=same segmentation reconnaissance} } utilisation [label="Utilisation", shape=ellipse] //warning [label="Don't go overboard", color=Blue, fontcolor=Red,fontsize=24,style=filled, fillcolor=green,shape=octagon] //end [label="Draw your graph!", shape=box, style=filled, fillcolor=yellow] monde->acquisition [label="Quantités physiques"] acquisition->traitement [label="Image", fontcolor=red] traitement->traitement [label="Image", fontcolor=red] traitement->segmentation [label="Image + ...", fontcolor=blue] segmentation->reconnaissance [label="Régions/Formes + ...", fontcolor=blue] reconnaissance->utilisation [label="Objets identifiés"] //start->warning //next->end [label="Getting Better...", fontcolor=darkblue] } ``` Acquisition: caméra, scanners, lasers, radars, ... Traitement: restauration, rééchantillonage, filtrages, transfert de couleurs, ... Segmentation: seuillage, régions homogènes, détection de contours, ... Reconnaissance: mesures géométriques, descripteur de formes, indexation, ... --- # Filtrage et convolution :::success Construire une théorie et des outils qui modélise toutes les opérations raisonnables sur les images ! Souvent appelé **Traitement du signal** ::: --- # Filtre sur une fonction 1D On appelle ==filtre== une fonction $F$ qui transforme une fonction en une autre. $g_1(x) \longrightarrow \fbox{F } \rightarrow g_2(x)$ On s'intéresse à des filtres particuliers: * **linéaire**, pour tout $\alpha \in \mathbb{R}$ $\forall g : \mathbb{R} \rightarrow \mathbb{R}, \forall x, (F \circ \alpha g)(x) = \alpha ( F \circ g )(x).$ * **invariant par translation**: on note $\tau_t$ la fonction de translation d'une fonction de $t$, $\forall g : \mathbb{R} \rightarrow \mathbb{R}, \forall x, (\tau_t \circ (F \circ g))(x) = ( F \circ ( \tau_t \circ g ) )(x).$ :::info En électronique les filtres transforment une entrée $e(t)$ en une sortie $s(t)$. Invariance par translation => filtre a la même réponse à des temps différents linéaire => augmentation d'amplitude augmente la réponse ::: --- # Convolution de fonctions 1D Soit 2 fonctions $f$ et $g$, leur convolution est une fonction définie par: $$ \forall x, f \ast g (x) := \int_{-\infty}^{\infty} f(t) g(x-t)dt =\int_{-\infty}^{\infty} f(x-t) g(t)dt $$ | ![f-s0_2](https://codimd.math.cnrs.fr/uploads/upload_2e6f3c8b8abcbea3a0162866a5938682.png =x150) |![g](https://codimd.math.cnrs.fr/uploads/upload_1b74666255e5831a0a42c9ba23c29b04.png =x150) | ![fog-s0_2](https://codimd.math.cnrs.fr/uploads/upload_af583bcb3a480211dff1111969596e0e.png =x150) | |:--------:|:--------:|:--------:| | $f$ | $g$ | $f \ast g$ | --- ## Calcul de la convolution Calcul au point $a=1$ (marqué par la barre verte) | ![symf-a-g](https://codimd.math.cnrs.fr/uploads/upload_d4313d8e700cfdb1461bf2f10310f0d3.png =x200) | ![fog](https://codimd.math.cnrs.fr/uploads/upload_6ba973dfc7bad029d9cd1d989b9704c4.png =x200) | | -------- | -------- | | $f$ symétrisé puis translaté de $a$ | $f \ast g (a)$ | --- ## Calcul de la convolution Calcul au point $a=3$ (marqué par la barre verte) | ![](https://codimd.math.cnrs.fr/uploads/upload_1beabb0a94f1506d22ef931597becb49.png =x200) | ![](https://codimd.math.cnrs.fr/uploads/upload_4b1f368e959f313c9bc425546a5b9c6b.png =x200) | | -------- | -------- | | $f$ symétrisé puis translaté de $a$ | $f \ast g (a)$ | --- ## Filtre moyenneur C'est un filtre centré en 0, positif, d'intégrale 1, i.e. $\int f(x)dx=1$ | ![f-s0_2](https://codimd.math.cnrs.fr/uploads/upload_5c063179ca53f6735927620023c1c933.png =x120) | ![g](https://codimd.math.cnrs.fr/uploads/upload_8dbfd10f1a00ae2bd06a900b03fc9b6a.png =x120) | ![fog-s0_2](https://codimd.math.cnrs.fr/uploads/upload_89720ab743db4b6d64ece182ae204aa5.png =x120) | |:------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------:| | ![f-s0_6](https://codimd.math.cnrs.fr/uploads/upload_fd5e69b61b771f19b1a9c319547d2464.png =x120) | ![g](https://codimd.math.cnrs.fr/uploads/upload_8dbfd10f1a00ae2bd06a900b03fc9b6a.png =x120) | ![fog-s0_6](https://codimd.math.cnrs.fr/uploads/upload_581e5d636d0f22a4370e5bd411034178.png =x120) | | $f$ | $g$ | $f \ast g$ | --- ## Filtre moyenneur Que se passe-t-il lorsque $f(x)$ est de plus en plus concentré en 0 ? | ![](https://codimd.math.cnrs.fr/uploads/upload_4f4f04751acf91f2c214403c35a7d784.gif =x150) | ![f-s0_025](https://codimd.math.cnrs.fr/uploads/upload_1903f18293d837c6ec2edc19516390e7.png =x150) | ![g](https://codimd.math.cnrs.fr/uploads/upload_8dbfd10f1a00ae2bd06a900b03fc9b6a.png =x150) | ? | | ------------------------------------------------------------------------------------------ |:--------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------:|:---:| | | $f$ | $g$ | $f \ast g$ | --- ## Filtre moyenneur Que se passe-t-il lorsque $f(x)$ est de plus en plus concentré en 0 ? | ![](https://codimd.math.cnrs.fr/uploads/upload_4f4f04751acf91f2c214403c35a7d784.gif =x150) | ![f-s0_025](https://codimd.math.cnrs.fr/uploads/upload_1903f18293d837c6ec2edc19516390e7.png =x150) | ![g](https://codimd.math.cnrs.fr/uploads/upload_8dbfd10f1a00ae2bd06a900b03fc9b6a.png =x150) | ![](https://codimd.math.cnrs.fr/uploads/upload_d2bd83c36c41cda8bd70611e5afdcd8e.png =x150) | | --- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | On retrouve $g$ ! Leur limite s'appelle ==distribution $\delta_0$ de Dirac== :::success C'est l'identité sur les convolutions: $\forall x, \delta_0 \ast g (x) = g \ast \delta_0(x)= g(x)$ Si on place $\delta$ en $a$, translation: $\forall x, \delta_a \ast g (x) = g \ast \delta_a(x)= g(x-a)$ ::: --- ## Calcul de la convolution avec autres fonctions | ![](https://codimd.math.cnrs.fr/uploads/upload_7fd56faaabeefe270b8df3d9e6125a8a.png =x150) | ![](https://codimd.math.cnrs.fr/uploads/upload_181d505f6b683a59af97184345263d6a.png =x150) | ![](https://codimd.math.cnrs.fr/uploads/upload_4df2172f827161e7d6b88e6a1c9d2cce.png =x150)| | -------- | -------- | -------- | | $f$ | $f$ symétrisé puis translation de $a$ | $f \ast g(a)$ | --- # Propriétés élémentaires des convolutions * bilinéarité: $f \ast( g + \lambda h) = f \ast g + \lambda f \ast h$, pour tout nombre $\lambda$ * associativité: $f \ast (g \ast h) = (f \ast g) \ast h$ * commutativité : $f \ast g = g \ast f$ * élément neutre : $f \ast \delta_0 = \delta_0 \ast f = f$ * translation: $\tau_t \circ f = \delta_t \ast f$ :::info Se montre par simples calculs avec les intégrales. ::: :::warning On rendra tout ça numérique en remplaçant des fonctions $f(x)$ par des tableaux $f[i]$ et les intégrales par des sommes. ::: --- # Propriétés fondamentales des filtres :::success Tout filtre $F$ **linéaire** et **invariant par translation** est une ***convolution*** ! A tout tel $F$, il existe une fonction $h(x)$ appelée sa ==réponse impulsionnelle== telle que $\forall g, F \circ g = h \ast g$ Et on peut trouver $h$ ainsi: $h = F \circ \delta_0$ ::: :::info En électronique, on peut avoir un composant $F$ et on trouve $h$ en envoyant une impulsion très courte et très énergétique ::: :::info En informatique, on choisit juste directement la réponse impulsionnelle $h$. --- # Notes - la bonne théorie est celle des distributions (pas les fonctions) - permet d'avoir des dérivées même sur des fonctions non dérivables ! - très important en électronique, traitement du signal et physique - mais aussi en traitement du son et des images - la convolution est à la base des réseaux de neurones convolutionnels et de l'apprentissage profond.