Synthèse d images. (4) Modèles procéduraux



Documents pareils
Les algorithmes de base du graphisme

Initiation à l algorithmique

Corrigé des TD 1 à 5

Les mathématiques du XXe siècle

Factorisation d entiers (première partie)

Application 1- VBA : Test de comportements d'investissements

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La

TSTI 2D CH X : Exemples de lois à densité 1

Arbres binaires de recherche

SDLV120 - Absorption d'une onde de compression dans un barreau élastique

Examen Médian - 1 heure 30

L ALGORITHMIQUE. Algorithme

Les structures de données. Rajae El Ouazzani

Annexe commune aux séries ES, L et S : boîtes et quantiles

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

1. Vocabulaire : Introduction au tableau élémentaire

Introduction au pricing d option en finance

Resolution limit in community detection

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Simulation : application au système bonus-malus en responsabilité civile automobile

Master IMEA 1 Calcul Stochastique et Finance Feuille de T.D. n o 1

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

V- Manipulations de nombres en binaire

I. Introduction aux fonctions : les fonctions standards

UE C avancé cours 1: introduction et révisions

Le Soleil. Structure, données astronomiques, insolation.

1.6- Génération de nombres aléatoires

Travail en collaboration avec F.Roueff M.S.Taqqu C.Tudor

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Création intuitive des éléments d un paysage

Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte Carlo en nance et C++, TP n 2.

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Cours 1 : La compilation

C f tracée ci- contre est la représentation graphique d une

Contents. 1 Introduction Objectifs des systèmes bonus-malus Système bonus-malus à classes Système bonus-malus : Principes

Cours 7 : Utilisation de modules sous python

ACTIVITÉ DE PROGRAMMATION

Optimisation et programmation mathématique. Professeur Michel de Mathelin. Cours intégré : 20 h

Modélisation prédictive et incertitudes. P. Pernot. Laboratoire de Chimie Physique, CNRS/U-PSUD, Orsay

Chapitre 2 Devine mon nombre!

Pourquoi l apprentissage?

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Chaînes de Markov au lycée

Objets et Programmation. origine des langages orientés-objet

Solutions du chapitre 4

Découverte du tableur CellSheet

Filtrage stochastique non linéaire par la théorie de représentation des martingales

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Propagation sur réseau statique et dynamique

LES NOMBRES DECIMAUX. I. Les programmes

UNE REPRESENTATION GRAPHIQUE DE LA LIAISON STATISTIQUE ENTRE DEUX VARIABLES ORDONNEES. Éric TÉROUANNE 1

Corrigé des exercices sur les références

Résumé des communications des Intervenants

Compilation (INF 564)

L analyse boursière avec Scilab

Introduction à Adobe Illustrator pour la cartographie et la mise en page

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012

Cours 1 : Qu est-ce que la programmation?

Gestion mémoire et Représentation intermédiaire

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

1. Structure d'un programme FORTRAN 95

TABLE DES MATIÈRES. PRINCIPES D EXPÉRIMENTATION Planification des expériences et analyse de leurs résultats. Pierre Dagnelie

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

FÊTE DE LA SCIENCE 2005 (Village des Sciences)

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Formats d images. 1 Introduction

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

CORRECTION EXERCICES ALGORITHME 1

Algorithmes de recherche

Recherche dans un tableau


Lecture graphique. Table des matières

Java Licence Professionnelle CISII,

Détection et suivi d'objets dans une séquence d'images par contours actifs

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Les probabilités. Chapitre 18. Tester ses connaissances

Cryptographie. Cours 3/8 - Chiffrement asymétrique

Le modèle de Black et Scholes

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

La classification automatique de données quantitatives

1. Visualiser la «carte» de mon réseau social

PROJET MODELE DE TAUX

Nombre de marches Nombre de facons de les monter

Résonance Magnétique Nucléaire : RMN

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Loi binomiale Lois normales

Analyse stochastique de la CRM à ordre partiel dans le cadre des essais cliniques de phase I

Supports. Images numériques. notions de base [1]

!-.!#- $'( 1&) &) (,' &*- %,!

Chapitre 2 : Caractéristiques du mouvement d un solide

Continuité et dérivabilité d une fonction

Transcription:

Synthèse d images (4) Modèles procéduraux Plan de l exposé 1- Formes naturelles 2- Récursivité 3- Hasard 4- Bibliographie ppmforge (John Walker)

