SNT Photo Algo

Identification

Infoforall

5 - Algorithmes sur les photos


Nous avons vu qu'une image numérique n'est en fin de compte qu'une suite de nombres.

Nous allons voir aujourd'hui que la photographie que vous voyez sur votre smartphone n'a rien à voir en réalité avec une représentation juste et non modifiée des données captées initialement.

Pour obtenir une image exploitable ou "juste", de nombreux algorithmes sont à l'oeuvre pour permettre de produire une image.

Documents de cours : open document ou pdf

Le contenu de cette page est (plus que) grandement inspirée d'une conférence de Gérard Berry. Vous pouvez retrouver :

1 - Dématriçage

Vous devriez vous souvenir que nous avions réalisé des images numériques en codant nous même les valeurs. Par exemple :

P3 9 7 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 160 210 0 160 0 210 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 170 220 0 170 0 220 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200 255 255 255 150 200 0 150 0 200 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 150 200 0 150 0 200
Visuel provoqué par le fichier image3.ppm
Résultat image P3

Mais même avant traitement, l'appareil ne peut pas possèder de toutes les informations sur tous les pixels puisque les photosites sont munis soit d'un filtre rouge, soit d'un filtre vert, soit d'un filtre bleu.

Chaque photosite ne permet d'obtenir que l'information rouge ou l'information vert ou l'information bleu !

Les appareils photos enregistrent toutes les informations issus des capteurs et de l'appareil (avant modification) dans un fichier nommé raw. L'intérêt de ce fichier est justement d'être brut : les données n'ont pas encore subies de traitement et peuvent donc être traitées de façon différente.

Prenons l'exemple fictif de l'image ci-dessus analysée par un ensemble de 9x7 photosites. Imaginons que les filtres RGB soient répartis de cette façon

Imaginons maintenant qu'on veuille prendre une photo de l'image suivante :

Regardons maintenant l'activation des photosites.

Rappel : le blanc est la somme d'une lumière rouge et verte et bleue.

somme de
et
et

Image vue, photosites activables, photosites activés

Pour les photosites rouges :

255255
255255
255255
255255

Pour les photosites verts :

255255255
255255
255255255255
255255
255255
255255
255255

Pour les photosites bleus :

255255255255255

Si on recompose juste une image avec ces données, on obtient l'image suivante :

255

On ne peut pas dire que ce soit une réelle restitution de l'image initiale. Non ?

Le problème est que chaque zone ne peut ici être que rouge ou verte ou bleu.

Or, chaque pixel possède trois sous-pixels qu'on peut activer de 0 à 255.

Il faut donc falloir tenter de donner une intensité rouge aux pixels qui ne possèdent de filtres rouges, d'intensité verte aux pixels qui ne possèdent pas de filtre vert ...

Cette façon de trouver une valeur cohérente sur les zones que ne contiennent pas de valeurs directement enregistrées sur la couleur se nomme une interpolation.

Il existe différents algorithmes d'interpolation.

En voici un :

Interpolation par valeur moyenne
  • Si la zone ne possède pas de valeur verte, on fixe la valeur verte en faisant la moyenne des 4 valeurs vertes autour.
  • Si la zone est une zone rouge, on trouve la valeur bleue en faisant la moyenne des 4 valeurs bleues alentour.
  • Si la zone est une zone bleue, on trouve la valeur rouge en faisant la moyenne des 4 valeurs rouges alentour.
  • Si la zone est une zone verte,
    • on trouve la valeur de rouge en faisant la moyenne des 2 zones rouges autour
    • on trouve la valeur de bleue en faisant la moyenne des 2 zones bleues autour

Si on reprend notre image, l'application de l'algorithme précédent sur les 3 sous-couches R, G et B donne les intensités RGB suivantes :

  • 1 * 255 // 4 = 63
  • 2 * 255 // 4 = 127
  • 3 * 255 // 4 = 191

Pour l'intensité verte : (image de base puis intensités rouges interpolées)

