TIFO - Codage, partie 1: couleurs et representations
Codage des couleurs
Le modele RGB/RVB
Espace RGB/RVB (Red-Green-Blue)
- One code une couleur par un triplet representant la quantite de rouge, de vert et bleu de la couleur
- Une couleur est un point du cube:
- L'origine du repere : le noir
- L'opposee: le blanc
- Chaque axe code une couleur primaire (R,G,B)
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Decomposition d'une image suivant les 3 axes:
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Sur une image reelle:
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Le modele RGB
- Modele base sur la perception humaine (couleurs primaires en synthese additive)
- Pas toujours intuitif pour selectionner une couleur
- Tres repandu
Le model HLS
L'espace HLS (Hue, Lightness, Saturation)
On code une couleur par 3 composantes: teinte, luminance et saturation. L'espace ressemble a 2 cones que l'on a joint par leurs bases. Une couleur est un point de cet espace
- Teinte
- C'est l'angle sur le disque
- rouge
- jaune
- vert
- cyan
- bleu
- magenta
- Luminance
- La luminance est la hauteur dans le cone
- Saturation
- La saturation ("purete de la couleur") est la distance au centre du disque
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Decomposition suivant les 3 axes:
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Sur une image reelle:
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
La saturation
J'ai un p'tit singe ici:
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- Modele intuitif pour "choisir une couleur".
L'utilisation de la teinte est interessante toutefois, sur des saturations faibles, la teinte n'a plus vraiment de signification
- Beaucoup de variantes (HSV…)
Le modele YMCA CMY
L'espace CMY (couleurs primaires en syntese soustractive)
- Mieux adpate pour les peripheriques d'impression
- Beaucoup de variantes
En image on l'utilise quasiment jamais.
Codage d'un niveau de gris
Comment coder un niveau de gris ?
- Une seule composante qui code la luminance
- Une convention possible:
- Composante nulle pas de lumiere (noir)
- Composante au maximum maximum de lumiere (blanc)
- Un niveau de gris quelconque = un point de l'axe:
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Autres espaces
Il existe d'autres espaces de representation
- YIQ
- NTSC 1953
- Facilite la transmission et la compatibilite de l'image tant pour un ecran couleur que un ecran noir et blanc
- Y donne la luminance
- Lab
- La distance entre 2 couleurs dans cet espace est representative de la difference percue visuellement entre les 2 couleurs
- XYZ
- YCbCr
- …
Conversions entre espaces de couleurs
RGB HLS
- H L S
- Teinte
- Estime en fonction de 2 bornes min et max
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- Pour L
- Saturation
- Joue sur l'ecartement min max sur la teinte
- Si S , min max L
- Donc max ( + S)L et min ( - S)L
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- Pour L
RGB YIQ
Le passage de l'un a l'autre est simple:
RGB CMY
- Les couleurs primaires de l'espaces CMY sont les couleurs complementaires des couleurs primaires de l'espace RGB
- La conversion est donc simple:
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
RGB niveaux de gris
- Idee simple et intuitive:
- Amelioration
- Pourquoi la premiere idee est-elle fausse ?
- Car nos yeux percoivent certaines couleurs mieux que d'autres (cf. la seconde formule)
- Peut-on faire l'inverse (passer du niveau de gris a la couleur ?)
- Non bien-sur: projection, on passe d'un image 3D a 2D, on a perdu de l'info
- Avec des regles on peut se donner une colorisation de l'espace (teinte sepia, vert comme une camera de surveillance, etc.) mais on ne retrouvera pas la couleur d'origine
RGB noir et blanc
- Est-il possible de passer a une image noir et blanc ?
- Utile pour traiter les images "trop" riches
- On binarise l'image
- Qu'est-ce qu'on veut extraire de l'image ?
- Y a t il un interet a passer a une image en noir et blanc ?
Codage des couleurs
Il existe differents espaces pour la representation des couleurs
- Il faut etre capable de choisir le bon, en fonction de l'objectif recherche
- Etre capable, dans la mesure du possible de passer de l'un a l'autre
Codage de l'image
Representation d'une image couleur
Codage d'une image par une matrice:
- L'image est une fonction discrete 2D, elle est souvent codee par une matric
- Pour une image codee en RGB, un point de l'image = un triplet (r,g,b) de valeurs dans la matrics
- Un point de l'image = un pixel. Que signifie pixel ?

Representation d'une image en niveaux de gris
Codage d'une image par une matrice:
- L'image est une fonction discrete 2D, elle est souvent codee par une matrice
- Pour une image codee en niveaux de gris, un point de l'image = une valeur dans la matrice codant la luminance

Acces aux pixels
- Comment coder cette image en memoire ?
- Comment acceder a un point de cette image ?
- Comment acceder a ses voisins ?
- Comment parcourir l'image ?

Resolution/Echantillonage
- Discretisation spatiale (resolution)

- Echantillonage (amplitude)

Nombre de couleurs - Echantillonnage
Codage par palette (couleurs indexees)
Bit(s) par pixel |
Couleurs |
1 bpp |
??? |
2 bpp |
??? |
4 bpp |
??? |
6 bpp |
??? |
8 bpp |
??? |
Codage sans palette
Bits par pixel |
Couleurs |
Bits par canaux |
16 bpp |
? |
? |
24 bpp |
? |
? |
32 bpp |
? |
? |
Representation de l'image
Un moyen classique de representer une image est d'utiliser une matrice. Y a t il d'autres approches ?
- Arbres (max tree, min tree, tree of shape)
- Graphes
- …
Maillage
- On choisit intuitivement un maillage
carre mais cela peut-il presenter des inconvenients ?
- Y a t il d'autres maillages possibles ?
Topologie
Choix de la connexite des pixels
4-connexe:
- Voisins en haut, en bas, a gauche, a droite
- Pas lies aux voisins en diagonale
- Plusieurs regions

