Infographie et Image Informatique Introduction

Transcription

Infographie et Image Informatique Introduction
Infographie et Image Informatique
Gérard-Michel
COCHARD
[email protected]
Sébastien CHOPLIN
[email protected]
Introduction
1.
Image matricielle et image vectorielle
1.
Image matricielle
2.
Image vectorielle
2.
Couleur
1.
Niveaux de gris
2.
Couleurs
3.
Couleur vraie et couleur indexée
3.
Modes de représentation des images
1.
Codage matriciel
2.
Codage vectoriel
3.
Courbes fractales
4.
Compression et compactage
5.
Formats et standards
1.
Formats d'image matricielle
2.
Formats d'image vectorielle
1.
Image matricielle et image vectorielle
Les images numériques, destinées à être visualisées sur les écrans d'ordinateur, se divisent en 2
grandes classes : les images matricielles et les images vectorielles.
1.
Image matricielle
Encore appelée image bitmap, l'image matricielle se représente sous forme d'une
matrice de points (image binaire : points allumés et points éteints; image couleur : points
de couleur définie). Ces points codés sont rangés en lignes et en colonnes avec la
correspondance simple suivante : un élément de la matrice (point codé) correspond à un
point de l'écran de l'ordinateur.
Les avantages principaux de l'image matricielle sont les suivants :
■
■
■
■
■
Les mécanismes d'affichage sont simples du fait du codage des points; le
dispositifs principaux de visualisation sont d'ailleurs des dispositifs qui affichent
des suites de points (balayage).
Les images complexes ne peuvent être codées que sous forme matricielle, la
disposition des points de l'image ne suivant pas nécessairement un ordre logique.
L'application d'algorithmes de traitement d'image est facilitée par la structure
matricielle de l'image
La conversion de format est également facilitée puisque elle se résume à une
transformation matricielle
Chaque partie d'une image matricielle est, en principe, indépendante d'une autre
partie non jointive; par suite une dégradation d'une partie de l'image n'entraîne
pas la dégradation totale de l'image.
Les inconvénients principaux sont les suivants :
■
■
L'image matricielle contient un nombre fixe de points appelé résolution (nombre
de points par ligne x nombre de points par colonne); un dispositif de restitution
contient, lui-aussi un nombre fixé de points qui constitue une résolution
généralement différente de la première.
Les modifications spatiales d'une image matricielle, simples dans leur principe,
impliquent toutefois un temps de calcul important et présentent certains
problèmes : perte d'information par réduction de taille, effets d'escalier, ...
■
■
Dans une image matricielle, le nombre de points à traiter est très grand, ce qui
rend nécessaire l'emploi de processeurs performants.
Les fichiers bitmap sont de gros consommateurs d'espace mémoire; un document
de haute résolution nécessite couramment une dizaine de Mo par image !
2.
Image vectorielle
L'image vectorielle est adaptée au travail sur des objets dont on connaît les paramètres
de traçage ; elle est décrite en termes de formes élémentaires : lignes, cercles,
rectangles, splines, courbes de Bézier, .... Les formes sont décrites par des attributs
géométriques et par des attributs d'épaisseur, de couleur, de type, .... Une opération
d'affichage ou d'impression nécessite une conversion en mode point (calculs) à cause
des périphériques qui sont généralement en mode point.
Les avantages de l'image vectorielle sont les suivants :
■
■
■
■
Indépendance vis à vis des périphériques : une image vectorielle est une image
symbolique interprétable (théoriquement) par chaque type de périphérique.
Les modifications spatiales de l'image sont relativement souples car elles
consistent en opérations géométriques ne conduisant pas à la perte d'information.
L'image vectorielle est bien adaptée aux travaux de schématique : CAO, DAO.
La taille d'une image vectorielle n'est fonction que de sa complexité; une image
très complexe est de l'ordre de 1 à 2 Mo.
Les inconvénients sont les suivants :
■
■
Les images d'origine analogique comme les photographies sont difficilement
transformées en images vectorielles du fait de leur complexité.
L'affichage implique des calculs car il faut transformer l'image vectorielle en une
image matricielle. Un fichier vectoriel est en fait un programme; une dégradation
d'une partie du fichier est désastreuse (un fichier en mode " texte " comme un
fichier Postscript permet d'atténuer cette difficulté).
2.
Couleur
La couleur d'un objet dépend de sa géométrie, de la source de lumière qui l'éclaire, de
l'environnement, du système visuel humain. L'appréciation d'une couleur comprendra donc une
partie subjective et une partie objective.
1.
Niveaux de gris
L'image est caractérisée par une quantité de lumière affectée à chaque point et
correspondant à un niveau de gris mesuré par une intensité. Il est commode d'associer
une échelle quantitative aux niveaux d'intensité : 0 pour le noir, 1 pour le blanc. Entre
les deux il y a les gris.
Supposons que l'on veuille définir n intensités différentes, du noir vers le blanc. Soit I0
l'intensité la plus basse( noir), et 1 l'intensité la plus forte (blanc). Les différents niveaux
sont :
I0=0,
I1=rI0,
I2=rI1=r2I0, ... ,
Donc r=(1/I0)1/(n-1)
et
In-1=rn-1I0=1
Ij=rjI0=I0(n-1-j)/(n-1)
Mais les écrans élémentaires sont
biniveaux (point allumé ou éteint).
Comment, dans ce cas, rendre compte
des niveaux de gris (halftone)? Le
problème se pose, par exemple, pour
la reproduction de photographies
noir/blanc sur des journaux. La
solution est de tracer des points
"circulaires" noirs dont l'aire est
proportionnelle à la noirceur 1 - I.
Les écrans graphiques sont des surfaces à pointillisme : pour remplacer les petits
disques de rayon variable, on groupe les pixels en blocs carrés. Chacun de ces blocs
rend compte d'une nuance de gris.
Ainsi, pour de blocs 2x2, on a 5 niveaux :
Pour des blocs 3x3, on a 10 niveaux d'intensité :
Plus généralement, avec des blocs nxn, on peut représenter n2 +1 niveaux d'intensité. On
peut synthétiser cela avec une matrice de seuil :
684
D(3) = 1 0 3
527
dont la signification est simple : on allume tous les pixels dont la valeur de l'intensité est
inférieure à l'intensité I.
Pour n = 2, la matrice de seuil est :
D(2) =
02
31
On peut définir les matrices de seuil par une loi de récurrence permettant de calculer
D(n) en fonction de D(n/2) et de U(n/2) qui est une matrice carrée de 1 à n/2 lignes et
n/2 colonnes.
D(n) =
4D(n/2)+D(2)00U(n/2) 4D(n/2)+D(2)01U(n/2)
4D(n/2)+D(2)10U(n/2) 4D(n/2)+D(2)11U(n/2)
En appliquant cette relation, on obtient en particulier :
0 8 2 10
12 4 14 6
D(4) =
3 11 1 9
15 7 13 5
Précision:
Proposons de trouver les éléments de ma matrice D(4) (4 lignes et 4
colonnes : représentation de 17 nuances). La relation de récurrence s'écrit
dans ce cas concret :
D(4) 4*D(2)+0*U(2) 4*D(2)+2*U(2)
U(2) 1 1
D(2) 0 2
avec :
et
=
=
=
4*D(2)+3*U(2) 4*D(2)+1*U(2)
11
31
L'élément (en fait un groupe de 4 éléments ) situé en bas à gauche de la
matrice D(4) sera ainsi :
4*D(2)+3*U(2) = 4*
02
11
0 8
33
3 11
+3*
=
+
=
31
11
12 4
33
15 7
En agissant ainsi pour les autres groupes d'éléments, on obtient bien la
matrice D(4) indiquée dans le cours.
2.
Couleurs
Produire des images avec des effets de transparence, des textures, des ombrages,
nécessite une grande quantité de couleurs qu'il faut évidemment coder. Rappelons que la
lumière est une onde électromagnétique qui possède une distribution spectrale en
fréquence ou en longueur d'onde. La lumière visible (par l'oeil humain) correspond à un
spectre compris entre 380 et 770 nanomètres (de l'ultra violet à l'infra rouge). Une
lumière monochromatique correspond à une longueur d'onde bien précise (en fait à une
bande de largeur 1 nanomètre). On montre expérimentalement que l'on peut reconstituer
toute lumière visible à partir de trois lumières monochromatiques bien choisies,
appelées couleurs primaires.
En 1931, la CIE (Commission
Internationale de l'Energie) a
défini trois courbes spectrales x(
λ), y(λ), z(λ) (en particulier y(λ)
est la courbe de sensibilité de
l'oeil)
Pour une lumière de distribution spectrale P(λ), on a :
X = ∫ P(λ) x(λ) d λ
Y = ∫ P(λ) y(λ) d λ
Z = ∫ P(λ) z(λ) d λ
Le trois nombres X,Y,Z caractérisent la couleur de distribution P(λ) et sont appelés les
valeurs de trichromicité. Par suite, à toute couleur correspond un vecteur dans un espace
à trois dimensions :
C = X.x' + Y.y' + Z.z'
où x', y', z' sont des vecteurs unitaires représentatifs de chaque couleur primaire. On
peut normaliser en posant
x = x'/(x'+y'+z')
y = y'/(x'+y'+z')
z = z'/(x'+y'+z')
On a donc x + y + z = 1, ce qui permet de calculer z en fonction de x et y.
Les trois couleurs primaires X, Y, Z sont reliées linéairement aux couleurs primaires
plus naturelles R, V, B (rouge, vert, bleu) :
X
2,7690 1,7518 1,1300
R
Y = 1,0000 4,5907 0,0601 x V
Z
0,0000 0,0565 5,5943
B
Remarque: ceci est un produit matriciel qui revient à dire que :
X = 2,7690 R + 1,7518 V + 1,1300 B
Y = 1,0000 R + 4,5907 V + 0,0601 B
Z = 0,0000 R + 0,0565 V + 5,5943 B
Pour la lumière visible, le
diagramme de chromaticité du
CIE est donné ci-contre
Pour désigner les couleurs en informatique graphique, on peut utiliser plusieurs
modèles.
1.
Le modèle RVB ou RGB (Rouge, Vert, Bleu)
Les trois axes correspondent aux couleurs
primaires Rouge, Vert, Bleu. La diagonale
principale représente les niveaux de gris.
Ce modèle prend toute son importance au
niveau de moniteurs de télévision et des
écrans à balayage; en effet, c'est par
superposition de rouge, de vert et de bleu
que l'affichage couleur est réalisé.
2.
Le modèle CMJ ou CMY (Cyan, Magenta, Jaune)
Les couleurs primaires sont ici les complémentaires des précédentes. Ce système utilisé
par certaines imprimantes couleurs à impact, à jet d'encre; on parle alors de
quadrichromie ou de modèle CMYK (K pour noir !) : 4 cartouches d'encre sont
nécessaires à l'impression couleur, la cartouche d'encre noire permet d'obtenir un noir
parfait, le mélange des autres couleurs ne donnant pas un résultat satisfaisant.
3.
Le modèle YIQ
Il s'agit d'un recodage de RGB par NTSC (National Television Standards Committee):
Y
0,30 0,59 0,11
R
I = 0,60 -0,27 -0,32 x V
Q
0,21 -0,52 0,31
B
4.
Le modèle TSL (Teinte, Saturation, Luminance) ou HSV (Hue, Saturation, Value)
Plus proche de la perception de
la couleur, ce modèle utilise un
espace en forme d'hexagone
dont l'axe est celui de la
luminance L .
Pour L = 1, on a les couleurs
d'intensité maximale. La teinte T
est donnée par l'angle entre l'axe
rouge et un point de l'hexagone.
La saturation S est donnée par la
distance entre l'axe de la
luminance et un point de
l'hexagone
5.
Le modèle TSI (Teinte, Saturation, Intensité) ou HLS (Hue, Lightness, Saturation)
Ce modèle, également proche de
la perception de la couleur
utilise un espace en forme de
double cône. L'axe allant du noir
au blanc est l'axe de l'Intensité;
la teinte est déterminée par
l'angle polaire et la saturation
par le rayon polaire.
3.
Couleur vraie et couleur indexée
On peut diviser les systèmes graphiques en deux catégories :
■
ceux qui codent un pixel sur 16, 24 ou 32 bits. On parle dans ce cas de "vraie
■
couleur". En effet, avec 24 bits, on peut avoir 16,7 millions de nuances colorées
ce qui est largement au-dessus de la sensibilité de l'oeil, mais utile pour la
retouche photographique par exemple.
ceux qui codent un pixel sur 8 bits ou moins. On peut avoir au maximum 256
nuances. Toutefois, avec la technique de la palette, on peut obtenir le même
nombre de couleurs que précédemment. On parle alors de couleur indexée.
Expliquons en le mécanisme. Dans tous les modèles précédents, la couleur est
codée avec trois nombres. Si un pixel est codé sur p bits, on peut obtenir 2p
couleurs différentes à l'affichage:
■ p = 8 correspond à 256 couleurs, suffisant pour des graphiques, mais pas
pour des images réalistes
■ p = 24 correspond à 16 millions de couleurs : très satisfaisant, mais place
importante de l'image,
d'où la notion de palette de couleur : les p bits ne représentent plus une couleur
mais une adresse dans une table de couleurs (palette); l'élément correspondant de
la table, codé sur b bits, représente une couleur.
Pour p = 12 bits,
on a 212 adresses,
soit 4096
adresses; les
éléments de la
palette peuvent
être de longueur
b = 3x8 (pour les
trois doses de
couleurs
primaires) et
représentent donc
4096 couleurs
parmi 16
millions.
3.
Modes de représentation des images
1.
Codage matriciel
1.
Codage brut par point
Un écran étant une matrice de pixels, on représente une image par une matrice dont
chaque élément code un pixel; ainsi si une image possède m lignes et n colonnes, donc
m.n points ou pixels :
■
■
image binaire (pixels noirs ou blancs) : 1 pixel est codé sur 1 bit (0 ou 1) -->
matrice de m.n bits
image à nuances de gris (2l nuances) : 1 pixel est codé sur l bits --> matrice de
m.n.l bits
image couleur (2l quantités de R, V, B) : 1 pixel est codé sur 3.l bits --> 3
matrices de m.n.l bits
Donnons quelques ordres de grandeur : pour une image 512x512 pixels :
■ image binaire : fichier de 32 Ko
■ image à 256 nuances de gris : chaque pixel étant codé sur 8 bits, on a un fichier
de 256 Ko
■ image à 256 nuances de R,V,B : le fichier est équivalent à 3 fois le précédent :
fichier de 768 Ko.
On constate que pour des images de haute qualité (beaucoup de couleurs, haute
définition), les fichiers images seront très volumineux d'où la nécessité de les
compresser.
■
2.
Codage par plage
Le principe consiste à ne pas répéter des suites de points identiques se situant sur une
même ligne. En se basant sur la figure ci-dessous,
on obtient le codage suivant :
ligne *
(B,21)
ligne **
(B,6) (N,7) (B,8)
ligne ***
(B,5) (N,5) (B,3) (N,5) (B,3)
ligne **** (N,3) (B,2) (N,4) (B,2) (N,3) (B,1) (N,3) (B,3)
ligne *****
(B,1) (N,1) (B,1) (N,1) (B,1) (N,1) (B,1) (N,1) (B,1) (N,1) (B,1) (N,1)
(B,1) (N,1) (B,1) (N,1) (B,1) (N,1) (B,3)
3.
Arbres quaternaires (Quad Trees)
Un arbre quaternaire résulte de la division d'une image, supposée carrée, en 4 quadrants;
chaque quadrant est à son tour divisé en 4 sous-quadrants et ainsi de suite. La figure cidessous explicite le principe du codage par arbre quaternaire.
■
■
liste ordonnée des pixels noirs : 030 031 032 033 120 121 122 123 132 210 211
213 300 301 302 310
liste compactée : 4 codes consécutifs ne différant que par les premiers chiffres du
code, on met x comme dernier chiffre : 03x 12x 132 210 211 213 300 301 302
310
2.
Codage vectoriel
1.
Description dynamique
Elle s'exprime sous forme des programmes de tracé :
2.
Codage de Freeman
Sous sa forme la plus simple, le codage de Freeman décrit un pixel par rapport au pixel
précédent par la direction du tracé. 8 directions de base sont définies :
■
■
codage simple : 5 4 5 6 6 4 4 3 2 2 2 2 1 1 0 0 6 7 7
codage à répétition : (5,1) (4,1) (5,1) (6,2) (4,2) (3,1) (2,4) (1,2) (0,2) (6,1) (7,2)
3.
Courbes fractales
Les courbes fractales, introduites par B. Mandelbrot (1975), consistent à répéter un
même motif des milliers de fois, avec, en général l'introduction d'une facteur aléatoire
dans le processus de génération. On les utilise en rendu réaliste, notamment pour
réaliser des effets de texture.
Si, au lieu d'utiliser un facteur aléatoire, on utilise des règles bien définies, on parle alors
de courbes graftales. La figure ci-dessous donne un exemple de construction d'une
courbe fractale.
4.
Compression et compactage
Une image matricielle 640x480 en 256 couleurs (codage sur 8 bits) représenterait 307 Ko
environ. 4 images satureraient donc une disquette courante de 1,4 Mo. La numérisation
d'images animées implique des problèmes plus sérieux: pour des images du type précédent et
une fréquence vidéo de 25 images/s, une séquence d'une seconde occuperait près de 8 Mo et
une séquence d'une heure 27,6 Go. Par ailleurs, le taux de transfert des supports magnétooptiques comme les CD-ROMs est de l'ordre de 300 Ko/s. Il devient donc indispensable de
"réduire" la taille des images dans un rapport d'environ 27. Pour une image de qualité
photographique (16 M de couleurs codées sur 24 bits), il faut 3 fois plus, soit un facteur de
compression de 75. Par ailleurs, la capacité d'un CD-ROM est limitée à 650 Mo, ce qui permet
de stocker seulement 2000 images non compressées, soit 1 min 30 sec de vidéo! Il est donc
incontournable de réduire la taille des images pour des raisons de taille et de débit.
La réduction de la taille des images appartient à deux classes de méthodes : le compactage
(réduction du volume sans perte d'information) et la compression (réduction du volume avec
perte d'information).
Les techniques employées reposent sur les méthodes suivantes :
■
■
■
élimination des redondances : emploi d'un facteur de répétition
élimination de certaines informations : suppression des détails les moins perceptibles
pour les images animées, enregistrement seulement des différences entre deux images
successives.
On trouvera ci-dessous une description sommaire de quelques techniques courantes; on se
reportera au chapitre 6 pour plus de détails.
■
■
■
codage RLC (Run Length Coding) : toute suite d'octets identiques est remplacée par
l'octet suivi du nombre d'occurrences (par exemple sur 3 octets); ainsi la séquence
666666666 est codée 6/9.
codage de Huffman : le principe est le codage statistique de blocs de bits sur un nombre
variable de bits en fonction de la fréquence d'apparition des blocs. Les blocs peu
fréquents auront un codage " long " et les blocs très fréquents, un codage " court ". Bien
entendu, il est nécessaire d'effectuer une première passe pour calculer les fréquences.
codage LZW (Lempel, Ziv, Welch) : des blocs répétitifs de bits sont répertoriés dans
une table et codés par leur adresse dans cette table.
Un important processus de normalisation a été effectué ces dernières années ce qui a permis
d'aboutir aux normes JPEG pour les images fixes et MPEG pour les images animées; ces
normes impliquent l'emploi de plusieurs procédés de compression.
5.
Formats et standards
Les modes de codage des images numériques sont malheureusement très nombreux ; certains se
sont toutefois imposés comme " standards " de fait; par ailleurs des processus de normalisation
sont en cours. Nous passons en revue ci-dessous les formats d'image numérique les plus
courants.
Formats d'image matricielle
■
■
■
■
■
■
■
BMP origine Microsoft pour Windows 3.x; environnement PC; de plus en plus
répandu
PCX origine Paintbrush de Z-soft; utilisé en environnement PC; permet de traiter
des images 8 bits; non adapté aux images 16, 24, 32 bit; algorithme de
compression : RLC
GIF assez répandu; d'origine Compuserve; utilisé dans un environnement PC;
codage effectué sur 8 bits (256 couleurs); algorithme de compression : LZW
TIFF origine Aldus et Microsoft, pour les images scannées; utilisé en
environnement PC et Mac; plusieurs algorithmes de compression : RLC, LZW
PICT format de base de QuickDraw de Mac; traite aussi le vectoriel;
environnement Mac
TGA origine Truevision; algorithme de compression RLC; environnement PC
FAX utilisé pour la transmission de documents (télécopie); codage binaire;
application d'un codage RLC puis d'un codage de Huffman
2.
Formats d'image vectorielle
■
■
■
■
■
■
■
PICT déjà mentionné plus haut
DXF origine Autocad, standard en CAO; adapté au travail en 2D; connu et très
répandu
HPGL origine Hewlett Packard; format répandu pour les périphériques de
traçage
EPS origine : format du langage Postscript pour Adobe; environnement PC et
Mac
CGM format dérivé de GKS; universel, normalisé
IGES permet l'échange de données en CAO; environnement des stations de
travail
EDIGEO adapté à la cartographie; normalisé par l'AFNOR
Bibliographie
J.P. COUWENBERGH
L'indispensable pour maîtriser
la couleur
Coll. Marabout
FOLEY, VAN DAM, FEINER,
HUGHES
Computer Graphics
Addison Wesley
Ch. LEPECQ et N. RIMOUX
Les fichiers graphiques sur
ordinateurs
Armand Colin
S. RIMMER
Gérer vos fichiers graphiques
Addison Wesley
Y. GARDAN, M. LUCAS
Techniques graphiques
intéractives et CAO
Hermes
M.KUNT,G.GRANDLUND,M.KOCHER
Traitement numérique des
images
Presses Polytechniques et
Universitaires Romandes