255255255 25519125519125563
255255 191255255255191127
255255255 25525525525525563
255255 1272551912551271276312763
255255 636312763127127255191255
255255 63255255255191
255255 63127255191255

Pour l'intensité rouge dans les zones liées à un filtre vert, on fait la moyenne des deux photosites rouges autour du photosite vert : (image de base puis intensités rouges interpolées)

255255 127255255255127
255255
255255 127255255255127
255255
255255 127255255255127
255255
255255 127255255255127

Il reste à interpoler l'intensité rouge sur les zones correspondant à un filtre bleu; en prenant la moyenne des 4 photosites rouges autour : (image de base puis intensités rouges interpolées)

255255 127255255255127
127255255255127
255255 127255255255127
127255255255127
255255 127255255255127
127255255255127
255255 127255255255127

Pour l'intensité bleue dans les zones liées à un filtre vert, on regarde s'il y a 2 bleus, 1 bleu ou 0 bleu : (image de base puis intensités bleues interpolées)

127127127127127
255255255255255 255255255255255255255255255
127127127127127

Il reste à interpoler l'intensité bleue sur les zones correspondant à un filtre rouge; en prenant la moyenne des 4 photosites bleus autour : (image de base puis intensités bleues interpolées)

127127127127127127127127127
255255255255255 255255255255255255255255255
127127127127127127127127127

Il reste maintenant à recomposer l'image en utilisant les valeurs des sous-couches R, G et B sur les trois sous-pixels de chaque pixel

127255255255127
127255255255127
127255255255127
127255255255127
127255255255127
127255255255127
127255255255127

25519125519125563
191255255255191127
25525525525525563
1272551912551271276312763
636312763127127255191255
63255255255191
63127255191255

127127127127127127127127127
255255255255255255255255255
127127127127127127127127127

Il reste alors simplement à créer les pixels. Par exemple, le dernier pixel en bas à droite aura une intensité rouge de 127, vert de 255 et bleu de 127.

Voici l'image reconstituée après avoir interpolé les valeurs inconnues

Pour rappel, voici la chose que nous avons voulu photographié

Voici les données RAW obtenues sur les photosites :

255

Et voici l'image qu'on peut tenter de reconstituer sur la base de ces données incomplètes de la réalité avec notre méthode d'interpolation :

Le problème ici est bien entendu qu'on manque de photosites par rapport à la taille de l'image.

Voici un exemple réel de visualisation des données RAW après un dématriçage :

Visuel zoomé sur un contenu raw
Exemple de RAW

Attention, cette opération de dématriçage peut créer des artefacts sur l'image. La qualité de l'algorithme est ici fondamentale pour éviter ceci :

Image contenant un artefact, ici un moiré
Exemple de moiré, artefact visuel lors du dématriçage

2 - Problème de la distortion optique

L'optique de l'appareil photo pose également un problème physique. La plupart du temps, l'objectif est rond par exemple. Comment parvenir à obtenir une image rectangulaire à partir d'une lumière traversant un objectif rond ?

Distorsion caricaturale en barillet
Distorsion caricaturale en barillet - CC BY 2.0 - Josef F. Stuefer de Europe — Flickr

Or, c'est à partir de ces données qu'on va parvenir à obtenir une image affichée rectangulaire. Vous l'imaginez, il a fallu faire des choix et l'image affichée n'est donc pas l'exacte vérité.

Voici une image un peu moins déformée

Distorsion
Distorsion - CC BY 2.0 - Ángel — Edificio Duque de Lerma

Le principe est simple sur le papier : connaissant les défauts de l'optique, créer un algorithme qui va travailler sur les données pour tenter de retrouver les vraies positions et dimensions des "pixels".

Voici une courte explication physique du phénomène :

  • La lumière issue des objets réels passe à travers un diaphragme puis une lentille
  • ou la lumière passe d'abord par une lentille puis par un diaphragme
  • ou on divise la lentille en deux pour placer le diaphragme au milieu
800px-Lens_distorsion.svg.png
Distorsion - CC BY-SA 3.0 - Nicoguaro sur Wikipedia — Travail personnel