Le besoin : appréhender la complexité des formes naturelles eau / terre / feu / vie Première approche : récurence et/ou hasard simulé Exemples de tous les jours : - Le chou-fleur - Cristal de sel que l'on casse (Hauÿ) - Cristaux de neige et de givre 1. Formes naturelles Kaemtz - Traité de météorologie, trad. Martins 1843

Exemple des côtes de Bretagne Loi de L. F. Richardson [LAUWERIER] p. 30 IGN - Catalogue des cartes série bleue et Top 25

2. Récursivité Exemple fondateur : le flocon de von Koch (1919) On peut décrire ce type de courbe par une grammaire générative : w : F-F-F-F P : F=>F-F+F+FF-F-F+F F :avance + :à gauche - :àdroite [DONY] p. 152

Autres exemples [DONY] p. 159

L'ensemble de Mandelbrot On étudie la fonction itérative complexe : z(n+1) = z(n)^2 + c avec z(0) = c Selon la valeur de c, la suite tend soit vers l'infini, soit vers une constante Exemples : c = 1+i c = -1 + 0.25 i itération 1 module de z = 0.5 itération 2 module de z = 0.559 itération 3 module de z = 0.731 itération 80 module de z = 0.493 L'ensemble de Mandelbrot est constitué par tous les c tels que z^2+c reste fini quelque soit le nombre d'itération itération 1 module de z = 3.162 itération 2 module de z = 9.899 itération 3 module de z = 97.01 itération 4 module de z = 9409

Exemple de calcul (en Java) Source complet sur http://cedric.cnam.fr/personne/cubaud/ colonne+=inccolonne; g.drawimage(ofbuff,0,0,null); colonne=0; while (colonne<=larg) { p0=x1+colonne*incx; ligne=0; while (ligne <= (haut/2)) { q0=y1+ligne*incy; x=0;y=0;compt=1;module=0; while ((compt<=limite)&&(module<4.0)) { aux=x; x=x*x-y*y+p0; y=2*y*aux+q0; module=x*x+y*y; compt++; if (module<4.0) { ofg.drawline(colonne,ligne,colonne,ligne); ofg.drawline(colonne,haut-ligne,colonne,haut-ligne); // pour patienter pdt le calcul g.drawline(colonne,ligne,colonne,ligne); ligne+=incligne;

Exploration avec MandelBrowser (Jess Jones, 1995 - pour Macintosh)

3. Hasard Calculer du pseudo hasard Méthodes congruentielles (Lehmer, 1951) Trois paramètres : U0 : le Uk = (auk-1) modulo m germe ("seed") m : le diviseur (terme de congruence) a : le multiplicateur Exemple : U k = 3U k 1 mod31 période = 31 car 31=2^5-1 U0 = 15 (premier avec 31) U1 = 3*15 mod 31 = 45 mod 31 = 14 U2 = 3*14 mod 31 = 11 U3 = 3*11 mod 31 = 2 U4 = 3*2 mod 31 = 6 U30 = 15 U31 = 14 = U1 la période est atteinte Autre germe : U0 = 10 (premier avec 31) U1 = 3*10 mod 31 = 30 U2 = 3*30 mod 31 = 28 etc Un bon générateur (Park & Miller, 1988) : On choisi a = 7^5 = 16807 et m = 2^31-1 Si entiers sur 32 bits : overflow function random(var u:integer):real const a=16807; m=2147483647; q=127773; (* m div a *) r=2836; (* m mod a *) var nu:integer; begin nu:= a*(u mod q) - r*(u div q); if nu>0 then u:=nu else u:=nu+m; random:=u/m; end;

Croissance végétale http://cedric.cnam.fr/personne/cubaud/ Léonard de Vinci - Bib. de l'institut - in [COMAR] p. 13 void Fractale(Graphics g,int ax,int ay,int bx,int by,double angle,int i) { g.drawline(ax,ay,bx,by); if (i!=iter) { double ag=angle-math.random()*ang; double ad=angle+math.random()*ang; double dist=math.sqrt((bx-ax)*(bx-ax)+(byay)*(by-ay)); int cx=(int) (pos*bx+(1-pos)*ax); int cy=(int) (pos*by+(1-pos)*ay); int dx=(int) (cx+rap*dist*math.sin(ag)); int dy=(int) (cy-rap*dist*math.cos(ag)); int ex=(int) (cx+rap*dist*math.sin(ad)); int ey=(int) (cy-rap*dist*math.cos(ad)); Fractale(g,cx,cy,dx,dy,ag,i+1); Fractale(g,cx,cy,ex,ey,ad,i+1); On peut étendre le principe des grammaires génératives (cf biblio) Exemple avec 3 niveaux d'itérations

