Les images numériques

Presque comme Snapchat !

Les réseaux sociaux tels que Snapchat proposent des filtres permettant entre autre de modifier les visages en y ajoutant des accessoires ou des effets. Comment peut-on faire ce type de traitements en utilisant le langage Python ?

I. Comprendre les images numériques


Que se passe-t-il si on zoome sur une image ? Les points observés sont appelés pixels. On dit que l’image est matricielle car en mathématiques une matrice désigne un tableau de nombres.

Remarque : On parle aussi de « carte de points » (de l'anglais « bitmap »)

Le principe physique

Voici l'agrandissement de l'image d'un écran LCD (Liquid Cristal Display). On peut distinguer les pixels qui la composent. Si on agrandit encore l’image, on peut voir que chaque pixel est subdivisé en 3 rectangles (un rouge, un vert et un bleu) : ce sont les sous-pixels (ou luminophores).

L’œil et le cerveau réalisent une synthèse additive des couleurs. Toute lumière colorée peut être reproduite en superposant, dans certaines proportions, trois faisceaux lumineux de couleurs rouge, verte et bleue (nos yeux ne sont sensibles qu’à ces trois couleurs).

Codage des couleurs

Chaque pixel est codé par trois valeurs, une pour la composante rouge, une autre pour la composante verte et une troisième pour la composante bleue. On parle de code RVB. Chacune de ces trois couleurs peut prendre 256 valeurs différentes (de 0 à 255).

Pour pouvoir coder un nombre jusqu'à la valeur 255, il faut 8 bits soit un octet à un ordinateur. L'octet 00000000 correspond à la valeur décimale 0 tandis que l'octet 11111111 correspond à la valeur décimale 255. Ainsi pour coder les trois couleurs d'un pixel, il faut 3 octets soit 24 bits.

Voir l'application en ligne : http://www.proftnj.com/RGB3.htm