On pourrait croire sur le papier que la troisième solution permet de totalement faire disparaitre les défauts de distortion. Il s'agit en réalité d'une bonne solution physique sur le papier mais il est impossible d'avoir réellement une telle symétrie. En réalité, l'image se rapproche mais contient néanmoins des défauts.

Depuis quelques années, la solution est donc de ne pas tenter de corriger le défaut physiquement mais de le corriger informatiquement : connaissant la nature des défauts, on est capable d'obtenir graçe à un algorithme ce que devrait être l'image observée réelle.

Attention : l'image obtenue n'est donc pas l'image réelle mais simplement une représentation obtenue à partir de l'image stockée initialement dont on connait les défauts.

A titre d'exemple, voici une image (déjà bien transformée) avant l'application de l'algorithme visant à contrer les défauts liés aux distortions :

image_deformee.jpg
Avant application de l'algorithme - Photo séminaire 2008 de F. Guichard

Après application du programme de redressement de l'image :

image_transformee.png
Après application de l'algorithme - Photo séminaire 2008 de F. Guichard

Ce n'est pas encore néanmoins ce que percevrait un humain visualisant la scène. On peut encore laisser un algorithme agir, un algorithme gérant la perspective.

image_perspective.jpg
Gestion de la perspective - Photo séminaire 2008 de F. Guichard

En réalité, les photos montrent également les effets d'autres algorithmes agissant en même temps que les deux précédents : vous pourriez constater qu'il y a eu également une gestion du flou, des intensités lumineuses et des couleurs !

En conclusion, on notera bien que les images visualisées ne sont pas le reflet exact de ce que l'appareil a mémorisé. Il y a tout un tas de traitements et corrections algorithmiques avant d'obtenir le résultat visualisé.

Nous n'allons pas faire un inventaire de tous les algorithmes présents lorsqu'on appuie sur l'appareil.

Retenez déjà que l'image visualisée n'est certainement pas le résultat brut de données enregistrées sur l'appareil.

L'appareil possède ainsi des algorithmes qui gèrent la luminosité, la balance des blancs, la netteté ...

D'ailleurs, le bruit ne correspond plus à une prise de vue mais au lancement des algorithmes de restitution.

Chacune de vos photos est ainsi le résultat d'un ensemble de photos sur lequel on a réalisé des moyennes, pour améliorer le rendu et faire disparaitre les tremblements...

3 - Focus Stacking

Voici un exemple de prise de vue impossible à faire physiquement : regardons cette mouche

Photo de mouche
Mouche

Cette image est totalement nette.

Or, c'est impossible avec un appareil photo : soit on a une image nette du premier plan, soit on a une image nette de l'arrière plan.

Alors, comment fait l'appareil photo ?

Il triche !

Le principe du Focus Stacking est de prendre plusieurs photos avec différents réglages de façon à avoir une image nette de l'avant, une image nette de l'arrière et des images intermédiaires.

Ensuite, un algorthime se charge de ne garder que les parties nettes de chaque image.

FOCUS STACKING
Focus stacking
  • La première image permet d'avoir la tête de la mouche de façon nette
  • Le deuxième image permet d'avoir l'arrière des ailes nette
  • La troisième image est l'image affichée sur l'appareil : une composition algorithmique de 8 images en partie floue !

Cette partie vise à vous montrer que l'informatique est beaucoup plus présente que vous ne le pensiez dans la vie de tous les jours.

Ainsi, l'appareil photo numérique n'est pas simplement un appareil photo classique dans lequel les données sont enregistrés sous forme numérique. Non.

Ces appareils sont devenus plus des concentrés d'algorithmie que de technologie.

En quelques dizaines d'années, la photographie numérique a mis à terre la photographie classique. En même temps que les industries qui n'ont pas réussi à prendre le virage du numérique.

Comprendre les enjeux du numérique est donc fondamental au 21e siècle.

Activité publiée le 18 12 2019
Dernière modification : 18 12 2019
Auteur : ows. h.