Je réserve ici
Sciences numériques et technologie (SNT) 2ⁿᵈᵉ

Ressources · 2ⁿᵈᵉ · Sciences numériques et technologie (SNT)

Image numérique et codage

Pixels, définition et résolution, codage RVB, formats et poids, transformer une image par programme (SNT de 2nde)

À propos de cette page
Ce cours de sciences numériques et technologie (SNT) en seconde sur « Image numérique et codage » suit le programme officiel de sciences numériques et technologie (SNT) de seconde. Il présente les définitions, les propriétés et les méthodes essentielles, accompagnées d'exemples résolus pour bien comprendre. Au programme : L'essentiel, Pixels, définition et résolution, Coder une couleur : RVB, gris, binaire, Poids d'une image, compression et formats. Chaque notion est expliquée pas à pas, puis mise en pratique grâce à des exercices interactifs, un QCM et une évaluation corrigée. Idéal pour réviser à son rythme, combler ses lacunes et progresser, en autonomie ou avec un professeur. Cours rédigé par un professeur particulier à Marseille pour aider les élèves de seconde à réussir en sciences numériques et technologie (SNT).
1

L'essentiel

Image matricielle. Une image numérique « matricielle » (ou bitmap) est un tableau rectangulaire de pixels (de l'anglais picture element). Chaque pixel a une seule couleur, codée par des nombres.
Définition. Nombre total de pixels : largeur × hauteur (en pixels). On l'exprime souvent en mégapixels : 1 Mpx = 1 000 000 pixels.
Résolution. Nombre de pixels par unité de longueur, en ppp (pixels par pouce, ppi ou dpi en anglais), avec 1 pouce = 2,54 cm.
Codage RVB. La couleur d'un pixel est un triplet (r, v, b) : intensités du Rouge, du Vert et du Bleu, chacune entière de 0 à 255, donc codée sur 1 octet (8 bits). Un pixel RVB occupe 3 octets = 24 bits.
Poids d'une image non compressée. Poids = nombre de pixels × taille d'un pixel. On compte 1 ko = 1 000 octets et 1 Mo = 1 000 000 octets.
Ce chapitre traite de l'image une fois codée. La fabrication de l'image (capteur, photosites, métadonnées EXIF) relève du chapitre « Photographie numérique » : un photosite n'est pas un pixel.
2

Pixels, définition et résolution

Repérer un pixel. Dans la plupart des logiciels et bibliothèques (dont Pillow en Python), l'origine (0, 0) est le pixel en haut à gauche ; x augmente vers la droite, y vers le bas. Pour une image de largeur L et de hauteur H : 0 ≤ x ≤ L − 1 et 0 ≤ y ≤ H − 1.
Exemple. Un écran « Full HD » affiche 1920 × 1080 = 2 073 600 pixels, soit environ 2,1 Mpx. Le pixel en bas à droite a pour coordonnées (1919, 1079).
Taille, définition et résolution. Pour une dimension donnée :
taille (en pouces) = nombre de pixels ÷ résolution (en ppp)
résolution (en ppp) = nombre de pixels ÷ taille (en pouces).
Exemple. Imprimée à 150 ppp, l'image de 1920 pixels de large mesure 1920 ÷ 150 = 12,8 pouces, soit 12,8 × 2,54 ≈ 32,5 cm.
UsageRésolution courante
Tirage photo de qualité300 ppp
Affiche vue de loin100 à 150 ppp
Écran d'ordinateur ou de téléphoneenviron 100 à 500 ppp
À définition fixée, plus on imprime grand, plus la résolution baisse et plus les pixels deviennent visibles.
Vocabulaire du programme. Le programme officiel de SNT écrit que « la résolution de l'image se compte en mégapixels » : il emploie alors « résolution » au sens de nombre de pixels. Dans ce cours, « définition » désigne le nombre de pixels et « résolution » le nombre de pixels par pouce ; dans un énoncé, l'unité (Mpx ou ppp) indique de quoi il s'agit.
3

Coder une couleur : RVB, gris, binaire

Synthèse additive. L'écran mélange des lumières rouge, verte et bleue. Rouge + vert = jaune ; rouge + bleu = magenta ; vert + bleu = cyan ; les trois au maximum = blanc ; aucune lumière = noir.
CouleurTriplet (r, v, b)
Noir(0, 0, 0)
Blanc(255, 255, 255)
Rouge(255, 0, 0)
Jaune(255, 255, 0)
Cyan(0, 255, 255)
Gris moyen(128, 128, 128)
Nombre de couleurs. Un octet prend 28=256 valeurs (de 0 à 255). En RVB 24 bits : 256 × 256 × 256 = 16 777 216 couleurs.
Profondeur de couleur. Nombre de bits utilisés pour coder la couleur d'un pixel. Pour l'image finale d'un appareil photo, elle est en général de 8 bits par composante, soit 3 × 8 = 24 bits par pixel ; une image en niveaux de gris a 8 bits par pixel, une image en noir et blanc 1 bit. Avec n bits par pixel, on code 2n couleurs différentes.
Niveaux de gris. Un pixel est gris lorsque r = v = b. Une seule valeur suffit : 1 octet par pixel, 256 niveaux de gris. Noir et blanc pur : 2 couleurs, donc 1 bit par pixel.
Écriture binaire. Un octet s'écrit avec 8 bits de poids 128, 64, 32, 16, 8, 4, 2, 1. De 00000000 (0) à 11111111 (255).
Écriture hexadécimale (web). Une couleur s'écrit #RRVVBB, chaque composante étant écrite en base 16 avec deux chiffres (0 à 9 puis A = 10, …, F = 15). Exemple : #FF8000 = (255, 128, 0), un orange.
Un autre modèle : TSL. Une couleur peut aussi se décrire par sa teinte (position sur un cercle chromatique : rouge à 0°, vert à 120°, bleu à 240°), sa saturation (intensité de la coloration, nulle pour un gris) et sa luminosité (du noir au blanc). Des formules permettent de passer du RVB au TSL et inversement. Mettre la saturation à zéro puis revenir en RVB donne un gris : c'est une autre façon de convertir une image en niveaux de gris. Les fichiers, eux, enregistrent le plus souvent les composantes RVB.
4

Poids d'une image, compression et formats

Poids non compressé. Poids (en octets) = définition × nombre d'octets par pixel. Pour 1920 × 1080 pixels : 6 220 800 octets en RVB (≈ 6,22 Mo), 2 073 600 octets en gris (≈ 2,07 Mo), 259 200 octets en noir et blanc (≈ 0,26 Mo).
Compression. Un algorithme réduit la taille du fichier. Sans perte : l'image décompressée est identique pixel à pixel. Avec perte : on supprime des détails peu visibles, l'image n'est plus exactement la même. Taux de compression = poids non compressé ÷ poids compressé.
FormatCompressionUsage typique
BMPaucunefichier brut, lourd
PNGsans pertelogos, schémas, captures d'écran, transparence
JPEGavec perte, qualité réglablephotographies
GIFsans perte, 256 couleurs au pluspetites animations, icônes
TIFFaucune ou sans perte (le plus souvent)édition, impression, numérisation
RAWdonnées brutes du capteur, avant traitementretouche photo (voir « Photographie numérique »)
Une image vectorielle (SVG) n'est pas faite de pixels mais de formes décrites mathématiquement : elle s'agrandit sans pixellisation.
5

Transformer une image par programme

Principe. On parcourt tous les pixels avec deux boucles imbriquées ; pour chacun, on lit (r, v, b), on calcule un nouveau triplet, on l'écrit. En Python, la bibliothèque Pillow fournit getpixel et putpixel.
TransformationNouveau pixel
Négatif(255 − r, 255 − v, 255 − b)
Niveaux de gris (moyenne)g = (r + v + b) // 3, puis (g, g, g)
Gris pondéré (plus fidèle à l'œil)g ≈ 0,299 r + 0,587 v + 0,114 b
Seuillage (noir et blanc)(0, 0, 0) si g < seuil, sinon (255, 255, 255)
Filtre rouge(r, 0, 0)
Éclaircir de k(min(r + k, 255), min(v + k, 255), min(b + k, 255))
Symétrie gauche-droitele pixel (x, y) va en (L − 1 − x, y), dans une nouvelle image
Extraction de contours (seuil s)on compare le gris g du pixel à celui g' de son voisin de droite : (0, 0, 0) si l'écart entre g et g' dépasse s, sinon (255, 255, 255), dans une nouvelle image
from PIL import Image
img = Image.open('paysage.png').convert('RGB')
L, H = img.size
for x in range(L):
    for y in range(H):
        r, v, b = img.getpixel((x, y))
        g = (r + v + b) // 3
        img.putpixel((x, y), (g, g, g))
img.save('paysage_gris.png')
Exemple. Le pixel (123, 45, 78) donne g = 246 // 3 = 82, donc (82, 82, 82).
6

Méthodes

Méthode 1 — Calculer le poids d'une image non compressée
  1. Calculer la définition : largeur × hauteur.
  2. Identifier la taille d'un pixel : 3 octets (RVB), 1 octet (gris), 1 bit (noir et blanc).
  3. Multiplier ; si le résultat est en bits, diviser par 8 pour obtenir des octets.
  4. Convertir en ko ou Mo (÷ 1 000 ou ÷ 1 000 000).
Exemple rédigé. Photo de 4000 × 3000 pixels : définition 12 000 000 pixels = 12 Mpx. En RVB : 12 000 000 × 3 = 36 000 000 octets, soit 36 Mo. En noir et blanc : 12 000 000 bits ÷ 8 = 1 500 000 octets, soit 1,5 Mo.
Méthode 2 — Relier définition, résolution et taille d'impression
  1. Écrire la relation : taille (pouces) = pixels ÷ résolution (ppp).
  2. Calculer pour la largeur, puis pour la hauteur.
  3. Convertir : 1 pouce = 2,54 cm (et taille en cm ÷ 2,54 pour revenir aux pouces).
Exemple rédigé. Image de 2400 × 1800 pixels imprimée à 300 ppp : 2400 ÷ 300 = 8 pouces et 1800 ÷ 300 = 6 pouces, soit 8 × 2,54 = 20,32 cm sur 6 × 2,54 = 15,24 cm. Format du tirage : 20,32 cm × 15,24 cm.
Méthode 3 — Convertir une composante (décimal, binaire, hexadécimal)
  1. Décimal → binaire : retirer successivement les puissances 128, 64, 32, 16, 8, 4, 2, 1 possibles ; chaque puissance utilisée donne un bit 1.
  2. Binaire → décimal : additionner les poids des bits égaux à 1.
  3. Décimal → hexadécimal : quotient et reste de la division par 16, écrits avec 0-9 et A-F.
Exemple rédigé. 200 = 128 + 64 + 8, donc 200 s'écrit 11001000 en binaire. De plus 200 = 12 × 16 + 8, et 12 s'écrit C : 200 s'écrit C8 en hexadécimal.
Méthode 4 — Écrire un programme de transformation
  1. Ouvrir l'image en RVB et récupérer ses dimensions.
  2. Parcourir tous les pixels avec deux boucles for.
  3. Lire (r, v, b), appliquer la formule, vérifier que chaque valeur reste entre 0 et 255.
  4. Écrire le pixel, puis enregistrer l'image sous un nouveau nom.
Exemple rédigé. Négatif :
from PIL import Image
img = Image.open('chat.png').convert('RGB')
L, H = img.size
for x in range(L):
    for y in range(H):
        r, v, b = img.getpixel((x, y))
        img.putpixel((x, y), (255 - r, 255 - v, 255 - b))
img.save('chat_negatif.png')
Le pixel (30, 200, 90) devient (225, 55, 165) ; toutes les valeurs restent entre 0 et 255.
7

Pièges et erreurs classiques

Définition ≠ résolution. La définition est un nombre de pixels ; la résolution est un nombre de pixels par pouce. Une image n'a une résolution que rapportée à une taille d'affichage ou d'impression.
Changer les ppp ne change pas les pixels. Modifier la valeur de résolution dans un logiciel, sans rééchantillonner, ne modifie que la taille d'impression prévue : l'image garde exactement les mêmes pixels.
Agrandir n'ajoute pas de détails. Passer à une définition plus grande crée des pixels calculés à partir des voisins (interpolation) : le fichier est plus lourd mais pas plus précis.
Bits et octets. 1 octet = 8 bits. En noir et blanc, 1 bit par pixel : il faut diviser par 8 pour obtenir des octets. Autre confusion : 1 kio = 1 024 octets, alors que 1 ko = 1 000 octets.
Dépassement de 255. Ajouter k à une composante peut dépasser 255 (ou passer sous 0 en retirant) : il faut écrêter avec min et max. Cette opération fait perdre de l'information.
JPEG réenregistré. Chaque nouvel enregistrement en JPEG refait une compression avec perte : la qualité se dégrade. Pour retoucher, on travaille sur un format sans perte.
Pixel ≠ photosite. Le photosite est un élément du capteur ; le pixel est un élément de l'image codée.
En bref
  • Une image matricielle est un tableau de pixels ; définition = largeur × hauteur (en pixels).
  • Résolution = pixels par pouce (ppp) ; taille (pouces) = pixels ÷ résolution ; 1 pouce = 2,54 cm.
  • RVB : trois composantes de 0 à 255 (1 octet chacune), 3 octets par pixel, 16 777 216 couleurs.
  • Gris : r = v = b, 1 octet par pixel ; noir et blanc : 1 bit par pixel.
  • Poids non compressé = définition × taille d'un pixel ; PNG compresse sans perte, JPEG avec perte.
  • Transformer une image = parcourir tous les pixels et recalculer (r, v, b) : négatif, gris, seuillage, luminosité (avec écrêtage).
Bloqué sur ce chapitre ?

Moi c'est Ben, j'ai créé ce site pour aider le plus d'élèves possible, partout en France. Je peux aussi reprendre avec toi ce qui coince en cours particulier : en visio, ou à domicile si tu es à Marseille.

Soutien scolaire à Marseille · Cours particuliers au lycée · Aide aux devoirs