Synthèse d’imagepiranda/CMS/Cours%20Master%201%20...d’image Partie 10 : Cours de probabilités...

192
Didier Didier Arquès Arquès Équipe SISAR Équipe SISAR Synthèse d’image Synthèse d’image

Transcript of Synthèse d’imagepiranda/CMS/Cours%20Master%201%20...d’image Partie 10 : Cours de probabilités...

  • 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