Léo Coquio
Le but de notre TP est de retrouver une image couleur fidèle grâce à 3 images en ton de gris représentant les 3 canaux de couleurs (rouge, vert, bleu).
Pour effectuer cela nous nous baserons sur la méthode SDC (somme des différences au carré) dans un premier temps. Néanmoins il existe d'autres alternatives,
Nous en étudierons une par la suite.
Nous avons appliqué la méthode SDC sur des images de tailles raisonnablement petites (environ 401 * 340).
Le but est donc de fixer un canal couleur comme référence (dans notre cas il s'agira du canal bleu) et de trouver les translations entre les canaux bleu
et vert (trBV) et les canaux bleu et rouge (trBR).
Pour cela on suppose de la translation entre les images se trouve dans un carré de 31 pixels de côté.
Et pour chaque déplacement soit 31² on calcule SDC.
On récupère la somme la plus petite et effectuons les translations suivant les "coordonnées" de la somme.
Nous avons rencontré quelques problèmes lors de l'implantation de l'algorithme dû aux bordures. Pour palier ce problème nous avons décider de calculer
la SDC seulement sur l'image valide (on ne prend pas en compte les bords de l'image).
Cette deuxième partie est similaire à la première mais avec des images de parties beaucoup plus grandes (3732*3195).
Si l'on décide d'appliquer le code précédent à une image de si grande taille le temps de calcul serait énorme (environ 15 min).
Avec le nouvel algorithme le temps de calcul passe à moins de 30 secondes.
Pour effectuer cette prouesse nous avons appliqué le premier algorithme sur une image 8 fois plus petite pour trouver nos premières translations.
On utilise ces translations afin d'ajuster la précision pour une image4 fois plus petite et ainsi de suite jusqu'à l'image originale.
Il suffit donc de calculer une fois une transformation grossière sur une grosse plage de déplacement [-15;15]² pour ensuite affiner la transformation
dans une plage [-2;2]² à chaque étape.
On obtient donc 4 transformations pour la comparaison de canal bleu au vert (de même entre bleau et rouge).
trBV =[-2 -5] ,trBR =[-5 -11]
trBV =[0 0] ,trBR =[-1 -1]
trBV =[-1 1] ,trBR =[0 0]
trBV =[-2 0] ,trBR =[2 2]
trBV =[0 -5] ,trBR =[3 -13]
trBV =[0 -2] ,trBR =[0 0]
trBV =[0 1] ,trBR =[0 -1]
trBV =[-1 -2] ,trBR =[-1 -2]
trBV =[-4 -7] ,trBR =[-6 -15]
trBV =[0 0] ,trBR =[0 -2]
trBV =[0 -1] ,trBR =[-1 -2]
trBV =[-1 -1] ,trBR =[1 -2]
trBV =[-5 -6] ,trBR =[-7 -14]
trBV =[0 0] ,trBR =[0 0]
trBV =[1 0] ,trBR =[1 1]
trBV =[0 -1] ,trBR =[1 -2]
trBV =[-3 -4] ,trBR =[-5 -6]
trBV =[0 -1] ,trBR =[0 -1]
trBV =[0 1] ,trBR =[1 0]
trBV =[0 2] ,trBR =[2 2]
trBV =[-1 -5] ,trBR =[-4 -11]
trBV =[0 -1] ,trBR =[0 1]
trBV =[1 0] ,trBR =[0 -1]
trBV =[-1 2] ,trBR =[-2 1]
trBV =[-1 -1] ,trBR =[-2 -5]
trBV =[1 -1] ,trBR =[1 -2]
trBV =[-1 -1] ,trBR =[-1 0]
trBV =[0 0] ,trBR =[-1 0]
trBV =[-3 -6] ,trBR =[-3 -13]
trBV =[1 0] ,trBR =[0 -1]
trBV =[0 -2] ,trBR =[1 -1]
trBV =[2 1] ,trBR =[1 0]
trBV =[-3 -7] ,trBR =[-4 -15]
trBV =[0 0] ,trBR =[0 -1]
trBV =[0 0] ,trBR =[-1 0]
trBV =[-2 0] ,trBR =[-2 0]
trBV =[3 -6] ,trBR =[7 -13]
trBV =[-1 0] ,trBR =[-1 0]
trBV =[1 -1] ,trBR =[1 -1]
trBV =[0 -2] ,trBR =[2 -1]
trBV =[0 -1] ,trBR =[-1 -5]
trBV =[-1 -2] ,trBR =[1 0]
trBV =[1 0] ,trBR =[0 -1]
trBV =[-1 -1] ,trBR =[-2 -2]
trBV =[-1 2] ,trBR =[-2 -1]
trBV =[-1 0] ,trBR =[0 0]
trBV =[1 0] ,trBR =[-1 -1]
trBV =[-1 1] ,trBR =[0 0]
trBV =[-2 -3] ,trBR =[-4 -8]
trBV =[-1 1] ,trBR =[0 -2]
trBV =[0 -2] ,trBR =[-1 0]
trBV =[2 0] ,trBR =[-2 1]
trBV =[-6 -8] ,trBR =[-9 -15]
trBV =[1 1] ,trBR =[1 -2]
trBV =[-1 -1] ,trBR =[0 -2]
trBV =[1 -1] ,trBR =[-1 -2]
trBV =[-1 -9] ,trBR =[0 -15]
trBV =[0 1] ,trBR =[-1 -2]
trBV =[-1 0] ,trBR =[0 -2]
trBV =[1 -1] ,trBR =[-2 -2]
trBV =[-1 -6] ,trBR =[-1 -14]
trBV =[0 -1] ,trBR =[0 0]
trBV =[0 0] ,trBR =[0 0]
trBV =[0 -1] ,trBR =[1 -2]
trBV =[2 -7] ,trBR =[3 -15]
trBV =[0 1] ,trBR =[0 -2]
trBV =[0 0] ,trBR =[0 -2]
trBV =[-2 -2] ,trBR =[-2 -2]
Nous avons testé notre algorithmes sur nos propres photos dans différentes conditions:
1. En étant parfaitement immobile.
2. Avec un élément un mouvement dans le décor.
3. Avec de faibles mouvements entre les prises.
4. Avec de gros mouvements entre les prises.
On remarque que le moindre changement dans la scène peut causer des erreurs. Il est donc nécessaire d'avoir une scène et une caméra parfaitement immobiles
L'utilisation de la méthode SDC peut poser problème lorsque l'image présente des couleurs trop saturées créant ainsi de grosses différences entre les canaux.
On peut facilement le comprendre si l'on utilise un drapeau tricolore (France, Italie) car certaines composantes seront quasiment à 0 et d'autres presque
à 255.
Pour palier ce problème j'ai décidé d'utiliser ORB (Oriented FAST and rotated BRIEF) un détecteur de features pour détecter des points clés dans
dans les différents canaux et les appareiller ensemble pour trouver les transformations.
Malheureusement cette méthode présente des problèmes car un seul mauvais appareillage entraine une mauvaise transformation et donc un résultat plus
ou moins mauvais comme on peut le voir sur certaines images.
On remarque pour la deuxième image (train) un léger flou dû à une petite erreur de ORB.
Quant à la dernière image, celle ci est totalement ratée dû à une énorme erreur de data association.
L'hypothèse "Grey World" veut que la moyenne q'une image soit un ton gris situé. Il faut donc déterminer le facteur entre la moyenne de l'image originale
et le ton gris désiré pour ensuite appliquer ce facteur à notre image.
Cela peut avoir comme avantage de atténuer les zones trop claires ou trop sombres,donner un caractère plus neutre à l'image.
Comparaison image originale (à gauche) et image "grey world" (à droite).