8-connexe:


- Si le fond est 8-connexe (en noir), la forme (en blanc) est 4-connexe
- Si le fond est 4-connexe (en noir), la forme (en blanc) est 8-connexe
- Contradiciton avec le theoreme de Jordan
- Que faire ?
- Vivre avec
- Changer la forme de pixels
- Intercaler des frontieres entre les pixels
- …

Codage en memoire:

Pour:
- Plus de probleme de connexite
- Plus de probleme de distance
- Tout le monde est a la meme distance
Contre:
- Gestion de la memoire
- Inteprete chaque ligne de la matrice comme ayant un decalage offset
Intercaler des frontieres entre les pixels
Les frontieres sont determinees par les inter-pixels


Exemple d'arbre: Max tree
A chaque fois qu'on a 2 regions qui se separent, on cree des branches

Stockage/Transfer
- Differents formats:
- JPEG, TIFF, PNM, PNG, BMP, GIF, TGA
- Choix en fonction de criteres
- Avec ou sans compression (avec ou sans perte)
- Avec ou sans couleur
- Avec ou sans palette
- Une seule image ou plusieurs
- Optimise pour une architecture ? (Ex. BMP sauvegarde a l'envers)
- Libre ou pas (Ex. GIF et Compuserve)
Exemple
- Format PNM
- PBM: noir et blanc
- PGM: niveaux de gris
- PPM: couleurs
- 2 variantes
- Format tres simple (extrait de spec)

Application
- On a vu pas mal de choses sur la formation d'une image
- On va l'appliquer
- en changeant les couleurs ou l'illumination d'une image
- en changeant l'organisation spatiale des pixels de l'image
- en combinant des changements dans le couleurs et dans l'organisation spatiale des pixels
Changement d'illumination
En tous points de la scene, la reponse du capteur est donne par:
- Avec
- l'eclairage
- la reflectance de la surface (fonction de la longueur d'onde )
- la sensitivite du capteur qui (pour simplifier est supposse repondre a une seule longueur d'onde: )
On a donc:
La meme image prise avec 2 niveaux d'illuminations differents:
Donc:
Et donc:
Pour changer l'illumination il faut donc multiplier les valeurs des pixels par une constante (et non additionner/soustraire par une constante comme c'est usuellement fait)
- Soit une image acquise avec un eclairage non uniforme


La soustraction des deux donne:

Le ratio des 2 donne:

Difference vs Ratio

Modification des couleurs de l'image
- Application : effet artistique effet sepia
- On associe a un niveau de luminance une couleur

Resultat:

Modification de l'organisation spatiale des pixels
Application: effets artistiques
-
- Les fonctions et ne tiennent pas forcement compte de la valeur du pixel
- Rotation - cisaillement

- Etirement - retrecissement

- Ondulations
- Spirale
- Tranlations aleatoires
- …


La 2e image c'est quand on me chatouille le cou
La transformation doit etre appliquee dans ce sens !
Application: le morphing d'images
Modification des couleurs et de l'organisation spatiale des pixels
- Application: le morhping
- Vu la structure d'une image, il est possible d'appliquer des operateurs sur ces images
- Exemple: la moyenne

- En combinant
- Une moyenne ponderee des images (dont les poids evoluent au cours du temps)
- Un champ de vecteur de translation
Problemes de precision
- Sur les fonctions colorimetriques
- Sur les transformations spatiales
La correction gamma
Retour sur la perception
- La perception de l'oeil est logarithmique

- La repartition des niveaux d'energie n'est donc pas lineaire mais exponentielle

Tous les calculs fait jusqu'a present sont completement faux car 50% du signal n'est pas a la moitie du niveau de gris (128) mais a 186.
- Les niveaux de gris ne sont que des numeros, faire des operations (moyenne, addition, application de filtres, interpolation…) n'a pas vraiment de sens
- Dans la pratique, on omet souvent la correction gamma lors des etapes de filtrages
- Il y a un compromis entre precision du resultat et vitesse
Retour sur le passage de la couleur en niveuax de gris
L'interpolation
- Que faire lorsque l'on doit "chercher" la valeur d'un pixel mais que l'on ne tombe pas precisement sur un pixel ?
- 1er solution (rapide): prendre la du pixel le plus proche

- 2nd solution: Faire une interpolation bi-lineaire

Peut-on faire mieux ?
- Interpolation bicubique
- Utilise 4 points (calcul de la derivee)

Interpolation bicubique

On connait les valeurs pour , , et
Mais aussi
On peut donc en conclure que les coefficients a,b,c,d du ploynome et donc interpoler les valeurs intermediaires du signal entre 0 et 1.

Artefact:

Autres interpolation
- Il existe d'autres methodes d'interpolation
- Pour faire le choix de l'interpolation, il faut faire un compromis entre vitess et qualite

Conclusion
- Codage de l'image et de la couleur
- Espaces de couleurs, passage d'un espace a l'autre
- Applications
- Effet sepia
- Transformation artistiques
- Morphing
- Correction gamma
- Interpolation