synthèse d’imagepiranda/cms/cours%20master%201%20...d’image partie 10 : cours de probabilités...
Post on 08-Feb-2021
1 Views
Preview:
TRANSCRIPT
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
Synthèse d’imageSynthèse d’image
-
2
Interactions entre les éléments de ce coursInteractions entre les éléments de ce cours
Algorithmique avancée
Partie 3 : Algorithmique des graphesPartie 4 : Combinatoire non commutative, cartes et modélisation topologique 2D et 3DPartie 5 Plongement de graphes et dessin automatique de cartes dans le planPartie 9 : Automates et théorie des langages
Mathématiques pour l’image
Partie 2 : Méthodes numériques
Partie 4 : Combinatoire non commutative, cartes et modélisation topologique 2D et 3D
Partie 6 : Combinatoire
Partie 7 Mathématiques de la modélisation géométrique et de la représentation des connaissances
Partie 10 Cours de probabilités et applications à différents domaines
Synthèse d’image et animation
Partie 4 : Combinatoire non commutative, cartes et modélisation topologique 2D et 3D
Partie 8 : Equations différentielles pour la modélisation des phénomènes physiques et naturels : quelques exemples issus de la synthèse d’image
Partie 10 : Cours de probabilités et applications à différents domaines (surfaces statistiques,…)
Partie 11 : L’informatique graphique en 2D
Partie 12 : L’informatique graphique en 3D
Partie 13 : Algorithmes d’illumination locaux et globaux
Partie 14 : Interaction lumière-matière : modèles physiques et simulation
Partie 15. Synthèse d’image, art et réalité virtuelle(actuellement non développé)
Partie 16 : Modèles pour l’animation
Traitement d’image
Partie 17 : Compression de donnéesPartie 18 : Traitement informatique de l’image : analyse, transformations et filtrage
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2D et 3DAlgorithmique graphique 2D et 3D
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
-
5
IntroductionIntroductionINFORMATIQUE GRAPHIQUE
GEOMETRIE DISCRETEApplications :- Transformations discrètes- Squelettisation, Suivi de contour
- Logiciel de dessin bitmap en 2.5 D- Reconnaissance des formesGéométrie discrète en 2D, en 2.5 D, en 3D
ALGORITHMIQUE GEOMETRIQUE
Précision numérique, algorithmes randomisésVisibilité, VoronoÏ-Delaunay,…
Géométrie classique du plan et de l'espace?
Hologrammes informatiques
Modèle d'illumination : aspect ondulatoire de la lumière
Lancer de rayon
RENDU
Cartes topologiques
Solides non organisés
Solides topologiques
MODELISATION 2DMODELISATION 3D
Plongement sur une surface
Enumération
Cartes combinatoires
Cartes géométriques
Solides combinatoires
Solides géométriques
Codage par des mots
Dessin automatique sous contraintes
Graphes
Modèles de physique :mécanique, botanique,
…
Radiosité
ARCHITECTURES DE MACHINES
Architectures spécialiséesProcesseurs graphiques
APPLICATIONS
modélisation de phénomènes naturels : végétaux, paysages, tornade, trou noir, …
CAO, Imagerie médicale,Robotique, Modélisation Chimique, Réalités virtuelles
A l'Interface Homme MachineParallélisme
COMBINATOIRE
Texturage
Antialliassageet theorie du signal
Déformation géométrique
CAO, Courbes et surfaces
MODÈLE D'ANIMATION
MODELISATION POUR L'ANIMATION
- Modeleurs- Scénario- Modélisation sous contraintes
MO
DE
LE
S PH
YSI
QU
ES
E
T M
AT
HE
MA
TIQ
UE
SIN
FOR
MA
TIQ
UE
FO
ND
AM
EN
TA
LE
-
6
IntroductionIntroductionINFORMATIQUE GRAPHIQUE
GEOMETRIE DISCRETEApplications :- Transformations discrètes- Squelettisation, Suivi de contour
- Logiciel de dessin bitmap en 2.5 D- Reconnaissance des formesGéométrie discrète en 2D, en 2.5 D, en 3D
ALGORITHMIQUE GEOMETRIQUE
Précision numérique, algorithmes randomisésVisibilité, VoronoÏ-Delaunay,…
Géométrie classique du plan et de l'espace?
Hologrammes informatiques
Modèle d'illumination : aspect ondulatoire de la lumière
Lancer de rayon
RENDU
Cartes topologiques
Solides non organisés
Solides topologiques
MODELISATION 2DMODELISATION 3D
Plongement sur une surface
Enumération
Cartes combinatoires
Cartes géométriques
Solides combinatoires
Solides géométriques
Codage par des mots
Dessin automatique sous contraintes
Graphes
Modèles de physique :mécanique, botanique,
…
Radiosité
ARCHITECTURES DE MACHINES
Architectures spécialiséesProcesseurs graphiques
APPLICATIONS
modélisation de phénomènes naturels : végétaux, paysages, tornade, trou noir, …
CAO, Imagerie médicale,Robotique, Modélisation Chimique, Réalités virtuelles
A l'Interface Homme MachineParallélisme
COMBINATOIRE
Texturage
Antialliassageet theorie du signal
Déformation géométrique
CAO, Courbes et surfaces
MODÈLE D'ANIMATION
MODELISATION POUR L'ANIMATION
- Modeleurs- Scénario- Modélisation sous contraintes
MO
DE
LE
S PH
YSI
QU
ES
E
T M
AT
HE
MA
TIQ
UE
SIN
FOR
MA
TIQ
UE
FO
ND
AM
EN
TA
LE
Séparation franche …?Séparation franche …?
-
7
La synthèse d’imageLa synthèse d’imageButs : Buts :
produire une imageproduire une imageSimuler un phénomène physique, biologique,…Simuler un phénomène physique, biologique,…
Méthode :Méthode :•• Modélisation géométriqueModélisation géométrique
La scèneLa scèneLes objetsLes objets
•• Modélisation Modélisation radiométriqueradiométriqueInteractions lumière Interactions lumière matériauxmatériauxInteractions lumière Interactions lumière milieu ambiantmilieu ambiant
•• Algorithme de renduAlgorithme de renduRadiositéRadiositéLancer de rayons
Algorithmique géométriqueAlgorithmique géométrique
Lancer de rayons
-
8
PrincipePrincipeLa synthèse d’imagesLa synthèse d’images
Idée de scèneModélisation géométriqueModélisation géométrique
Description (Description (fonction du tempsfonction du temps):):•• de la forme des objetsde la forme des objets•• de l’organisation des objets de l’organisation des objets dans la scènedans la scène
•• placement de la caméraplacement de la caméra
Modélisation Modélisation radiométriqueradiométrique
Description Description (fonction du temps)(fonction du temps)::•• de la matière constituant l’objetde la matière constituant l’objet•• des interactions entre lades interactions entre lamatière et la lumièrematière et la lumière
Vue Vue descriptivedescriptivede la scènede la scène
«« fils de ferfils de fer » » et et algoalgo géométriquegéométrique
Vue Vue habilléehabillée
et coloréeet colorée
Algorithme de renduAlgorithme de rendu
Projection en 2DProjection en 2DSuppression des faces cachéesSuppression des faces cachéesCalcul des effets spéciauxCalcul des effets spéciaux
Image 2D Image 2D de la scènede la scèneà un instantà un instant
donnédonné
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
ProblèmatiqueProblèmatique
-
11
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
ProblèmatiqueProblèmatiqueProblèmatique On sait projeter un pointOn sait projeter un point
Comment tracer un trait à l’écran entre 2 points donnés ?
Affichage en mode Affichage en mode “fil de fer”“fil de fer”
P1
P2P3
.. .
.. .
P’1
P’2P’3
P4.
P4.
-
12
ProblèmatiqueProblèmatiqueProblèmatiqueTRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
4 connexité
8 connexité
Problème : quels points tracer?quels points tracer?Le segment obtenu devra rLe segment obtenu devra réépondre pondre àà trois conditions:trois conditions:
-- Tout point du segment discret est coupTout point du segment discret est coupéé par le segment par le segment continu.continu.
-- Tout point du segment touche au moins un autre point Tout point du segment touche au moins un autre point du segment soit par l'un de ses côtdu segment soit par l'un de ses côtéés (4 connexits (4 connexitéé), soit par ), soit par un de ses sommets (8un de ses sommets (8--connexitconnexitéé) (voir ci) (voir ci--contre points en contre points en grisgriséé vis vis àà vis du point en noir).vis du point en noir).
-- On trace le moins de points possible.On trace le moins de points possible.
On dOn déésire tracer un segment entre deux points (xi,sire tracer un segment entre deux points (xi,yiyi) et () et (xfxf,,yfyf) de R) de R22. . Ce tracCe tracéé est effectuest effectuéé sur un sur un éécran cran bitmapbitmap le segment doit être discrle segment doit être discréétistiséé. . On considOn considéérera xi, rera xi, yiyi, , xfxf et et yfyf entiers.entiers.
(xi,(xi,yiyi))
((xfxf,,yfyf))
(xi,(xi,yiyi))
((xfxf,,yfyf))
-
13
ProblèmatiqueProblèmatiqueProblèmatiqueTRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
La technique utilisLa technique utiliséée consistera e consistera àà tracer n points tracer n points ooùù n=1+n=1+maxmax(abs(xi(abs(xi--xfxf),abs(),abs(yiyi--yfyf)). )).
C'est C'est àà dire que l'on va tracer un point et un seul par dire que l'on va tracer un point et un seul par ligne ligne intersectantintersectant le segment si abs(xile segment si abs(xi--xfxf) < abs() < abs(yiyi--yfyf), ),
sinon on trace un point et un seul par colonne sinon on trace un point et un seul par colonne intersectantintersectant le segment.le segment.
-
14
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Mauvais tracésMauvais tracés
-
15
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Bons tracésBons tracés
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
Algorithme utilisant l’équation cartésienne Algorithme utilisant l’équation cartésienne
-
17
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Algorithme utilisant l’équation cartésienne Algorithme utilisant Algorithme utilisant l’équation cartésienne l’équation cartésienne
Comment tracer une droite entre les points (xComment tracer une droite entre les points (xii, , yyii) et () et (xxff, , yyff) ?) ?On dOn déésire tracer un segment de droite entre les points de sire tracer un segment de droite entre les points de coordonncoordonnéées enties entièères (xres (xii,,yyii) et () et (xxff,,yyff). Pour simplifier on ). Pour simplifier on considconsidéérera rera xxff > x> xii, , yyff > > yyii et (et (xxff--xxii) ) ≥≥ ((yyff--yyii). C'est ). C'est àà dire que le dire que le coefficient directeur de la droite passant par nos deux sommets coefficient directeur de la droite passant par nos deux sommets est est positif et infpositif et inféérieur ou rieur ou éégal gal àà 1 : Cette droite est dans le premier 1 : Cette droite est dans le premier octant (autour du point (xoctant (autour du point (xii,,yyii)).)).
xi
yi
xf
yf
-
18
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Algorithme utilisant l’équation cartésienne Algorithme utilisant l’équation cartésienne Algorithme utilisant l’équation cartésienne
Équation cartésienne :Équation cartésienne :
y= ax+bavec :avec :
if
if
xxyya −
−=
b = yi − axi
-
19
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Algorithme utilisant l’équation cartésienne Algorithme utilisant l’équation cartésienne Algorithme utilisant l’équation cartésienne
void ligne(int xi, int yi, int xf, int yf) {int x,y ;double a,b ;
a =(double) (yf-yi)/(xf-xi) ;b = yi - a * xi ;for (x = xi ; x
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
Algorithme de Algorithme de BresenhamBresenham
-
21
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Principe de base : Principe de base : Principe de base : A chaque étape, deux candidats :A chaque étape, deux candidats :-- un pas à l’estun pas à l’est-- un pas au Nordun pas au Nord--Est Est
P(P(xxpp,,yypp)) (xp+1,yp)
(xp+1,yp +1)
-
22
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS Critère de choixCritère de choixCritère de choix
0....),( =+−−= ii ydxxdyydxxdyyxF
xi
yi
xf
yf
dy
dx
F(x , y) > 0
F(x , y) < 0
L’équation de la droite s’écrit:L’équation de la droite s’écrit:
if
if
yydyxxdx−=−=
-
23
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Choix du point M : le point médian M (xp+1, yp+1/2)Choix du point M : le point médian M Choix du point M : le point médian M (xp+1, yp+1/2)
xP
yp
xP+1
yP+1yP+1/2
M
-
24
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
xp
yp
xp + 1
yp + 1
yp + 1/2
F(xp, yp+1/2) 0
point médian M
xp + 1
SiSi F(M) > 0 F(M) > 0 ((M au dessous de la droiteM au dessous de la droite))
alorsalors un pas au Nordun pas au Nord--EstEst
sinonsinon ((M au dessus de la droiteM au dessus de la droite))
un pas à l’est un pas à l’est
Algorithme :Algorithme :Algorithme :
-
25
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Calcul incrémental de F(M)Calcul incrémental de F(M)Calcul incrémental de F(M)
Initialisation : on cherche le successeur de Initialisation : on cherche le successeur de (x(xii, , yyii) )
F(x i + 1, yi + 1 / 2)Évaluation de : Si F(M) > 0 alorsSi F(M) > 0 alors (pas au Nord-Est)
Évaluation suivante est celle de : Évaluation suivante est celle de : )2/11,2( +++ pp yxFSinonSinon (pas à l’Est)
)2/1,2( ++ pp yxFÉvaluation suivante est celle de : Évaluation suivante est celle de :
-
26
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Calcul incrémental de F(M)Calcul incrémental de F(M)Calcul incrémental de F(M) ....),( +−−= ii ydxxdyydxxdyyxF
•• InitialisationInitialisation
F(xi +1,yi +1/2) = F(xi,yi) +dy−dx /2 = dy−dx/ 2•• Pas au NordPas au Nord--EstEst
dxdyyxFyxF pppp −+++=+++ )2/1,1()2/11,2(
•• Pas à l’EstPas à l’Est
dyyxFyxF pppp +++=++ )2/1,1()2/1,2(
-
27
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Calcul incrémental de F(M)Calcul incrémental de F(M)Calcul incrémental de F(M) On multiplie tous les incréments parOn multiplie tous les incréments par2 pour travailler en valeurs entières2 pour travailler en valeurs entières
•• InitialisationInitialisation
F(M ) = 2dy − dx
•• Pas au NordPas au Nord--EstEst
F(M ) + = 2(dy − dx )
•• Pas à l’EstPas à l’Est
F(M ) + = 2dy
-
28
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
Algorithme de BresenhamAlgorithme de Algorithme de BresenhamBresenham void Bresenham(int xi, int yi, int xf, int yf) {int dx, dy, i, erreur, x, y ;
x = xi ;y = yi ;dx = xf - xi ;dy = yf - yi ;allume_pixel(x,y) ;erreur = - dx ;for (x = xi+1 ; x = 0) {
erreur -= 2.dx ;y += 1 ;
}allume_pixel(x,y) ;
}}
• Pas au Nord-Est
• Pas à l’Est
• InitialisationF(M) = 2dy − dx
F(M ) + = 2(dy − dx)
F(M) + = 2dy
-
29
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
void Bresenham(int xi, int yi, int xf, int yf) {int dx, dy, i, xinc, yinc, cumul, x, y ;
x = xi ; y = yi ; dx = xf - xi ; dy = yf - yi ;xinc = ( dx > 0 ) ? 1 : -1 ;yinc = ( dy > 0 ) ? 1 : -1 ;dx = abs(dx) ; dy = abs(dy) ; allume_pixel(x,y) ;if ( dx > dy ) {
erreur = -dx ;for ( i = 1 ; i = 0) {erreur -= 2.dx ; y += yinc ; }
allume_pixel(x,y) ;}
} else {erreur = -dy ;for ( i = 1 ; i = 0 ) {erreur -= 2.dy ; x += xinc ; }
allume_pixel(x,y) ;}
}}
Algorithme de BresenhamAlgorithme de Algorithme de BresenhamBresenham
Pour deux points quelconquesPour deux points quelconques
-
30
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
ExempleExempleExemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
13 12 11 10 9 8 7 6 5 4 3 2 1
x y erreur décision : pas…
3 2 3 (=2.dy - dx) >0 Nord Est
4 2 -> 3 3-12 = -9 0 Nord Est
6 3 -> 4 9 -12 = -3 0 Nord Est
8 4 -> 5 15 -12 = 3 >0 Nord Est
9 5 -> 6 3 - 12 = -9 0 Nord Est
11 6 -> 7 9 -12 = -3 0 Nord Est
13 7 -> 8 15 -12 = 3 >0 Nord Est
14 8 -> 9 3 - 12 = -9 0 Nord Est
16 9 -> 10 9 -12 = -3 0 Nord Est
18 10 -> 11 15 -12 = 3 >0 Nord Est
dx=15, dy=9
• Initialisation F ( M ) = 2 dy − dx
• Pas au Nord-Est F ( M ) + = 2 ( dy − dx )
• Pas à l’Est F ( M ) + = 2 dy
-
31
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
CommentairesCommentaires : On ram: On ramèène le cas gne le cas géénnééral ral àà celui du premier celui du premier octant en remarquant :octant en remarquant :
1)1) Qu'une symQu'une syméétrie par rapport trie par rapport àà l'axe des x et/ou l'axe des y l'axe des x et/ou l'axe des y ramramèène tout segment ne tout segment PPiiPPff dans le premier quadrant. Dans dans le premier quadrant. Dans l'algorithme cil'algorithme ci--dessous, cela revient dessous, cela revient àà prendre les valeurs prendre les valeurs absolues de absolues de dxdx et et dydy. Bien . Bien éévidemment, lors du tracvidemment, lors du tracéé des des pixels, il faut avoir gardpixels, il faut avoir gardéé la trace de ces symla trace de ces syméétries tries ééventuelles ventuelles pour allumer les pixels dans le bon quadrant. Cela est rpour allumer les pixels dans le bon quadrant. Cela est rééalisaliséédans l'algorithme par les variables d'incrdans l'algorithme par les variables d'incréément ment xxincinc et et yyincinc..
2) Une sym2) Une syméétrie par rapport trie par rapport àà la premila premièère bissectrice ramre bissectrice ramèène ne tout segment du second octant dans le premier. Cela se tout segment du second octant dans le premier. Cela se traduit dans l'algorithme, par les deux parties de traduit dans l'algorithme, par les deux parties de l'algorithme, la seconde (traitant le second octant) se l'algorithme, la seconde (traitant le second octant) se ddééduisant de la premiduisant de la premièère (traitant le 1re (traitant le 1erer octant) par octant) par ééchange change des variables concernant x avec celles concernant y.des variables concernant x avec celles concernant y.
-
32
TRACÉ DE SEGMENTSTRACÉ DE SEGMENTS
x
y
1er octant
2è octant
Pi
xinc = 1, yinc = 1
xinc = 1, yinc = -1xinc = -1, yinc = -1
xinc = -1, yinc = 1
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
Tracé d’arc de cercleTracé d’arc de cercle
-
34
TRACÉ D’ARC DE CERCLETRACÉ D’ARC DE CERCLE
Entre le point Entre le point (0,r) (0,r)
et le point et le point
Tracé d’arc de cercleTracé d’arc de cercleTracé d’arc de cercleUtilisation de l’algorithme de Utilisation de l’algorithme de BresenhamBresenham pour le tracé d’un arc pour le tracé d’un arc de cercle de centre (0,0) et de de cercle de centre (0,0) et de rayon r dans le second octantrayon r dans le second octant
(r2
,r2
)
-
35
TRACÉ D’ARC DE CERCLETRACÉ D’ARC DE CERCLE
Tracé d’arc de cercleTracé d’arc de cercleTracé d’arc de cercle
Pixels
CAS n° 1
CAS n° 2
x x+1
Y
Y-1
Pixel ESTPixel EST
Pixel SUDPixel SUD--ESTEST
-
36
TRACÉ D’ARC DE CERCLETRACÉ D’ARC DE CERCLE
Idée de l'algorithme :Sur cette partie du plan, on allume un pixel sur chaque colonne Sur cette partie du plan, on allume un pixel sur chaque colonne de de ll’é’écran entre 0 et r/cran entre 0 et r/√√22 . Le reste du cercle sera obtenu facilement . Le reste du cercle sera obtenu facilement par sympar syméétries par rapport aux diagonales et aux axes.tries par rapport aux diagonales et aux axes.
Si un pixel est allumSi un pixel est alluméé en position (x,y), le prochain pixel sera en position (x,y), le prochain pixel sera obligatoirement :obligatoirement :
soit en position "Est" (x+1,y) soit en position "Est" (x+1,y) soit en position "Sud Est" (x+1,ysoit en position "Sud Est" (x+1,y--1) (d1) (déérivrivéée du cercle e du cercle
comprise entre 0 et comprise entre 0 et --1.1.
L'algorithme est basé sur l'étude, pour chaque colonne, de la position (vis à vis du cercle : au dessus ou en dessous) du point intermédiaire (M1 puis M2 dans la figure) entre les deux pixels superposés qui encadrent le cercle.
-
37
TRACÉ D’ARC DE CERCLETRACÉ D’ARC DE CERCLE
Tracé d’arc de cercleTracé d’arc de cercleTracé d’arc de cercle
Pixels
CAS n° 1
CAS n° 2
x x+1
Y
Y-1
Pixel ESTPixel EST
Pixel SUDPixel SUD--ESTEST
-
38
TRACÉ D’ARC DE CERCLETRACÉ D’ARC DE CERCLE
IdIdéée de l'algorithmee de l'algorithme ::
L'algorithme est basL'algorithme est baséé sur l'sur l'éétude, pour chaque colonne, de tude, pour chaque colonne, de la position (vis la position (vis àà vis du cercle : au dessus ou en dessous) vis du cercle : au dessus ou en dessous) du point intermdu point interméédiaire (M1 puis M2 dans la figure) entre les diaire (M1 puis M2 dans la figure) entre les deux pixels superposdeux pixels superposéés qui encadrent le cercle.s qui encadrent le cercle.
Si ce point intermSi ce point interméédiaire est situdiaire est situéé dans le cercle (cas 1), le dans le cercle (cas 1), le pixel allumpixel alluméé sera le pixel situsera le pixel situéé en dehors du cercle. Sinon, en dehors du cercle. Sinon, (cas 2), le pixel situ(cas 2), le pixel situéé àà l'intl'intéérieur du cercle est allumrieur du cercle est alluméé..
L'idL'idéée de l'algorithme est de de de l'algorithme est de dééfinir la position de chaque finir la position de chaque point intermpoint interméédiaire de fadiaire de faççon incron incréémentale, colonne aprmentale, colonne aprèès s colonne.colonne.
-
39
TRACÉ D’ARC DE CERCLETRACÉ D’ARC DE CERCLE
Tracé d’arc de cercleTracé d’arc de cercleTracé d’arc de cercle La fonction d’évaluationLa fonction d’évaluation
F(M ) = x2 + y2 − r 2y
x
M
Si F(M) < 0 alors on est àSi F(M) < 0 alors on est àl’intérieur du cercle sinon l’intérieur du cercle sinon on est à l’extérieuron est à l’extérieur
-
40
Calcul incrémental de F(M)Calcul incrémental de F(M)Calcul incrémental de F(M)
Initialisation : on cherche le successeur de (0, r)
Évaluation de :
Si F(M) < 0 alors
Évaluation de :
sinon
(pas à l’Est)
(pas au Sud-Est)
Évaluation de : F(xp + 2,yp −12
)
F(1,r −12
)
F(xp + 2,yp −32
)
TRACÉ D’ARC DE CERCLETRACÉ D’ARC DE CERCLECAS n° 1
CAS n° 2
x x+1
Y
Y-1
-
41
TRACÉ D’ARC DE CERCLETRACÉ D’ARC DE CERCLE
Calcul incrémental de F(M)Calcul incrémental de F(M)Calcul incrémental de F(M)
Initialisation : on cherche le successeur de Initialisation : on cherche le successeur de (0, r) (0, r)
rrrrrF −=−+−+=− 45
411)2
1,1( 22
Si F(M) < 0 alorsSi F(M) < 0 alors (pas à l’Est)
F(xp +2,yp −12
)= (xp +2)2 + (yp −1/ 2)
2 − r2 = F(xp +1, yp −12
)+2xp +3
SinonSinon (pas au Sud-Est)
F(xp +2,yp −32
)= (xp +2)2 + (yp −
32
)2 − r2 = F(xp +1,yp −12
)+ (2xp −2yp +5)
-
42
TRACÉ D’ARC DE CERCLETRACÉ D’ARC DE CERCLE
void cercle(int r) {int x, y, erreur ;
x = 0 ; y = r ;erreur = 1 - r ;allume_pixel(x,y) ;while ( y > x ) {
if ( erreur < 0 ) {erreur += 2 * x + 3 ;x++ ;
} else {erreur += 2 * (x - y) + 5 ;x++ ;y-- ;
}allume_pixel(x,y) ;
}}
Tracé d’arc de cercleTracé d’arc de cercleTracé d’arc de cercle
-
43
TRACÉ D’ARC DE CERCLETRACÉ D’ARC DE CERCLE
Tracé d’arc de cercleTracé d’arc de cercleTracé d’arc de cercle
erreur Pas… x y
0 20
-19 (=1-r) E 1 20
-19 + 2 *0 + 3 = -16 E 2 20
-16 + 2 * 1 + 3 = -11 E 3 20
-11 + 2 * 2 + 3 = -4 E 4 20
-4 + 2 * 3 + 3 = 5 SE 5 19
5 + 2 * (4 - 20) + 5 = -22 E 6 19
-22 + 2 * 5 + 3 = -9 E 7 19
-9 + 2 * 6 + 3 = 6 SE 8 18
6 + 2 * (7 - 19) + 5 = -13 E 9 18
-13 + 2 * 8 + 3 = 6 SE 10 17
6 + 2 * (9 - 18) + 5 = -7 E 11 17
-7 + 2 * 10 + 3 = 16 SE 12 16
16 + 2 * (11 - 17) + 5 = 9 SE 13 15
9 + 2 *(12 - 16) + 5 = 6 SE 14 14
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
ContexteContexte
-
46
CLIPPINGCLIPPING
ContexteContexteContexte
P
Après projection dans le repèrede la caméra, les objets sont dessinés
en mode “fil-de-fer”.
Ils ne se projettent pas nécessairementcomplètement à l’intérieur de la
fenêtre de visualisation.
Nécessité de les “clipper”
-
47
CLIPPINGCLIPPING
ContexteContexteContexte Réduire le dessin à une région précise de l’écran
Exemple
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
Algorithme de CohenAlgorithme de Cohen--SutherlandSutherland
-
49
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
Permet de détecter facilement certaines configurations de la position relative d’un segment vis à vis d’un rectangle
On associe 4 valeurs booléennes à chaque extrémité du segmentpour établir si le segment passe ou ne passe pas
à l’intérieur du rectangle
-
50
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
(xi, yi)
(xf, yf)
•• Le rectangle est défini par (Le rectangle est défini par (xxminmin, , yyminmin) () (xxmaxmax, , yymaxmax))•• Le segment est défini par (xLe segment est défini par (xii, , yyii) () (xxff, , yyff))
-
51
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
A chaque extrémité (x,y) du segment, on associe 4 booléens:A chaque extrémité (x,y) du segment, on associe 4 booléens:
la première valeurla première valeur = 1 = 1 si y > si y > yymaxmaxla deuxième valeur la deuxième valeur = 1 = 1 si y < si y < yyminminla troisième valeur = 1 la troisième valeur = 1 si x > x si x > x maxmaxla quatrième valeurla quatrième valeur = 1 = 1 si x < si x < xxminmin
On définit des zonesOn définit des zones
-
52
CLIPPINGCLIPPINGla première valeur = 1 si y > ymaxla deuxième valeur = 1 si y < yminla troisième valeur = 1 si x > x maxla quatrième valeur = 1 si x < xmin
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
-
53
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
cas 1 : si les codes des deux extrémités sont entièrement égaux à 0
Le segment est entièrement à l’intérieur du rectangle
-
54
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
cas 2 : si un seul des deux codes est égal à 0
Le segment est en partie à l’intérieur du rectangle
-
55
CLIPPINGCLIPPING
0101 & 0110= 01000101 & 0110= 0100
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
si aucun des 2 codes n’est nul, on calcule le “et logique” entre les 2 codes
cas 3 : si un 1 apparaît à une position quelconque, le segment est à l’extérieur
-
56
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
0001 & 0100 = 0000
1000 & 0010 = 0000
si aucun des 2 codes n’est nul, on calcule le “et logique” entre les 2 codes
cas 4 : si aucun 1 n’apparaît, on ne peut pas conclure
-
57
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
cas 1 et cas 3 cas 1 et cas 3 conclusion immédiateconclusion immédiate
cas 2 et cas 4 cas 2 et cas 4 on doit utiliser un algorithme plus complexeon doit utiliser un algorithme plus complexe
PropriétéPropriété : : les bits égaux à 1 correspondent les bits égaux à 1 correspondent aux côtés du rectangle qui vont être coupés par le segmentaux côtés du rectangle qui vont être coupés par le segment
-
58
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
Algorithme : • parcourir le segment à partir d’un point à l’extérieur du rectangle• tester son code afin de savoir quelle droite le segment coupe• déterminer le point d’intersection• supprimer le sous-segment traité• recommencer l’algorithme sur le nouveau segment
cas 2cas 2
cas 4cas 4
-
59
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
on traite P1 de code 0101le second bit du code (lu de la gauche vers la droite) vaut 1
P1P2
P2 remplace P1
intersection avec la droite y=ymin
ExempleExemple
P2
P1
-
60
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
on traite P2 de code 0001on ne peut pas conclure (0001 & 1010 = 0000)
le quatrième bit du code vaut 1
P2
P3 (code 0000) remplace P2on change d’extrémité car on est revenu dans le cas 2
intersection avec la droite x=xmin
P3
-
61
CLIPPINGCLIPPING
Algorithme de Cohen-SutherlandAlgorithme de CohenAlgorithme de Cohen--SutherlandSutherland
P3
P4P5
on traite P4 de code 1010on ne peut pas conclure (0000 & 1010 = 0000)
le premier bit du code vaut 1
P5 (code 0000) remplace P4 on a fini (cas 1)
intersection avec la droite y=ymax
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
ClippingClipping paramétriqueparamétrique
-
63
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique
Utile lorsque la région à l’intérieur de laquelleUtile lorsque la région à l’intérieur de laquelleest effectuée le est effectuée le clippingclipping n’est plus réduite n’est plus réduite
à un simple rectangle, mais est une région convexeà un simple rectangle, mais est une région convexe
zone de zone de clippingclipping
-
64
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique
Propriété
Le segment à clipper possède au maximum 2 intersections avec le bord du polygone
-
65
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique
(1)AlgorithmeAlgorithme
cas (1) Si les deux extrémités du segment sont dans le polygone
on trace directement le segment
-
66
CLIPPINGCLIPPING
(2)Clipping paramétriqueClippingClipping paramétriqueparamétrique
AlgorithmeAlgorithme
cas (2) Si une des deux extrémités du segment est à l’intérieur du polygone
on parcourt toutes les arêtes du polygone jusqu’à trouver une intersection
on trace entre cette intersection et l’extrémité intérieure au polygone
-
67
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique(3)
AlgorithmeAlgorithme
cas (3) Si les deux extrémités du segment sont à l’extérieur du polygone
on parcourt toutes les arêtes du polygone jusqu’à trouver soit deux, soit aucune intersection
soit on trace entre ces deux intersections ,soit le segment est entièrement à l’extérieur du polygone
-
68
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique
On a donc besoin : On a donc besoin : •• d’un algorithme d’intersection entre 2 segmentsd’un algorithme d’intersection entre 2 segments•• d’un algorithme de test de présence d’un sommet d’un algorithme de test de présence d’un sommet
à l’intérieur d’un polygoneà l’intérieur d’un polygone
-
69
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique intersection entre deux segmentsintersection entre deux segments
équation paramétrique du segment (PA,PB) : P(t) = (1-t) PA + t PB
PPBB
PPAA
Si 0
-
70
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique
PPAA
PPBB
PP11
PP22
N = vecteur orthogonal à (P1,P2)
N . (P(t) - P1) = 0
P(t)
-
71
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique
P(t) = (1-t)PA + t PB
N . (P(t) - P1) = 0{
t =
r N .(PA − P1 )r N .(PA − PB )
Si 0
-
72
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique test de présence d’un sommet test de présence d’un sommet à l’intérieur d’un polygoneà l’intérieur d’un polygone
Tous les angles sont de même signe : PTous les angles sont de même signe : P22 est à l’intérieur du polygoneest à l’intérieur du polygone
-
73
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique
inversion du signe : Pinversion du signe : P11 est à l’extérieur du polygoneest à l’extérieur du polygone
-
74
CLIPPINGCLIPPING
Clipping paramétriqueClippingClipping paramétriqueparamétrique
Calcul du signe de l’angle Calcul du signe de l’angle par le produit vectoriel entre les deux vecteurspar le produit vectoriel entre les deux vecteurs
V2(dx2, dy2)on calcule le signe deon calcule le signe de
dxdx11dydy22 -- dxdx22dydy11V1(dx1, dy1)
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
DéfinitionDéfinition
-
77
REMPLISSAGEREMPLISSAGE
RemplissageRemplissageRemplissage DéfinitionsDéfinitions
polygonepolygoneligne briséeligne brisée
-
78
REMPLISSAGEREMPLISSAGE
RemplissageRemplissageRemplissageÉvidenceÉvidence
Les caractéristiques du polygone influent Les caractéristiques du polygone influent sur la complexité des algorithmessur la complexité des algorithmes
-
79
REMPLISSAGEREMPLISSAGE
RemplissageRemplissageRemplissage Zone définie par une couleurZone définie par une couleur
1) un ensemble connexe de pixels de couleurs identiques
2) un ensemble connexe de pixelsdont la couleur n’est pas une couleurdéfinie
-
80
REMPLISSAGEREMPLISSAGE
RemplissageRemplissageRemplissage Zone définie par une frontièreZone définie par une frontière
Ensemble de pixels connexes dontEnsemble de pixels connexes dontla frontière est constituée de pixels la frontière est constituée de pixels d’une couleur différente de celle d’une couleur différente de celle de la zonede la zone
-
81
REMPLISSAGEREMPLISSAGE
RemplissageRemplissageRemplissage Zone définie par les Zone définie par les sommets d’un polygonesommets d’un polygone
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
Algorithme récursifAlgorithme récursif
-
83
REMPLISSAGEREMPLISSAGE
RemplissageRemplissageRemplissage Pour une zone définie par une frontièrePour une zone définie par une frontière
Idée de l’algorithmeIdée de l’algorithme ::
On choisit un pixel interne à la zone On choisit un pixel interne à la zone un un germegerme
A chaque fois qu’un pixel qui doit être rempli est touchéA chaque fois qu’un pixel qui doit être rempli est touchéOn le remplitOn le remplitOn relance l’algorithme sur les pixels On relance l’algorithme sur les pixels
qui lui sont connexesqui lui sont connexes
-
84
REMPLISSAGEREMPLISSAGE
RemplissageRemplissageRemplissage Algorithme récursifAlgorithme récursif
voidvoid remplissage( remplissage( intint x, x, intint y, y, intint coulcoul_bord, _bord, intint couleur) {couleur) {coulcoul_pixel = _pixel = getget__coulcoul_pixel(x,y) ;_pixel(x,y) ;ifif ( (( (coulcoul_pixel != couleur) && (_pixel != couleur) && (coulcoul_pixel != _pixel != coulcoul_bord) ) {_bord) ) {
putpixelputpixel(x,y,(x,y,coulcoul) ;) ;remplissage(x,y+1, remplissage(x,y+1, coulcoul_bord, _bord, coulcoul) ; ) ; remplissage(x,yremplissage(x,y--1, 1, coulcoul_bord, _bord, coulcoul) ; ) ; remplissage(x+1,y, remplissage(x+1,y, coulcoul_bord, _bord, coulcoul) ; ) ; remplissage(xremplissage(x--1,y, 1,y, coulcoul_bord, _bord, coulcoul) ; ) ;
}}}}
Problème : Dépassement de capacité de la pile si les zones Problème : Dépassement de capacité de la pile si les zones remplies sont trop grandes.remplies sont trop grandes.
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
Algorithme par germeAlgorithme par germe
-
86
REMPLISSAGEREMPLISSAGE
PrincipePrincipeLe remplissage est effectuLe remplissage est effectuéé, suite horizontale maximale , suite horizontale maximale
de pixels aprde pixels aprèès suite horizontale, s suite horizontale, àà partir d'un pixel partir d'un pixel germe initial.germe initial.
A chaque itA chaque itéération :ration :-- On remplit tous les pixels POn remplit tous les pixels Pii jusqu'jusqu'àà la couleur limite la couleur limite
àà droite et droite et àà gauche du germe courant.gauche du germe courant.-- On recherche parmi les pixels au dessus et en dessous On recherche parmi les pixels au dessus et en dessous
des Pdes Pii ceux qui sont le plus ceux qui sont le plus àà droite d'une suite droite d'une suite horizontale maximale horizontale maximale àà remplir.remplir.
-- Ces pixels sont empilCes pixels sont empiléés comme germes des its comme germes des itéérations rations suivantes.suivantes.
-
87
REMPLISSAGEREMPLISSAGE
Dans l'exemple suivant, on remarquera en Dans l'exemple suivant, on remarquera en particulier sur la derniparticulier sur la dernièère figure que le germe 3 re figure que le germe 3 est empilest empiléé. On remplira alors sa ligne de . On remplira alors sa ligne de scanning. Aucun autre germe ne sera ajoutscanning. Aucun autre germe ne sera ajoutéé car car les lignes au dessus et en dessous sont pleines. On les lignes au dessus et en dessous sont pleines. On ddéépile alors le germe 2 et on remplit sa ligne de pile alors le germe 2 et on remplit sa ligne de scanning, qui lscanning, qui làà éégalement ne donne aucun autre galement ne donne aucun autre germe. On dgerme. On déépile enfin le germe 1 dont la ligne pile enfin le germe 1 dont la ligne est dest dééjjàà remplie (on pourrait le tester dans remplie (on pourrait le tester dans l'algorithme). L'algorithme est alors achevl'algorithme). L'algorithme est alors achevéé, la , la pile pile éétant vide. La taille maximum de la pile aura tant vide. La taille maximum de la pile aura ééttéé 4, ce qui est tr4, ce qui est trèès s ééconomique par rapport conomique par rapport ààl'algorithme prl'algorithme prééccéédent.dent.
-
88
REMPLISSAGEREMPLISSAGE
Algorithme par germeAlgorithme par germeAlgorithme par germe pour une zone définie par une frontièrepour une zone définie par une frontière
Idée de l’algorithme :•le remplissage est effectué par balayage horizontal de pixels à partir d’un pixel initial appelé “germe”.•on recherche de nouveaux germes (ceux qui sont le plus à droite d'une suite horizontale maximale à remplir) sur les lignes au dessus et au dessous de la ligne traitée
Germe
-
89
REMPLISSAGEREMPLISSAGE
Algorithme par germeAlgorithme par germeAlgorithme par germe ExempleExemple
343
34
3
-
90
REMPLISSAGEREMPLISSAGE
Algorithme par germeAlgorithme par germeAlgorithme par germe ExempleExemple
3
-
91
REMPLISSAGEREMPLISSAGE
Algorithme par germeAlgorithme par germeAlgorithme par germe ExempleExemple
33 = 1
-
92
REMPLISSAGEREMPLISSAGE
Algorithme par germeAlgorithme par germeAlgorithme par germe
Algo remplissage (germe g) {Pile P ;Sommet S, Sg, Sd ;
Empiler(g, P) ; Tant que ( !PileVide(P) ) Faire
S(x,y)=dépiler(P) ;Rechercher les 2 points limite Sg (xg,y) et Sd(xd,y) à droite et à gauche de x ;Tracer entre Sg (xg,y) et Sd(xd,y);Pour x variant de xg à xd Faire
Si Pup(x, y+1) est le plus à droite d’une suite horizontale AlorsEmpiler (Pup, P) ;
FinsiSi Pdown (x, y-1) est le plus à droite d’une suite horizontale Alors
Empiler (Pdown, P) ;Finsi
FinpourFinTq
}
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 2DAlgorithmique graphique 2D
Algorithme Algorithme scanscan--lineline
-
94
REMPLISSAGEREMPLISSAGE
Algorithme de scan-lineAlgorithme de Algorithme de scanscan--lineline Remplissage d’une zone définie Remplissage d’une zone définie par un ensemble de points (polygone)par un ensemble de points (polygone)
Balayage ligne par ligne, trame par trame
-
95
REMPLISSAGEREMPLISSAGE
Algorithme de scan-lineAlgorithme de Algorithme de scanscan--lineline
A chaque trame, on associe LCA, la A chaque trame, on associe LCA, la liste des côtés actifsliste des côtés actifs c’estc’est--àà--dire dire côtés du polygone ayant une intersection avec la trame en cours côtés du polygone ayant une intersection avec la trame en cours
de traitement et mise à jour au cours de l’exécution de l’algoride traitement et mise à jour au cours de l’exécution de l’algorithmethme
-
96
REMPLISSAGEREMPLISSAGE
Algorithme de scan-lineAlgorithme de Algorithme de scanscan--lineline
Suivantymax x 1/a
inverse du coefficient directeurde la droite associée à ce côté
Un élément de LCA contient :Un élément de LCA contient :
-
97
REMPLISSAGEREMPLISSAGE
Algorithme de scan-lineAlgorithme de Algorithme de scanscan--lineline
Pour la trame y=7
-
98
REMPLISSAGEREMPLISSAGE
Algorithme de scan-lineAlgorithme de Algorithme de scanscan--lineline
Pour la trame y=13
-
99
REMPLISSAGEREMPLISSAGE
Algorithme de scan-lineAlgorithme de Algorithme de scanscan--lineline
Pour optimiser, on Pour optimiser, on précalculeprécalcule pour chaque trame une liste des côtés qui pour chaque trame une liste des côtés qui doivent entrer dans LCAdoivent entrer dans LCA
Suivantymax xmin 1/a
inverse du coefficient directeurinverse du coefficient directeurde la droite associée à ce côtéde la droite associée à ce côté
Pour un côté : Pour un côté :
Les listes chaLes listes chaîînnéées de SI (Structure intermes de SI (Structure interméédiaire) sont tridiaire) sont triéées par ordre es par ordre croissant de croissant de xxminmin, puis pour deux , puis pour deux xxminmin identiques, par ordre croissant de la identiques, par ordre croissant de la
valeur 1/a. Ce tri a aussi pour but de faciliter le dvaleur 1/a. Ce tri a aussi pour but de faciliter le dééplacement des côtplacement des côtéés vers s vers LCA car cet ordre de classement devra être respectLCA car cet ordre de classement devra être respectéé dans LCA.dans LCA.
-
100
REMPLISSAGEREMPLISSAGE
Algorithme de scan-lineAlgorithme de Algorithme de scanscan--lineline
Les listes chaLes listes chaîînnéées de SI sont tries de SI sont triéées par es par ordre croissant de ordre croissant de xxminmin, puis pour deux , puis pour deux xxminminidentiques, par ordre croissant de la valeur identiques, par ordre croissant de la valeur
1/a. Ce tri a aussi pour but de faciliter le 1/a. Ce tri a aussi pour but de faciliter le ddééplacement des cotplacement des cotéés vers LCA car cet s vers LCA car cet ordre de classement devra être respectordre de classement devra être respectéé
dans LCA.dans LCA.
27
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 3DAlgorithmique graphique 3D
-
102
INFORMATIQUE GRAPHIQUE
GEOMETRIE DISCRETEApplications :- Transformations discrètes- Squelettisation, Suivi de contour
- Logiciel de dessin bitmap en 2.5 D- Reconnaissance des formesGéométrie discrète en 2D, en 2.5 D, en 3D
ALGORITHMIQUE GEOMETRIQUE
Précision numérique, algorithmes randomisésVisibilité, VoronoÏ-Delaunay,…
Géométrie classique du plan et de l'espace?
Hologrammes informatiques
Modèle d'illumination : aspect ondulatoire de la lumière
Lancer de rayon
RENDU
Cartes topologiques
Solides non organisés
Solides topologiques
MODELISATION 2DMODELISATION 3D
Plongement sur une surface
Enumération
Cartes combinatoires
Cartes géométriques
Solides combinatoires
Solides géométriques
Codage par des mots
Dessin automatique sous contraintes
Graphes
Modèles de physique :mécanique, botanique,
…
Radiosité
ARCHITECTURES DE MACHINES
Architectures spécialiséesProcesseurs graphiques
APPLICATIONS
modélisation de phénomènes naturels : végétaux, paysages, tornade, trou noir, …
CAO, Imagerie médicale,Robotique, Modélisation Chimique, Réalités virtuelles
A l'Interface Homme MachineParallélisme
COMBINATOIRE
Texturage
Antialliassageet theorie du signal
Déformation géométrique
CAO, Courbes et surfaces
MODÈLE D'ANIMATION
MODELISATION POUR L'ANIMATION
- Modeleurs- Scénario- Modélisation sous contraintes
MO
DE
LE
S PH
YSI
QU
ES
E
T M
AT
HE
MA
TIQ
UE
SIN
FOR
MA
TIQ
UE
FO
ND
AM
EN
TA
LE
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 3DAlgorithmique graphique 3D
ContexteContexte
-
104
EliminationElimination des parties cachéesdes parties cachées
ContexteContexteContexte
P P
RemplissageRemplissage
P P
Parties CachéesParties Cachées
-
105
EliminationElimination des parties cachéesdes parties cachées
11èèrere approche : approche : On dOn déétermine lequel des n objets est visible termine lequel des n objets est visible àà chaque pixel de chaque pixel de
l'image.l'image.AlgorithmeAlgorithme ImageImage--prpréécision;cision;PourPour chaque pixel de l'imagechaque pixel de l'image fairefaire
DDééterminer parmi les objets percterminer parmi les objets percéés par la ligne partant de s par la ligne partant de l'observateur et traversant le pixel considl'observateur et traversant le pixel considéérréé, celui qui est , celui qui est le plus proche de l'observateur;le plus proche de l'observateur;Dessiner le pixel dans la couleur appropriDessiner le pixel dans la couleur appropriééee
faitfaitfinfin.
RemarqueRemarque : Une implémentation brutale de cet algorithme nécessite d'examiner les n objets pour déterminer celui qui est le plus proche de l'observateur le long de la ligne de projection traversant le pixel. Pour p pixels, la complexité est n.p, avec p = 1 Million pour un écran de haute résolution.
.
-
106
EliminationElimination des parties cachéesdes parties cachées
22iièèmeme approche : approche : On compare les objets deux On compare les objets deux àà deux, deux, ééliminant des portions liminant des portions
d'objet ou des objets entiers qui sont cachd'objet ou des objets entiers qui sont cachéés.s.
AlgorithmeAlgorithme ObjetObjet--prpréécision;cision;PourPour chaque objetchaque objet fairefaire
DDééterminer les parties de l'objet dont la vue n'est pas obstruterminer les parties de l'objet dont la vue n'est pas obstruéée e par d'autres parties de lui même ou d'autres objets;par d'autres parties de lui même ou d'autres objets;Dessiner ces parties dans la couleur appropriDessiner ces parties dans la couleur appropriééee
faitfaitfinfin.. RemarqueRemarque : Une implémentation brutale de cet algorithme nécessite de comparer les
objets deux à deux : complexité en n2 par rapport à cette opération de comparaison. Si pour n
-
107
EliminationElimination des parties cachéesdes parties cachées
Conclusion : Le premier algorithme est rConclusion : Le premier algorithme est rééalisaliséé en fonction de la en fonction de la rréésolution de l'solution de l'éécran, et dcran, et déétermine la surface visible termine la surface visible àà chaque chaque pixel de l'pixel de l'éécran. Aussi, si l'on change de rcran. Aussi, si l'on change de réésolution d'solution d'éécran cran estest--on contraint de refaire tous les calculs. Il n'en est pas de on contraint de refaire tous les calculs. Il n'en est pas de même dans le cas du second algorithme omême dans le cas du second algorithme oùù les calculs sont les calculs sont rrééalisaliséés s àà la prla préécision avec laquelle les objets sont dcision avec laquelle les objets sont dééfinis, sans finis, sans tenir compte d'une rtenir compte d'une réésolution particulisolution particulièère de l're de l'éécran. Seule cran. Seule cette dernicette dernièère re éétape doit être recalcultape doit être recalculééee si la taille de l'image si la taille de l'image change.change.La premiLa premièère approche a re approche a ééttéé ddééveloppveloppéée au de au déépart pour des part pour des éécrans graphiques de base rcrans graphiques de base réésolution (256x256 par exemple, solution (256x256 par exemple, au dau déépart) et un nombre quelconque d'objets. La seconde part) et un nombre quelconque d'objets. La seconde approche, au contraire est bien adaptapproche, au contraire est bien adaptéée pour des e pour des éécrans de crans de trtrèès haute rs haute réésolution, mais impose un nombre d'objets limitsolution, mais impose un nombre d'objets limitéé. . Les algorithmes actuels combinent les deux mLes algorithmes actuels combinent les deux mééthodes, la thodes, la premipremièère pour sa vitesse et la seconde pour sa prre pour sa vitesse et la seconde pour sa préécision.cision.
-
108
EliminationElimination des parties cachdes parties cachéées : es : Classification croisClassification croiséée des e des algorithmes d'algorithmes d'éélimination des parties cachlimination des parties cachééesesOn peut classer les algorithmes d'On peut classer les algorithmes d'éélimination des parties cachlimination des parties cachéées en deux es en deux
classes :classes :Les algorithmes "Les algorithmes "continuscontinus" qui r" qui rééalisent la dalisent la déétermination des parties visibles termination des parties visibles
sur un ensemble de zones continues couvrant le plan image. Chaqusur un ensemble de zones continues couvrant le plan image. Chaque e morceau visible de chaque surface sera dmorceau visible de chaque surface sera dééterminterminéé quelle que soit sa place et quelle que soit sa place et sa taille. Des algorithmes d'illumination sont ensuite utilissa taille. Des algorithmes d'illumination sont ensuite utiliséés pour rendre s pour rendre l'image.l'image.
Les algorithmes Les algorithmes àà base base d'd'ééchantillonchantillon de points qui fournissent une solution de points qui fournissent une solution approchapprochéée au proble au problèème d'me d'éélimination des parties cachlimination des parties cachéées. Ces algorithmes es. Ces algorithmes ddééterminent la visibilitterminent la visibilitéé seulement en un nombre fini de points et font des seulement en un nombre fini de points et font des hypothhypothèèses sur la visibilitses sur la visibilitéé des objets entre ces points des objets entre ces points ééchantillonnchantillonnéés.s.
RemarqueRemarque : En pratique les avantages th: En pratique les avantages thééoriques des algorithmes continus oriques des algorithmes continus sont trsont trèès fortement contrebalancs fortement contrebalancéés par leur complexits par leur complexitéé et par le peu de et par le peu de primitives et d'effets d'illumination qu'ils peuvent supporter. primitives et d'effets d'illumination qu'ils peuvent supporter. Usuellement, Usuellement, seuls les seuls les surfaces polygonalessurfaces polygonales sans illumination indirecte sont acceptsans illumination indirecte sont acceptéées. Au es. Au contraire les algorithmes contraire les algorithmes àà base d'base d'ééchantillons de points autorisent de chantillons de points autorisent de nombreux effets sophistiqunombreux effets sophistiquéés s àà base de base de rrééflectionsflections multiples sur des multiples sur des surfaces courbes, par exemple.surfaces courbes, par exemple.
-
109
EliminationElimination des parties cachdes parties cachéées : es : Classification croisClassification croiséée des e des algorithmes d'algorithmes d'éélimination des parties cachlimination des parties cachééeses
Algorithmes par Algorithmes par ééchantillonagechantillonage de pointsde points ::-- algorithme du Zalgorithme du Z--bufferbuffer-- algorithmes de lancer de rayonalgorithmes de lancer de rayon-- algorithme du peintrealgorithme du peintre-- algorithme par balayage de lignealgorithme par balayage de ligne
Algorithmes continusAlgorithmes continus ::-- algorithmes par subdivision d'aire ou de volumealgorithmes par subdivision d'aire ou de volume-- algorithmes par balayage de plansalgorithmes par balayage de plans
Autres algorithmesAutres algorithmes ::-- algorithmes par propagation d'onde.algorithmes par propagation d'onde.
-
110
EliminationElimination des parties cachéesdes parties cachées
Algorithme ZAlgorithme Z--bufferbufferPour tous les objets {Pour tous les objets {
Pour tous les pixels (x,y) Pour tous les pixels (x,y) couverts par l'objet {couverts par l'objet {
comparer z }}comparer z }}
Algorithme balayage de ligne
Ordonner les objets par y croissants;
Pour tous les y {
Ordonner les objets par x croissants;
Pour tous les x {comparer z }
}
Algorithme lancer de rayonPour tous les pixels (x,y) {
Pour tous les objets {comparer z (profondeur de cet
objet au pixel (x,y)}}
Algorithme du peintre
Ordonner les objets du plus au moins profond (Si c'est possible !);
Pour tous les objets dans cet ordre {
Pour tous les pixels (x,y) couverts par l'objet { colorer le pixel }
}
-
111
-
112
-
113
-
114
-
115
EliminationElimination des parties cachéesdes parties cachées
RemarquesRemarques : : (1) Les deux premiers algorithmes du Z(1) Les deux premiers algorithmes du Z--bufferbuffer et de et de lancer de rayon sont "duaux" en ce qui concerne l'ordre lancer de rayon sont "duaux" en ce qui concerne l'ordre des deux itdes deux itéérations principales.rations principales.
(2) Les deux algorithmes du Z(2) Les deux algorithmes du Z--bufferbuffer et du peintre et du peintre diffdiffèèrent par le moment orent par le moment oùù les comparaisons de les comparaisons de profondeur sont faites.profondeur sont faites.
-
116
EliminationElimination des parties cachéesdes parties cachéesRemarquesRemarques : : L'algorithme par balayage de ligne diffL'algorithme par balayage de ligne diffèère de l'algorithme du Zre de l'algorithme du Z--bufferbuffer en ce qu'il partage l'image 2D en une suite d'images 1D en ce qu'il partage l'image 2D en une suite d'images 1D (relatives (relatives àà la ligne de balayage courante) et applique alors un la ligne de balayage courante) et applique alors un algorithme d'algorithme d'éélimination des parties cachlimination des parties cachéées simplifies simplifiéé àà chacune chacune de ces lignes de balayage. Seuls les objets qui coupent la lignede ces lignes de balayage. Seuls les objets qui coupent la ligne de de balayage courante sont invoqubalayage courante sont invoquéés dans cet algorithme simplifis dans cet algorithme simplifiééd'd'éélimination des parties cachlimination des parties cachéées pour cette ligne de balayage. Ce es pour cette ligne de balayage. Ce tri partage le probltri partage le problèème en autant de problme en autant de problèèmes que de lignes de mes que de lignes de balayages. Il est rbalayages. Il est rééalisaliséé avant toute opavant toute opéération concernant ration concernant l'l'éélimination des parties cachlimination des parties cachéées pour la ligne de balayage es pour la ligne de balayage courante. Ceci a pour but de rcourante. Ceci a pour but de rééduire la complexitduire la complexitéé àà celles de souscelles de sous--problproblèèmes en 1D. mes en 1D.
-
117
EliminationElimination des parties cachéesdes parties cachéesRemarquesRemarques : : DDèès lors appliquer cette subdivision du probls lors appliquer cette subdivision du problèème 2D me 2D àà l'aide de la l'aide de la ligne de balayage, puis l'utilisation des algorithmes du Zligne de balayage, puis l'utilisation des algorithmes du Z--bufferbuffer, du , du lancer de rayon, ou du peintre lancer de rayon, ou du peintre àà chacune des lignes de balayage, chacune des lignes de balayage, conduit conduit àà diffdifféérentes variantes de l'algorithme d'rentes variantes de l'algorithme d'éélimination des limination des parties cachparties cachéées "par ligne de balayage".es "par ligne de balayage".Si l'on va un cran plus loin dans ce raisonnement, c'est Si l'on va un cran plus loin dans ce raisonnement, c'est àà dire dire l'application successivement pour y puis pour x de ce principe l'application successivement pour y puis pour x de ce principe "diviser pour r"diviser pour réégner", on est alors conduit gner", on est alors conduit àà subdiviser subdiviser àà nouveau nouveau le le probprobèèmeme 1D d'1D d'éélimination des parties cachlimination des parties cachéées pour chaque ligne es pour chaque ligne de balayage en sousde balayage en sous--problproblèèmes 0D (pour chaque pixel courant de mes 0D (pour chaque pixel courant de la ligne de balayage courante) d'la ligne de balayage courante) d'éélimination des parties cachlimination des parties cachéées es C'est ce principe qui a C'est ce principe qui a ééttéé retenu dans la version trretenu dans la version trèès simplifis simplifiéée de e de cet algorithme prcet algorithme préésentsentéée cie ci--dessus. Au niveau 0D, les deux dessus. Au niveau 0D, les deux algorithmes du Zalgorithmes du Z--bufferbuffer et de lancer de rayon sont identiques et de lancer de rayon sont identiques ((éévident) et vident) et éégalement identiques galement identiques àà l'algorithme du peintre (aprl'algorithme du peintre (aprèès s une optimisation une optimisation éévidente).vidente).
-
118
EliminationElimination des parties cachéesdes parties cachées
ContexteContexteContexte P(Xe,Ye,Ze)
On suppose que les coordonnées des points On suppose que les coordonnées des points sont déjà exprimées en coordonnées de viséesont déjà exprimées en coordonnées de visée
on est dans le repère de la caméraon est dans le repère de la caméra
-
119
EliminationElimination des parties cachéesdes parties cachées
ContexteContexteContexte
Pour la plupart des algorithmes, les objets sont représentésPour la plupart des algorithmes, les objets sont représentéspar une liste de polygonespar une liste de polygones
Nécessité de “mailler” les objetsNécessité de “mailler” les objets
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 3DAlgorithmique graphique 3D
Algorithme du peintreAlgorithme du peintre
-
121
EliminationElimination des parties cachées : peintredes parties cachées : peintre
Algorithme du peintreAlgorithme du peintreAlgorithme du peintre idée de l’algorithme : idée de l’algorithme :
Afficher les facettes en commençant pas la plus éloignéeAfficher les facettes en commençant pas la plus éloignéecomme le font les peintrescomme le font les peintres
1
2
3
-
122
EliminationElimination des parties cachées : peintredes parties cachées : peintre
Algorithme du peintreAlgorithme du peintreAlgorithme du peintre
Algorithme du peintre
DonnéesListe de polygones ordonnés de l'arrière vers l'avant {P1,...Pn}Un tableau Intensité[x,y]
DébutPour chaque polygone P dans l'ordre de la liste faire {
Pour chaque pixel (x,y) qui intersecte P faire {Intensité[x,y] = intensité de P en (x,y)}
}afficher le tableau Intensité
fin
-
123
EliminationElimination des parties cachées : peintredes parties cachées : peintre
Algorithme du peintreAlgorithme du peintreAlgorithme du peintreProblèmesProblèmes
Choix de la fonction de tri :Choix de la fonction de tri :
doit être efficace pour un grand nombre de facettes
Choix du critère de tri :Choix du critère de tri :
• sommet de la facette le plus proche (P)• barycentre (B)• ...
B1 B2P1
P2
-
124
EliminationElimination des parties cachées : peintredes parties cachées : peintre
Algorithme du peintreAlgorithme du peintreAlgorithme du peintre ProblèmeProblème
La fonction de tri La fonction de tri ”choisit” un ordre”choisit” un ordre
Agencements complexesAgencements complexes
Généralement on subdivise les facettesGénéralement on subdivise les facettes
-
125
EliminationElimination des parties cachées : peintredes parties cachées : peintre
L'inconvL'inconvéénient de cet algorithme est que les calculs du nient de cet algorithme est que les calculs du modmodèèle d'illumination sont nle d'illumination sont néécessairement rcessairement rééalisaliséés pour s pour chaque pixel de chaque objet, sans tenir compte de la chaque pixel de chaque objet, sans tenir compte de la visibilitvisibilitéé finale de chaque objet. finale de chaque objet.
On peut On peut ééviter ces calculs inutilesviter ces calculs inutiles en utilisant une en utilisant une version version inverseinverse de l'algorithme du peintre, dans laquelle les objets de l'algorithme du peintre, dans laquelle les objets les plus proches sont dessinles plus proches sont dessinéés en premier, puis les objets s en premier, puis les objets plus plus ééloignloignéés sont dessins sont dessinéés autour et entre ceux qui sont s autour et entre ceux qui sont ddééjjàà dessindessinéés. Il suffit pour cela de savoir si un pixel a s. Il suffit pour cela de savoir si un pixel a ddééjjàà ééttéé dessindessinéé, , àà l'aide d'un tableau booll'aide d'un tableau boolééen "masque" en "masque" mis mis àà jour pour chaque pixel que l'on dessine : ce tableau jour pour chaque pixel que l'on dessine : ce tableau masque est initialismasque est initialiséé àà 0. Puis pour chaque pixel que l'on 0. Puis pour chaque pixel que l'on dessine, on met son masque dessine, on met son masque àà 1. Si pour un pixel candidat 1. Si pour un pixel candidat àà être dessinêtre dessinéé, son masque est d, son masque est dééjjàà àà 1, c'est que le pixel 1, c'est que le pixel contient dcontient dééjjàà l'intensitl'intensitéé d'un objet plus proche et ne doit d'un objet plus proche et ne doit donc pas être modifidonc pas être modifiéé..
-
126
EliminationElimination des parties cachées : peintredes parties cachées : peintreAlgorithme inverse du peintreAlgorithme inverse du peintre
DonnDonnééesesListe de polygones ordonnListe de polygones ordonnéés de l'avant vers l'arris de l'avant vers l'arrièère {P1,...re {P1,...PnPn}}Un tableau masque[x,y] initialisUn tableau masque[x,y] initialiséé àà 0.0.Un tableau IntensitUn tableau Intensitéé[x,y][x,y]
DDéébutbutPourPour chaque polygone P dans l'ordre de la liste chaque polygone P dans l'ordre de la liste fairefaire {{
PourPour chaque pixel (x,y) qui chaque pixel (x,y) qui intersecteintersecte P P fairefaire {{SiSi masque[x,y] = 0 masque[x,y] = 0 alorsalors {{
IntensitIntensitéé[x,y] = intensit[x,y] = intensitéé de P en (x,y)de P en (x,y)masque[x,y] = 1masque[x,y] = 1}}
}}}}
afficher le tableau Intensitafficher le tableau Intensitééfinfin
-
127
EliminationElimination des parties cachées : peintredes parties cachées : peintre
Une application et généralisation de Une application et généralisation de l’algorithme du peintrel’algorithme du peintre
-
128
-
129
-
130
Systèmes de particules
-
131
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 3DAlgorithmique graphique 3D
Algorithme du ZAlgorithme du Z--BufferBuffer
-
133
EliminationElimination des parties cachées : Zdes parties cachées : Z--BufferBuffer
Algorithme du Z-BufferAlgorithme du ZAlgorithme du Z--BufferBuffer idée de l’algorithme idée de l’algorithme
Pour éviter le tri et Pour éviter le tri et le problème de superpositionle problème de superposition
On conserve pour chaque pixelOn conserve pour chaque pixella distance à la facette déjà projetée la distance à la facette déjà projetée
la plus prochela plus proche
-
134
EliminationElimination des parties cachées : Zdes parties cachées : Z--BufferBuffer
Algorithme du Z-BufferAlgorithme du ZAlgorithme du Z--BufferBuffer idée de l’algorithme : idée de l’algorithme :
plans de couleur
tableau des profondeurs
-
135
EliminationElimination des parties cachées : Zdes parties cachées : Z--BufferBuffer
Algorithme du Z-BufferAlgorithme du ZAlgorithme du Z--BufferBuffer
Algorithme ZBuffer(){Pour chaque pixel (x,y) Faire
Zbuffer(x,y) = +infini ;Finpour
Pour chaque facette F Faire Pour chaque pixel (x,y) recouvert par F Faire
calculer la profondeur en z de F ;Si ( profondeur < Zbuffer(x,y) ) Alors
couleur(x,y) = couleur de F ;Zbuffer(x,y) = profondeur ;
FinsiFinpour
Finpour}
-
136
EliminationElimination des parties cachées : Zdes parties cachées : Z--BufferBuffer
Algorithme du Z-BufferAlgorithme du ZAlgorithme du Z--BufferBufferExempleExemple
-
137
EliminationElimination des parties cachées : Zdes parties cachées : Z--BufferBuffer
Algorithme du Z-BufferAlgorithme du ZAlgorithme du Z--BufferBuffer ExempleExemple
-
138
EliminationElimination des parties cachées : Zdes parties cachées : Z--BufferBuffer
Algorithme du Z-BufferAlgorithme du ZAlgorithme du Z--BufferBuffer ExempleExemple
-
139
EliminationElimination des parties cachées : Zdes parties cachées : Z--BufferBuffer
Algorithme du Z-BufferAlgorithme du ZAlgorithme du Z--BufferBuffer ExempleExemple
-
140
EliminationElimination des parties cachées : Zdes parties cachées : Z--BufferBuffer
Algorithme du Z-BufferAlgorithme du ZAlgorithme du Z--BufferBuffer Calcul de la profondeur en z Calcul de la profondeur en z de chaque pixel recouvert par une facettede chaque pixel recouvert par une facette
z1
z2
z3
Lors du balayage de remplissage, onLors du balayage de remplissage, on“interpole” les valeurs définies aux“interpole” les valeurs définies aux
sommetssommets
z1z2
z3
-
Didier Didier ArquèsArquèsÉquipe SISARÉquipe SISAR
IntroductionIntroductionDessin 2D des objets de baseDessin 2D des objets de base : trac: tracéé de segments et courbesde segments et courbesLe Le clippingclippingAlgorithmes de remplissageAlgorithmes de remplissageParties cachParties cachééesesLes systLes systèèmes de couleur et le tramage pour la simulation des mes de couleur et le tramage pour la simulation des
grisgriséés et des couleurss et des couleursTextures, Textures, aliassagealiassage et antiet anti--aliassagealiassage
Synthèse d’imageSynthèse d’imageAlgorithmique graphique 3DAlgorithmique graphique 3D
Algorithme du Algorithme du scanscan--lineline
-
142
EliminationElimination des parties cachées : des parties cachées : scanscan lineline
L'idL'idéée de base est de re de base est de rééduire le problduire le problèème de la dimension me de la dimension 3 3 àà un problun problèème de dimension 2. Pour cela on considme de dimension 2. Pour cela on considèère re le plan associle plan associéé àà une ligne de balayage, c'est une ligne de balayage, c'est àà dire le dire le plan dans l'espace de dimension 3, constituplan dans l'espace de dimension 3, constituéé des points des points d'ordonnd'ordonnéée y constante. e y constante.
L'intersection d'un polygone ou facette avec ce plan (dont L'intersection d'un polygone ou facette avec ce plan (dont l'l'éépaisseur est celle du pixel) est une paisseur est celle du pixel) est une suite de suite de segmentssegments. On est donc amen. On est donc amenéé dans cet espace de dans cet espace de dimension 2 dimension 2 àà rrééaliser la daliser la déétermination des parties termination des parties cachcachéées sur des segments : es sur des segments : on a gagnon a gagnéé une dimensionune dimension..
-
143
EliminationElimination des parties cachées : des parties cachées : scanscan lineline
Plus prPlus préécisciséément, cet algorithme est rment, cet algorithme est rééalisaliséé par par trois tris successifs :trois tris successifs :
-- Le premier tri par rapport Le premier tri par rapport àà la coordonnla coordonnéée y e y a pour but de limiter "l'attention" de a pour but de limiter "l'attention" de l'algorithme pour chaque ligne de balayage, l'algorithme pour chaque ligne de balayage, aux faces et arêtes qui coupent cette ligne de aux faces et arêtes qui coupent cette ligne de balayage.balayage.
-
144
EliminationElimination des parties cachées : des parties cachées : scanscan linelinePrPréécisciséément les points d'intersection limites d'un polygone ou ment les points d'intersection limites d'un polygone ou
facette avec la ligne de balayage courante sont stockfacette avec la ligne de balayage courante sont stockéées dans es dans une xune x--liste qui est remise liste qui est remise àà jour lorsqu'on passe jour lorsqu'on passe àà la ligne de la ligne de balayage suivante :balayage suivante :** en ajoutant les points limites de l'intersection de cette en ajoutant les points limites de l'intersection de cette nouvelle ligne de balayage avec les nouveaux polygones que nouvelle ligne de balayage avec les nouveaux polygones que l'on trouve dans la yl'on trouve dans la y--liste associliste associéée e àà cette nouvelle ligne de cette nouvelle ligne de balayage;balayage;** en supprimant les points limites des arêtes qui ne coupent en supprimant les points limites des arêtes qui ne coupent plus cette nouvelle ligne de balayageplus cette nouvelle ligne de balayage** en modifiant les autres points limites (par une simple en modifiant les autres points limites (par une simple addition daddition d’’un incrun incréément puisque les arêtes sont des fonctions ment puisque les arêtes sont des fonctions linlinééaires).aires).
Cette xCette x--liste est par ailleurs ordonnliste est par ailleurs ordonnéée (ce qui est rapide car e (ce qui est rapide car l'ordre d'une ligne de balayage l'ordre d'une ligne de balayage àà la suivante est peu modifila suivante est peu modifiéé).).
-
145
EliminationElimination des parties cachées : des parties cachées : scanscan lineline
Remarquons enfin Remarquons enfin qu'entre deux points qu'entre deux points successifs de cette liste ordonnsuccessifs de cette liste ordonnéée des points e des points limites d'intersection des polygones avec la limites d'intersection des polygones avec la ligne de balayage courante, il y a au plus un ligne de balayage courante, il y a au plus un polygone visible car les facettes ne se polygone visible car les facettes ne se recoupent pas par hypothrecoupent pas par hypothèèsese. Un tri en z . Un tri en z permet alors d'afficher les pixels situpermet alors d'afficher les pixels situéés sur la s sur la ligne de balayage courante entre deux points ligne de balayage courante entre deux points limites de la xlimites de la x--liste associliste associéée.e.
-
146
EliminationElimination des parties cachéesdes parties cachées
Algorithme du scan-lineAlgorithme du Algorithme du scanscan--lineline
Idée de l’algorithme
L1 = liste des polygones ayant une intersection avec ce plan de balayageL2 = liste des points d’intersection limites des polygones de L1 avec la
ligne de balayage
Pour les autres lignes de balayage FaireL1 = liste des nouveaux polygones intersectant la nouvelle ligne ;Ajouter dans L2 les nouveaux points limites d’intersection ;Supprimer de L2 les points limites qui ne coupent plus cette ligne;Modifier les autres points par simple incrément ;Entre deux points successifs de L2, un tri en z permet d’afficher
les pixels situés sur la ligne de balayage ;Finpour
-
147
Algorithme par balayage de ligneDonnées
Liste de polygones {P1,...Pn}Tableau de listes de po
top related