Profondeur de couleur
Une image en noir et blanc necessite seulement 1 bit par pixel, mais une photo couleur en necessite 24 ! Pourquoi cette difference et qu'est-ce que ca change ?
Formules cles
Objectifs du cours
- Comprendre le lien entre bits et nombre de couleurs
- Maitriser les calculs de 2^n pour les couleurs
- Connaitre les standards : 1, 8, 16, 24 et 32 bits
- Calculer la taille d'une image selon sa profondeur
Erreurs courantes a eviter
- Confondre 8 bits par couleur et 8 bits au total (tres different !)
- Oublier que 24 bits = 8 bits x 3 canaux (R, G, B)
- Ne pas comprendre que plus de bits = fichier plus lourd
- Confondre profondeur de couleur et resolution de l'image
**Le bit : unite de base**
Un **bit** est la plus petite unite d'information : - Il ne peut avoir que **2 valeurs** : 0 ou 1 - C'est comme un interrupteur : eteint ou allume
**La formule magique**
**Nombre de couleurs = 2^n** (2 puissance n)
Ou **n** est le nombre de bits par pixel.
**Exemples de calcul** :
| Bits | Calcul | Couleurs | |------|--------|----------| | 1 bit | 2^1 | 2 couleurs (noir/blanc) | | 2 bits | 2^2 | 4 couleurs | | 4 bits | 2^4 | 16 couleurs | | 8 bits | 2^8 | 256 couleurs | | 16 bits | 2^16 | 65 536 couleurs | | 24 bits | 2^24 | 16 777 216 couleurs |
**Pourquoi des puissances de 2 ?**
L'ordinateur fonctionne en **binaire** : - 1 bit = 2 possibilites (0, 1) - 2 bits = 4 possibilites (00, 01, 10, 11) - 3 bits = 8 possibilites (000, 001, 010, 011, 100, 101, 110, 111) - Et ainsi de suite...
**Visualisation**
**1 bit** : Noir OU Blanc **2 bits** : Noir, Gris fonce, Gris clair, Blanc **8 bits** : 256 nuances de gris **24 bits** : 16.7 millions de couleurs (True Color)
# Calcul du nombre de couleurs selon les bits
def couleurs_par_bits(bits):
"""Calcule le nombre de couleurs pour n bits."""
return 2 ** bits
print("=== NOMBRE DE COULEURS SELON LES BITS ===\n")
bits_list = [1, 2, 4, 8, 12, 16, 24, 32, 48]
print(f"{'Bits':>6} | {'Calcul':>12} | {'Couleurs':>20}")
print("-" * 45)
for bits in bits_list:
couleurs = couleurs_par_bits(bits)
if couleurs >= 1_000_000:
couleurs_str = f"{couleurs / 1_000_000:.1f} millions"
elif couleurs >= 1_000:
couleurs_str = f"{couleurs:,}"
else:
couleurs_str = str(couleurs)
print(f"{bits:>6} | 2^{bits:>3}{' ':>6} | {couleurs_str:>20}")
print("\n=== REPRESENTATION BINAIRE ===\n")
def binaire_couleurs(bits):
"""Montre toutes les combinaisons pour n bits."""
couleurs = 2 ** bits
print(f"Avec {bits} bits, on peut representer {couleurs} valeurs :")
for i in range(min(couleurs, 8)): # Limiter l'affichage
binaire = format(i, f'0{bits}b')
print(f" {binaire} = {i}")
if couleurs > 8:
print(f" ... jusqu'a {format(couleurs-1, f'0{bits}b')} = {couleurs-1}")
print()
binaire_couleurs(1)
binaire_couleurs(2)
binaire_couleurs(3)
print("=== ANALOGIE VISUELLE ===\n")
print("1 bit : [ ██ | ] -> 2 cases = 2 couleurs")
print("2 bits : [ ██ | █▓ | ▓░ | ] -> 4 cases = 4 couleurs")
print("8 bits : [ ██ | █▓ | ... | ░░ | ] -> 256 cases = 256 nuances")Quiz de validation
1. Combien de couleurs peut-on representer avec 8 bits ?
2. Que signifie 'True Color' en termes de profondeur ?
3. A quoi sert le canal Alpha en 32 bits ?
4. Quelle est la taille brute d'une image 1920x1080 en 24 bits ?
5. Pourquoi utilise-t-on parfois 48 bits en photographie professionnelle ?
