# Super-résolution

En traitement du signal et en traitement d'images, la super-résolution désigne le processus qui consiste à améliorer la résolution spatiale, c'est-à-dire le niveau de détail, d'une image ou d'un système d'acquisition. Cela regroupe des méthodes matérielles qui visent à contourner les problèmes optiques et autres difficultés physiques rencontrées lors de l'acquisition d'image, ainsi que des techniques algorithmiques qui, à partir d'une ou de plusieurs images déjà capturées, créent une image de meilleure résolution. Le développement d'algorithmes de super-résolution trouve des applications dans de nombreux domaines tels que le traitement d'images naturelles, l'imagerie médicale ou encore les images satellite.

## Méthodes algorithmiques
### Énoncé du problème

Pour les méthodes algorithmiques, le problème de super-résolution est en général formulé comme le fait de recréer une image haute résolution $H$ à partir d'une ou de plusieurs images basse résolution $B_{1},\dots ,B_{n}$. Le terme de résolution doit ici être compris comme le niveau de détails, c'est-à-dire au niveau de hautes fréquences significatives contenues dans l'image.
Le résultat produit par l'algorithme a généralement des dimensions plus grandes que l'image d'entrée, c'est-à-dire une meilleure définition. On notera par la suite $\gamma$ le facteur d'agrandissement, i.e. le rapport entre les tailles des entrée et sortie. Il arrive parfois que des algorithmes de super-résolution soient utilisés pour améliorer la qualité d'une image sans l'agrandir (i.e. $\gamma =1$), mais on parle dans ce cas plutôt de restauration.

### Modélisation

En considérant les images comme des vecteurs, le problème peut être modélisé de la manière suivante. Une observation basse résolution $B_{i}$ de l'image d'origine $I$ est obtenue en appliquant un opérateur modélisant le mouvement (la transformation géométrique) ${\mathcal {M}}_{i}$, un opérateur de floutage ${\mathcal {F}}$, puis via un opérateur de sous-échantillonnage ${\mathcal {E}}$. Un bruit additif ${\mathcal {B}}_{i}$ est également ajouté.
$B_{i}={\mathcal {E}}{\mathcal {F}}{\mathcal {M}}_{i}I+{\mathcal {B_{i}}}$
Selon la modélisation, le mouvement peut possiblement être le même pour toutes les observations. Le bruit est généralement considéré Gaussien et de moyenne nulle.
Dans le cas d'une unique image d'entrée $B$, et d'absence de déformation géométrique, l'expression se simplifie:
$B={\mathcal {E}}{\mathcal {F}}I+{\mathcal {B}}$
Il est généralement considéré qu'une image $H$ produite par un algorithme de super-résolution à partir d'une seule image $B$ doit vérifier la contrainte de reconstruction, i.e. doit donner à nouveau $B$ via le modèle d'observation. On parle de contrainte de reconstruction.
Il est important de noter que $B$ étant de plus petite taille que $I$, l'opérateur d'observation (échantillonnage + floutage) ${\mathcal {E}}{\mathcal {F}}$ contient plus colonnes que de lignes, i.e. le système est sous-déterminé.

### Méthodes de résolution

Différentes approches algorithmiques ont été développées pour résoudre le problème de super-résolution.

#### Interpolation

De simples algorithmes d'interpolation numérique permettent d'obtenir une image de plus grandes dimensions. Ils fournissent toutefois souvent des résultats trop lisses, c'est-à-dire échouent à recréer les hautes fréquences. Ils ont toutefois l'avantage d'être très rapides, et sont parfois utilisés pour traiter les sous-parties d'une image ne contenant que peu de hautes fréquences (par exemple un ciel bleu), en combinaison avec une méthode plus sophistiquée mais plus lente pour ces parties contenant des hautes fréquences (arêtes, coins).

#### Approches fréquentielles

Historiquement, le problème de super-résolution a été formulé au sein de la communauté de traitement du signal et de nombreuses méthodes fréquentielles ou à base d'ondelettes ont été proposées. La plupart des méthodes qui ont été proposées par la suite préfèrent travailler dans le domaine spatial.