Modèles de reliefs Exemple de marche aléatoire : le gain au jeu de pile ou face : main() { int s,i; s1=354675; /* racines du generateur aleatoire */ s2=78364; s=0; for(i=1;i<=100;i++) { if (Uniform()<0.5){s++; else {s--; printf("%d \n",s); Visualisation avec GNUplot : 2 0 'resmont' -2-4 -6-8 Feller - An introduction to probability theory - vol 1. - Wiley, 1950. p. 87-10 -12-14 0 10 20 30 40 50 60 70 80 90 100

Mouvement brownien La figure ci-jointe reproduit trois dessins obtenus en traçant les segments qui joignent les positions consécutives d'un même grain de mastic, à 30 secondes d'intervalle. C'est le demi-carré moyen de tels segments qui vérifie la loi d'einstein. L'un de ces dessins contient 50 positions consécutives d'un même grain. Ils ne donnent qu'une idée très affaiblie du prodigieux enchevêtrement de la trajectoire réelle. Si, en effet, on faisait des pointés de secondes en secondes, chacun de ces segments rectilignes se trouverait remplacé par un contour polygonal de 30 côtés relativement aussi compliqué que le dessin reproduit ici, et ainsi de suite. 1 carreau = 5mm pour 1.7µm main(){ int t;double y; /* racines du generateur aleatoire */ s1=354675;s2=78364; t=0.0;y=0.0; printf("%.2f %.2f\n",t,y); for(t=0;t<tmax;t++) { y += Normal(0.0,D); printf("%d %f \n",t,y); Visualisation avec GNUplot : 40 35 30 25 20 15 10 5 0-5 'resbrown1d' J. Perrin Ann. Chimie et Physique, 8ème série, 18, 1909. reprod. in Œuvres scientifiques de J. Perrin, CNRS, 1950 p. 217-8 voir aussi : Les atomes -10 0 200 400 600 800 1000 L'écart-type D ne modifie que l'amplitude du mouvement (en ordonnée ici), mais pas la rugosité du signal. Celle-ci dépend finalement de N

Subdivion récursive du mouvement brownien On choisit (xd,yd) la position de départ (t=0) On choisit (xf,yf) la position finale à date t=t Celle-ci suit une loi normale de moyenne (xd,yd) et de variance 2DT La position intermédiaire à date T/2 connaissant le départ et l'arrivée suit elle-aussi une loi normale de variance 2D(T/2)=DT On montre que sa position moyenne est la moyenne des positions initiales et finales (S. Karlin Initiation aux processus aléatoires Dunod 1969 p. 301) IMPORTANT : Ceci parce que la loi normale est stable pour l'opération d'addition ( infiniment divisible ). Ce n'est pas la seule. Point de départ des travaux de P. Lévy, puis de B. Mandelbrot *Une démo : http://www.stat.umn.edu/~charlie/stoch/

Algorithme largeur d'abord!! #define D 1.0 #define N 12 main() { s1=354675;s2=78364; /* racines du generateur aleatoire */ Avec N=5 : 33 points 1 0.5 0-0.5 'resrec5' fin=nouveau(100.0,0.0,null); deb=nouveau(0.0,0.0,fin); s=sqrt(d); for(i=1;i<=n;i++){ p=deb; while (p!=fin){ xm=normal((p->x+p->suiv->x)/2.0,s); ym=normal((p->y+p->suiv->y)/2.0,s); q=nouveau(xm,ym,p->suiv); p->suiv=q; p=q->suiv; s /= sqrt(2.0); p=deb; while (p!=null) { printf("%f %f\n",p->x,p->y); p=p->suiv; -1-1.5-2 -2.5 0 10 20 30 40 50 60 70 80 90 100 Avec N=12 : 4097 points 1.5 'resrec12' 1 0.5 0-0.5-1 -1.5-2 -2.5 0 10 20 30 40 50 60 70 80 90 100

Mouvement brownien fractionnaire *Mandelbrot. Une classe de processus stochastiques homothétiques à soi ; application à la loi climatologique de H.E. Hurst. CRAS t. 260, pp. 3274-7 (mars 65) rep. in B. Mandelbrot. Fractales, hasard et finance. Flammarion, 1997 pp. 26-9) On introduit le paramètre 0<H<1 (facteur de Hurst) dans la variance du processus brownien : var(x(t)) = D.t^(2H) Le processus reste self-similaire, mais apparaît un phénomène de dépendance à long terme. En pratique, H=3/4 se rencontre souvent dans la nature (séries climatologiques, reliefs ) L'algorithme de subdivision peut facilement être modifié : s /= sqrt(2.0); devient : s /= pow(2.0,h); mais le processus produit n'est qu'une approximation du MBf

Exemples : avec H =3/4= 0.75 1 0.5 'resfbm12-9' 1 0.5 0-0.5-1 -1.5 'resfbm12' 0-0.5-1 -1.5-2 0 10 20 30 40 50 60 70 80 90 100-2 0 10 20 30 40 50 60 70 80 90 100 avec H=0.90 comparer avec le mvt. brownien ordinaire (H=0.5)

Modèles de terrains (bis) On a utilisé un polygône de 13 côtés H = 0.7 N = 12 D = 5e4 pour le repère choisi : 0<x<11000 et 0<y<11000 8000 7800 'resfrance0' 'resfrance5' 10000 9000 8000 7000 6000 5000 4000 3000 2000 1000 'resfrance0' 'resfrance5' 7600 7400 7200 7000 6800 6600 6400 6200 6000 1000 1200 1400 1600 1800 2000 2200 2400 2600 2800 3 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000

Une variante *Fournier, Fussel, Carpenter. Computer rendering of stochastic models Comm. ACM 25(6) June 1982 p. 377 F.S. Hill Computer graphics Prentice-Hall 1990 pp. 162-4 Xm = (Xd+Xf)/2 Ym = (Yd+Yf)/2 R, réalisation d'une va N(0,S*f) avec f=2^(1/2-h) départ intermédiaire M final void Divise(ax,ay,bx,by,stdev) double ax,ay,bx,by,stdev; { double l,xm,ym,r; l=sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by)); if (l<minseg) printf("%f %f\n",bx,by); else { r=normal(0.0,stdev*f); xm=(ax+bx)/2.0-r*(by-ay); ym=(ay+by)/2.0+r*(bx-ax); Divise(ax,ay,xm,ym,stdev*f); Divise(xm,ym,bx,by,stdev*f); Xi = Xm-(Yf-Yd)*R Yi = Ym+(Xf-Xd)*R avec :

Encore une autre (et j'arrête) void Divise(xg,yg,xd,yd,n) double xg,yg,xd,yd;int n; { double xm,ym,min,max; 0.131 0.13 0.129 0.128 'resmont27' xm=(xg+xd)/2.0; if (yg<yd){min=yg;max=yd; else {min=yd;max=yg; ym=min+(max-min)*uniform(); if (n==0) {printf("%f %f\n",xm,ym); else { Divise(xg,yg,xm,ym,n-1); Divise(xm,ym,xd,yd,n-1); 0.127 0.126 0.125 0.124 0.123 0 10 20 30 40 50 60 70 80 90 100 main() { s1=354675;/* racines du generateur aleatoire */ s2=78364; Divise(0.0,Uniform(),100.0,Uniform(),7);

En 3 dimension L'algorithme de subdivision peut se généraliser à des surfaces du type z=f(x,y) ("surfaces d'élévation"). *Fournier et al. op. cit. p. 381 *le topo de Paul Martz http://gameprogrammer.com/fractal/fractal.html *Celui de Paul Bourke (avec le logiciel FracHill) http://www.mhri.edu.au/~pdb/fractals/landscapes

4. Bibliographie complémentaire Benoit Mandelbrot "Les objets fractals" collection "Champs", Flammarion, 1995, 4ème ed. Hans Lauwerier "Fractals : images of chaos" Penguin books, 1991 HO Peitgen & PH Ritcher "The beauty of fractals" Springer, 1986 HO Peitgen & D. Saupe "The science of fractal images" Springer Prusinkiewicz & Lindenmayer "The algorithmic beauty of plants" collection "The virtual laboratory", Springer, 1996 Meinhardt "The algorithmic beauty of sea shells" collection "The virtual laboratory", Springer, 1995