#### Projection arrière

Les méthodes de projection arrière utilisent la contrainte de reconstruction comme régulariseur. L'idée est de partir d'une estimation $H_{0}$ de l'image recherchée, de calculer l'observation correspondante $L_{0}$, et de projeter l'erreur $L_{0}-L$ dans l'espace haute résolution pour mettre à jour l'estimation courante. Ces opérations sont répétées jusqu'à atteindre un certain critère de convergence. Le résultat dépend souvent de l'initialisation.

#### Méthodes statistiques

Dans un cadre Bayésien, en supposant le bruit ${\mathcal {B}}$ gaussien et de moyenne nulle, le problème peut être reformulé de la manière suivante:
$H={\underset {H}{\operatorname {arg\,min} }}\|{\mathcal {E}}{\mathcal {F}}H-L\|_{2}^{2}+\lambda R(H)$
où $R$ est un régulariseur et $\lambda$ caractérise le compromis entre les deux termes de l'équation.

#### Méthodes à base de tuiles

À l'inverse des méthodes statistiques qui définissent explicitement une distribution a priori, les méthodes à base de tuiles visent à apprendre les correspondances entre tuiles de basse et haute résolution en utilisant des images d'entraînement. En apprenant un dictionnaire de tuiles de hautes et basses résolutions pour un facteur d'échelle donné, il est possible de calculer la version haute-résolution d'une image d'entrée en la découpant en tuiles, en codant chaque tuile comme une combinaison linéaire de tuiles du dictionnaire de basse résolution, et en utilisant comme version haute-résolution la même combinaison linéaire, mais sur les tuiles correspondantes du dictionnaire haute-résolution. En associant toutes les tuiles obtenues et en ajoutant des contraintes pour éviter les effets de bords, on parvient à obtenir une image de haute résolution.

#### Approches par apprentissage

La méthode par apprentissage a pris de l'intérêt dans la recherche scientifique pour sa capacité à produire des résultats de qualité supérieure en comparaison aux autres méthodes algorithmiques.
L'approche par apprentissage consiste à modéliser une cartographie entre les images basse résolution et les images haute résolution en utilisant les outils d'apprentissage automatique.
Les méthodes de super-résolution par apprentissage se divisent en deux familles : la super-résolution image unique et la super-résolution multi-images.
Dans le premier cas, il s'agit de restaurer une image haute résolution à partir d'une unique image basse résolution. La deuxième famille correspond à l'utilisation de plusieurs images à basse résolution dans le but de restaurer une image haute résolution. L'efficacité des méthodes à image unique les ont rendues plus populaires par rapport aux méthodes multi-images.
Les méthodes d'apprentissage profond de type super-résolution image unique ont démontré une plus grande supériorité dans le domaine.

#### Approches par apprentissage profond

En 2015, Dong et al proposent un réseau de neurones convolutifs appelé SRCNN (pour super resolution convolutional neural network). Ce réseau est composé de trois couches et utilise une erreur moyenne quadratique comme fonction de perte. Cette méthode est devenue l'état de l'art à cette époque et une référence des méthodes par apprentissage profond.
Il existe une structure commune qui régit les méthodes de super-résolution par apprentissage profond recensées dans la publication de Wang et al:
* le cadre de modèle : il s'agit, dans cette étape, de déterminer le positionnement du redimensionnement dans le modèle. L'image basse résolution est redimensionnée pour atteindre la taille de l'image haute résolution.
** "pre-upsampling" : le redimensionnement est réalisé en amont du modèle ;
** "post-upsampling" : le redimensionnement est partie intégrante du réseau et il est situé dans les dernières couches du réseau convolutif ;
** "progressive-upsampling".
* la méthode de sur-échantillonnage : le redimensionnement est réalisé soit par une méthode d'interpolation (bilinéaire, bicubique, plus proches voisins, ...), soit par une méthode d'apprentissage (convolution transposée, couche de sous-pixels, ...)
* le design du réseau : résiduel, récursif, dense, etc.
* stratégie d'apprentissage : détermination de la fonction de perte
* autre amélioration : augmentation de données, apprentissage multi-tâche, etc.