algorithmique et programmation projets...

12
Algorithmique et Programmation Projets 2007/2008 G1: keriven(at)certis.enpc.fr G2: thorstensen(at)certis.enpc.fr G3: aganj(at)certis.enpc.fr G4: tousch(at)certis.enpc.fr G5: segonne(at)certis.enpc.fr G6: chariot(at)certis.enpc.fr 1 Stéréo, Carte de Disparité et Reconstruction 3d FIG. 1 – Deux images. Carte de disparité. Reconstruction 3D 1.1 Introduction Lorsqu’on dispose de deux images d’un même objet, on parle de paire stéréo et il existe des techniques pour retrouver la troisième dimension et reconstruire un modèle 3D de l’objet. L’objectif de ce projet est de réaliser un programme capable de reconstruire automatiquement un objet 3D (un visage par exemple) à partir d’une paire stéréo. Nous allons réaliser ce projet par étapes successives, en ordre inverse par rapport à la chaîne de traitement complète. 1.2 Mise en correspondance Nous supposons données deux images I 1 et I 2 telles que les points qui se correspondent sont sur les mêmes horizontales. On parle d’images rectifiées. Il faut retrouver la disparité d(u, v) telle que le point m 1 =(u 1 ,v 1 ) de I 1 corresponde au point m 2 =(u 2 ,v 2 ) de I 2 avec u 2 = u 1 + d(u1,v1) et v 2 = v 1 . La solution est de chercher d la plus régulière possible telle que les I 1 (m 1 ) et I 2 (m 2 ) soit proches. Pour cela on minimise l’énergie : E(d)=Σ (u1,v1) |I 1 (u 1 ,v 1 ) - I 2 (u 1 + d(u 1 ,v 1 ),v 1 )| (u1,v1),(u 0 1 ,v 0 1 ) voisins |d(u 1 ,v 1 ) - d(u 0 1 ,v 0 1 )| 1. Cette minimisation se fera par optimisation combinatoire (on recherche d entier) grâce à la méthode des graph cuts. Une bibliothèque de graph cuts est fournie et la méthode sera détaillée en classe. 2. Enfin, pour être moins sensible au bruit et aux ambiguïtés, on remplacera le terme de similarité |I 1 - I 2 | par un terme de corrélation qui sera lui aussi défini en classe. Des images rectifiées sont fournies avec le projet. 1.3 Visualisation 3D En reliant empiriquement la disparité à la profondeur, représenter la visage fourni en 3D. 1

Upload: others

Post on 03-Feb-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

  • Algorithmique et Programmation—

    Projets 2007/2008—

    G1: keriven(at)certis.enpc.fr G2: thorstensen(at)certis.enpc.frG3: aganj(at)certis.enpc.fr G4: tousch(at)certis.enpc.frG5: segonne(at)certis.enpc.fr G6: chariot(at)certis.enpc.fr

    1 Stéréo, Carte de Disparité et Reconstruction 3d

    FIG. 1 – Deux images. Carte de disparité. Reconstruction 3D

    1.1 Introduction

    Lorsqu’on dispose de deux images d’un même objet, on parle de paire stéréo et il existe des techniques pourretrouver la troisième dimension et reconstruire un modèle 3D de l’objet. L’objectif de ce projet est de réaliserun programme capable de reconstruire automatiquement un objet 3D (un visage par exemple) à partir d’unepaire stéréo. Nous allons réaliser ce projet par étapes successives, en ordre inverse par rapport à la chaîne detraitement complète.

    1.2 Mise en correspondance

    Nous supposons données deux images I1 et I2 telles que les points qui se correspondent sont sur les mêmeshorizontales. On parle d’images rectifiées. Il faut retrouver la disparité d(u, v) telle que le point m1 = (u1, v1)de I1 corresponde au point m2 = (u2, v2) de I2 avec u2 = u1 + d(u1, v1) et v2 = v1. La solution est de chercherd la plus régulière possible telle que les I1(m1) et I2(m2) soit proches. Pour cela on minimise l’énergie :

    E(d) = Σ(u1,v1)|I1(u1, v1)− I2(u1 + d(u1, v1), v1)|+ Σ(u1,v1),(u′1,v′1) voisins|d(u1, v1)− d(u′1, v′1)|

    1. Cette minimisation se fera par optimisation combinatoire (on recherche d entier) grâce à la méthode desgraph cuts. Une bibliothèque de graph cuts est fournie et la méthode sera détaillée en classe.

    2. Enfin, pour être moins sensible au bruit et aux ambiguïtés, on remplacera le terme de similarité |I1 − I2|par un terme de corrélation qui sera lui aussi défini en classe.

    Des images rectifiées sont fournies avec le projet.

    1.3 Visualisation 3D

    En reliant empiriquement la disparité à la profondeur, représenter la visage fourni en 3D.

    1

  • 1.4 Rectification

    Pour rectifier des images, il faut considérer la matrice F , dite fondamentale, de taille 3 × 3, reliant deuximages stéréo et telle que t[m2, 1]F [m1, 1] = 0 pour tout couple de points correspondants (m1,m2). L’utilisa-tion de F pour la rectification est ici hors sujet. Un programme utilisant F pour calculer les images rectifiéesest donné. En pratique, ce programme fourni deux homographiesH1 etH2 telles que, si I1 et I2 sont les imagesd’origine, I1 ◦H−11 et I2 ◦H

    −12 sont rectifiées. Le faire marcher sur les données fournies. (Rappel : une homo-

    graphie est définie par H(x, y) = ( ax+by+cgx+hy+i ,dx+ey+fgx+hy+i ))

    1.5 Matrice fondamentale

    Il faut enfin calculer F pour deux images données. Les étapes sont :

    1. Savoir calculer F à partir de 8 correspondances (m1,m2)

    2. Grâce à un algorithme de RANSAC (fourni), calculer un F optimal à partir d’un grand nombre de misesen correspondances, dont certaines peuvent être fausses.

    3. Déterminer soit même un grand nombre de mise en correspondance grâce à la méthode des SIFTS (cfprojet de reconnaissance)

    1.6 Votre visage

    En remontant la chaîne, vous devriez pouvoir vous reconstruire en 3D. Photographiez vous, bien éclairédevant un coin texturé par deux affiches, et avec un appareil n’introduisant pas trop de distortion.

    2 Smart Blending

    Le problème est de recoller deux images A et B en uns image C sans que cela ne se voit. On part de deuxméthodes.

    1. Mélange multi échelle. L’idée la plus naïve est construire C(x) = (1− λ)A(x) + λB(x) avec λ qui passeprogressivement de 0 à 1. Cette façon de faire est trop visible. Le principe du mélange multi-échelle idéeest de faire varier λ de 0 à 1 sur une bande de largeur dépendant de la fréquence. Plus exactement, ondécompose les images en fréquence. On mélange leur spectre sur une largeur différente pour chaquefréquence. Puis on revient en espace pour obtenir l’image finale. Cette méthode est décrite icihttp://web.mit.edu/persci/people/adelson/pub_pdfs/pyramid83.pdfet làhttp://web.mit.edu/persci/people/adelson/pub_pdfs/spline83.pdfOn utilisera la classe image des CertisLibs.

    2. Coupe invisible. Il s’agit de calculer par optimisation combinatoire, un chemin séparant A et B, tel quela transition soit la moins visible possible. La méthode est décrite icihttp://cpl.cc.gatech.edu/projects/graphcuttextures/Une bibliothèque de graph-cut sera fournie.

    Enfin, on utilise les deux méthodes simultanément : c’est la coupe invisible qui sert de frontière au mélangemulti-échelle.

    3 Ray Tracing

    3.1 Introduction

    Le ray tracing, ou lancer de rayons, est une technique permettant de générer des images de synthèse. Cetteméthode cherche à simuler le parcours inverse de la lumière de la scène vers l’oeil, et permet de gérer réflexionset réfractions de cette lumière sur les objets présents dans la scène.

    3.2 Principe

    Pour chaque pixel de l’image à générer, un rayon est lancé du point de vue vers la scène. Lors d’une inter-section avec un objet de la scène, la trajectoire de ce rayon est réfléchie ou réfractée (suivant les propriétés del’objet), le rayon continue sa course, et ainsi de suite jusqu’à rencontrer un objet non réfléchissant et non réfrac-tant, ou jusqu’à un nombre défini de réflection/réfraction. Chacun de ces impacts apportera une contributionà la couleur apparente du pixel courant, suivant des coefficients de réflexion/réfraction.

    Pour chacun de ces impacts, pour déterminer la luminosité en ces points, un rayon est lancé depuis chaquesource lumineuse. Combinée à la couleur propre de l’objet, on peut ainsi déterminer la couleur finale en cepoint. Un schéma est présenté en figure 3.

    2

    http://web.mit.edu/persci/people/adelson/pub_pdfs/pyramid83.pdfhttp://web.mit.edu/persci/people/adelson/pub_pdfs/spline83.pdfhttp://cpl.cc.gatech.edu/projects/graphcuttextures/

  • FIG. 2 – Ray tracing

    Pour le calcul de l’illumination d’un point, on se basera sur le modèle d’illumination de Phong, décrit ici :http://fr.wikipedia.org/wiki/Ombrage_Phong. On ne s’intéressera pas à la dernière partie, l’inter-polation de Phong, non cohérente avec le lancer de rayon. Pour les différents modèles d’illumination existants,voir http://ph.ris.free.fr/these/, chapitre 2.

    FIG. 3 – Trajectoire d’un rayon

    3.3 A faire au minimum

    1. Comprendre le principe du ray tracing (voir http://fr.wikipedia.org/wiki/Lancer_de_rayonen particulier) ;

    2. Commencer par un programme simple ne gérant que des sphères affichées uniformément (pas de notionde source lumineuse, seulement le terme ambiant du modèle de Phong) ;

    3. Rajouter des sources lumineuses ponctuelles, sans gestion de réflection ni réfraction : chaque sphère auraun aspect mat (on ajoute le terme de diffusion du modèle de Phong). On se se préoccupera pas non plusdes occlusions éventuelles.

    4. Rajouter le terme spéculaire dans le modèle d’illumination ;

    5. Rajouter la gestion d’une autre primitive géométrique : le plan orienté, définissant un demi espace ;

    6. Construire de nouveaux objets par intersections, unions et différences d’objets de base. On se basera pourcela sur les CSG, ou Constructive Solid Geometry(pour de plus amples détails, voir http://en.wikipedia.org/wiki/Constructive_solid_geometry).Les plans orientés précédents vous permettront par exemple de construire un cube de façon simple.

    3

    http://fr.wikipedia.org/wiki/Ombrage_Phonghttp://ph.ris.free.fr/these/http://fr.wikipedia.org/wiki/Lancer_de_rayonhttp://en.wikipedia.org/wiki/Constructive_solid_geometry

  • 7. Rajouter la gestion des occlusions : un objet n’est éclairé par une source lumineuse que s’il n’existe aucunautre objet entre lui et cette source ;

    3.4 Extensions possibles

    1. Rajouter un affichage progressif : ne pas calculer les pixels ligne par ligne mais par grilles de plus en plusfines, en les affichant au fur et à mesure ;

    2. Placer la description des scènes dans un fichier annexe : votre programme principal ne comportera alorsque le "‘moteur de rendu"’ et se contentera d’interpréter le fichier de données ;

    3. Rajouter la gestion des reflets.

    4. Optimiser le calcul d’intersections avec une notion de boites englobantes ;

    5. . . .

    3.5 Quelques liens en plus

    – Support de cours sur le ray tracing :http://www.cs.virginia.edu/~gfx/courses/2004/Intro.Fall.04/handouts/05-raycast.pdf ;

    – Explications et exemples sur le modèle d’illumination de Phong (et d’autres) :http://artis.imag.fr/~Nicolas.Holzschuch/cours/CIV01/CIV01_materials_small.pdf,http://www.cs.virginia.edu/~gfx/courses/2004/Intro.Fall.04/handouts/06-light.pdf ;

    4 Reconnaissance d’objets

    FIG. 4 – Reconnaissance d’objets

    L’appariement de points caractéristiques entre 2 images de la même scène ou du même objet est une tachefondamentale de la vision par ordinateur, notamment pour la reconstruction tridimensionnel (voir le projet surla stéréovision), le recalage d’images, et la reconnaissance d’objets. Des points d’intérêt, représentatifs d’unepetite région d’une image ou d’un objet, sont détectés et utilisés pour identifier des parties correspondantes.Chaque point d’intérêt correspond à un endroit caractéristique de la scène (ou de l’objet) (coins, blobs, T-jonctions, . . .), qui est codé par un descripteur local associé a chaque point (i.e un vecteur).

    Le but de ce projet est d’implémenter un algorithme de reconnaissance d’objets dans des images à partirde descripteurs locaux robustes dénommés SIFT (Scale-invariant feature transform).

    4.1 Méthode

    4.1.1 Identification des points d’intérêt

    Un point d’intérêt correspond à un point caractéristique d’une image. Ce dernier est associé à un descrip-teur qui décrit localement le voisinage du point. Dans ce projet nous utilisons un logiciel de David Lowe pourgénérer les point d’intérêt SIFT (Scale-invariant feature transform).

    4.1.2 Reconnaissance d’objets

    Lorsque des points d’intérêt ont été identifiés dans une série d’images, il s’agit de trouver les appariementspossibles entre ces derniers et des matchs potentiels (par exemple les points d’intérêt d’une voiture). Un objetsera alors détecté lorsqu’un certain nombre de matchs auront été réalisés entre l’image et un objet caractéris-tique (e.g. la voiture) décrit ses points caractéristiques.

    4

    http://www.cs.virginia.edu/~gfx/courses/2004/Intro.Fall.04/handouts/05-raycast.pdfhttp://www.cs.virginia.edu/~gfx/courses/2004/Intro.Fall.04/handouts/05-raycast.pdfhttp://artis.imag.fr/~Nicolas.Holzschuch/cours/CIV01/CIV01_materials_small.pdfhttp://www.cs.virginia.edu/~gfx/courses/2004/Intro.Fall.04/handouts/06-light.pdfhttp://www.cs.virginia.edu/~gfx/courses/2004/Intro.Fall.04/handouts/06-light.pdf

  • Pour cela, il s’agit de pouvoir apparier deux points caractéristiques, ainsi que d’évaluer la qualité d’un ap-pariement. Pour cela, les experts estiment qu’un appariement peut être considéré comme correct si la distanceentre les deux points (distance à prendre au sens des descripteurs) est plus proche que 70% de la distance dudeuxième plus proche voisin. Ce critère évalue simplement la non-ambiguïté d’un match ; cela n’implique paspour autant que le match est correct.

    Finalement, un objet dans une image sera détecté dans une image lorsqu’un nombre suffisant de matchsentre un objet type et l’image aura été réalisé.

    4.2 Liens utiles

    – http://www.cs.ubc.ca/~lowe/keypoints/

    5 Watermarking

    FIG. 5 – Exemple de watermarking visible : protection d’une image Corbis.

    5.1 Introduction

    Le watermarking ou tatouage numérique est une technique consistant à introduire des informations plus oumoins imperceptibles dans des documents multimédias (images, vidéos, fichiers audios...). La principale appli-cation est la protection de données propriétaires (copyright, données en accès limité, systèmes anti-pirates...).Par exemple, les sociétés de photographies utilisent souvent un tatouage visible, mais impossible à enleversans altérer l’image, pour se protéger du vol d’images sur leur site web (cf figure 5).

    Dans ce projet nous nous intéressons au watermarking invisible appliqué à des images.

    5.2 Principe

    Introduire un tatouage se déroule en 3 étapes :

    1. transformer en fréquence l’image I (Fourier, DCT, ondelettes),

    2. ajouter un signal X (de DCT V ) dans le spectre de l’image,

    3. revenir dans l’espace de départ par transformée inverse pour obtenir I∗, image tatouée.

    On suppose que l’image marquée peut ensuite subir des transformations et attaques (changement d’échelle,compression, découpage, rotations, filtre passe-bas...).

    Le but est de pouvoir retrouver le tatouage introduit à partir de l’image tatouée I∗ et de l’image originaleI . Les étapes d’extraction sont :

    1. transformer I et I∗

    2. Faire la différence, extraire le tatouage (éventuellement corrompu) X∗.

    3. Comparer au tatouage original X (corrélation).

    5.3 Description de la DCT

    La DCT est une fonction linéaire inversible et s’écrit (en 1D)

    DCT (i, j) =1√2N

    C(i)C(j)∑x,y

    I(x, y) cos[

    (2x+ 1)iπ2N

    ]cos[

    (2y + 1)jπ2N

    ](1)

    5

    http://www.cs.ubc.ca/~lowe/keypoints/

  • La DCT inverse s’écrit :

    IDCT (x, y) =1√2N

    ∑i,j

    C(i)C(j)DCT (i, j) cos[

    (2x+ 1)iπ2N

    ]cos[

    (2y + 1)jπ2N

    ](2)

    avec C(i) = 1√2

    si i = 0, et C(i) = 1 si i > 0.

    5.4 Travail demandé

    1. Programmer la transformée en cosinus discrète (DCT) et son inverse (IDCT).2. Générer un tatouage (bruit, pseudo-bruit...)3. Introduire le tatouage dans l’image transformée de manière simple. Si le tatouage est de longueur n,

    c’est-à-dire X = {x1, . . . , xn}, on pourra insérer les xi aux n coefficients vi les plus élevés de la DCT, enutilisant l’une des trois formules suivantes :

    v′i = vi + αxi (3)v′i = vi(1 + αxi) (4)v′i = vi · eαxi (5)

    4. Extraire un tatouage5. Calculer la corrélation entre le tatouage original et le tatouage extrait.6. S’il reste du temps : tester différentes attaques.7. S’il reste du temps : améliorer la manière d’introduire le tatouage.

    5.5 Données

    Voir par exemple http://www.petitcolas.net/fabien/watermarking/image_database/index.html

    6 Segmentation d’images médicales

    FIG. 6 – Visualisation suivant 3 coupes coronale, horizontale, et sagitale d’une image medicale 3D.

    Le but de ce projet est de réaliser un petit logiciel de visualisation d’images médicales 3D et de traitementd’images dans le but de pouvoir localiser et extraire rapidement et interactivement certaines zones d’intérêtdéterminées par l’utilisateur (par exemple, une structure anatomique 3D). Pour cela, vous disposerez d’uneimage médicale 3D (i.e. une image de taille 256× 256× 256).

    6.1 Description du travail demandé

    Le travail consiste à réaliser au minimum :– un logiciel de visualisation des différentes coupes de l’image médicale (par exemple, un mode de visua-

    lisation correspondant à la figure 6) : en cliquant dans certaines des coupes (coronnale, horizontale, ousagittale), les 2 autres coupes se mettent a jour automatiquement.

    6

    http://www.petitcolas.net/fabien/watermarking/image_database/index.htmlhttp://www.petitcolas.net/fabien/watermarking/image_database/index.html

  • – un logiciel d’opérations simples de morphologie mathématique : grace à certaines commandes au clavierou à la souris, des opérations de seuillages, de dilatations ou d’érosions peuvent être effectuées. Uncalcul des composantes connexes permettra d’extraire en cliquant une zone d’intérêt. Prévoir aussi unecommande “undo”.

    – segmentation de structures simples par graph-cut : apres̀ avoir localisé une (plus ou moins grossière)zone d’intérêt contenant une structure à localiser précisement, raffiner la segmentation par un algorithmede graph-cuts.

    6.2 Morphologie mathématique

    document de référence : http ://www.tsi.enst.fr/˜bloch/ANIM/morpho.pdf.

    Une des idées de base de la morphologie mathématique est d’étudier ou traiter un ensemble à l’aide d’unautre ensemble, appelé élément structurant, qui sert de sonde. A chaque position de l’élément structurant, onregarde s’il touche ou s’il est inclus dans l’ensemble initial. En fonction de la réponse, on construit un ensemblede sortie. On obtient ainsi des opérateurs de base qui sont relativement intuitifs :

    – dilatation binaire : La dilatation binaire d’un ensembleX par un élément structurantB est définie commel’ensemble obtenu par addition : X ⊕B = {x+ y/x ∈ X, y ∈ B}. La dilatation par un disque a pour effetd’augmenter la taille des objets selon la taille du disque, de relier entre elles les composantes proches etde boucher les petits trous (plus petits que l’élément structurant).

    – L’érosion d’un ensembleX par un e’ĺément structurantB est définie parXB = {x/∀y ∈ B, x+y ∈ X}.L’érosion par un disque a les effets suivants : l’objet est diminué selon la taille de l’élément structurant,les composantes connexes de l’objet plus petites que l’élément structurant sont supprimées, les partiesdes objets reliées par des isthmes plus fins que l’élément structurant sont déconnectées.

    On implementera un opérateur de seuillage (seuil à choisir au clavier où à la souris), ainsi que des opéra-teurs binaires de dilatation et d’érosion par different élément structurants. Un calcul des composantes connexessera également nécessaire.

    6.3 Segmentation précise

    Souvent les problèmes de vision peuvent se traduire sous une forme énergétique de telle sorte que la solu-tion du problème considéré est également minimum d’une énergie associée à ce-dit problème. Dans notre cas,nous cherchons à raffiner la segmentation grossière d’une structure médicale. On supposera que cette structurepossède une intensité moyenne Iin bien différente de l’intensité moyenne Iout des autres tissus environants.Notre problème de segmentation consiste alors a trouver l’étiquetage L des voxels (inside ou outside) quiminimize l’énergie suivante :

    E(L) =∑

    L(x)=1

    ‖I(x)− Iin‖2 +∑

    L(x)=0

    ‖I(x)− Iout‖2 + λ∑x

    ∑y∈Nx

    δ(x, y),

    où L(x) = 1 signifie x ∈ inside, L(x) = 0 signifie x ∈ outside, Nx est le nombre de voisins du voxel x (onprendra des voisinages de 6 voisins), et δ(x, y) vaut 1 si L(x) 6= L(y), 0 otherwise. Les deux premières sommessont des termes images qui permettent de localiser précisément la structure, tandis que la dernière sommeest un terme de lissage qui force une contrainte sur les discontinuités de la surface. Le minimum de cetteénergie E(L) est donc une segmentation binaire lisse. Minimisation de cette énergie peut être réalisée par unalgorithme de graph-cuts.

    6.4 Algorithme de Graph-Cuts

    On considère les trois régions suivantes :– la région A où la structure est présente sans aucun doute,– la région B où la structure est absente sans aucun doute,– la région frontière ambiguë.L’objectif est de couper la région frontière en deux sous-régions disjointes de telle sorte à ce que leur fron-

    tière soit la meilleure possible. Trouver la partition optimale de cette région revient à trouver une coupe mini-male (ce qui revient à chercher un flot maximum) sur le graphe construit de la manière suivante :

    Les noeuds :– un noeud source qui représente l’image A,– un noeud puits qui représente l’image B,– un noeud pour chaque pixel de la région frontière.Les arêtes :– une arête de poids λ entre deux sommets représentants des pixels voisins de la région frontière,– une arête de poids ‖I(x)− Iin‖2 (resp. ‖I(x)− Iout‖2) entre la source (resp. le puis) et les noeuds x de la

    région frontière.

    7

  • Pour trouver cette partition on utilise la méthode des Graph Cuts. La segmentation finale correspond alorsà la composante principale (celle contenant A) de l’ensemble des voxels x qui vérifient L(x) = 1.

    6.5 Données

    L’image 3D format au INR qui se trouve (zippée) sur la page du cours se lit ainsi :

    #include #include #include using namespace CL::Images;using namespace CL::Graphics;

    ..........

    Image brain;bool loaded = load_INR(brain,"orig.inr");if(!loaded) return;

    7 Classification d’objets par Kernel PCA

    7.1 Kernel PCA

    FIG. 7 – Experience .

    7.2 Introduction

    L’analyse en composantes principales (ACP) est un algorithme classique de statistique multivariée, qui dé-termine un système de coordonnées orthogonales capturant au mieux la variance d’un nuage de points de

  • de notre masse. Ce problème est un problème aux valeurs et vecteurs propres comme nous allons voir tout desuite.

    Revenons au problème général. Soit Xk ∈

  • où d(., .) est la distance euclidienne :‖x − y‖. L’utilisation du kernel trick et du théorème du représentant quispécifie que les vecteurs propres, solutions de notre problème, appartiennent au sous-espace définie par lesvecteurs Φ(x1) · · ·Φ(xn) permet de récrire ce problème aux valeurs propres en termes de produits scalaires〈Φ(xi),Φ(xj)〉H et donc de la matrice K. On trouve donc un problème aux valeurs propres dual

    nλα = Kα (14)

    Sous la condition de normalisation λk〈αk · αk〉 = 1 les vecteurs propres de la matrice de covariance Ĉ secalculent ainsi : uk = 1λkαk

    La projection d’un nouveau point x sur le k-ième vecteur propres écrit en fonction de notre fonction noyauet de la base dans le Feature space, les α.

    βk =n∑i=1

    αki (Φ(xi) · Φ(x))uk =K∑i=1

    αki k(xi,x) (15)

    En fait, avant de calculer la PCA il faut centrer les données dans le Feature space. Comme nous connaissonspas l’application Φ nous pouvons pas calculer explicitement la moyenne. Il faut alors se servir du Kernel trick.Soit m = 1n

    ∑n1 Φ(xi) on écrit maintenant :

    KCi,j = 〈Φ(xi)−m,Φ(xj)−m〉H (16)= 〈Φ(xi),Φ(xj)〉H − 〈m,Φ(xi) + Φ(xj)〉H + 〈m,m〉H (17)

    = 〈Φ(xi),Φ(xj)〉H −1n

    n∑k=1

    〈Φ(xk),Φ(xi) + Φ(xj)〉H +1n2

    n∑k=1

    n∑l=1

    〈Φ(xk),Φ(xl)〉H (18)

    = Ki,j −1n

    n∑k=1

    (Ki,k +Kj,k) +1n2

    n∑k=1

    n∑l=1

    Kk,l (19)

    ce qui peut s’écrire sous la forme matricielle suivante KC = K −HK −KH + HKH = (Id −H)K(Id −H),avec Hi,j = 1n pour tout (i, j).

    Résumons l’algorithme de Kernel PCA :– Construire la matrice Ki,j = (k(xi,xj)) de taille n× n.– Soustraire la moyenne 1n

    ∑n1 Φ(xi) de tous les points, c’est dire calculer la matrice K

    C á partir de lamatrice K de la manière suivante : KC = (Id−H)K(Id−H).

    – Puis calculer une décomposition en vecteurs propres de la matrice KC

    – Normaliser les vecteurs propres de la matrice KC - λ12k α

    k

    – Calculer des projectionsTravail demandé :

    1. Coder Kernel PCA avec toutes les fonctionalités requises (projection d’un nouveau point, etc.)

    2. Faire différentes expériences et visualisations sur des données synthétiques et réelles.

    3. Comparer à ACP

    4. Tester différentes fonctions pour le noyau et comparez les résultats.

    7.5 Pour aller plus loin

    Vous pouvez également implémenter différentes méthodes pour le calcul de la preimage d’un point dansl’espace Feature. Ainsi vous pouvez visualiser les composantes principales dans le cas de la Kernel ACP.

    7.6 Références

    1. http://en.wikipedia.org/wiki/Karhunen-Loève_transform

    2. S. Mika, B. Scholkopf, A. J. Smola, K.-R.Muller, M. Scholz,and G. Ratsch. Kernel PCA and denoising infeature spaces. In M. S. Kearns, S. A. Solla, and D. A. Cohn, editors, Advances in Neural InformationProcessing Systems 11. MIT Press, 1999.

    3. J. T. Kwok and I.W. Tsang. The pre-image problem in kernelmethods. IEEE Transaction in Neural Net-work, 15(6) :15171525, 2004.

    4. S. Dambreville, Y. Rathi, and A. Tannenbeau. Statistical shape analysis using kernel pca. IST/SPIE Sym-posium on Electronic Imaging, 2006.

    10

    http://en.wikipedia.org/wiki/Karhunen-Lo �ve_transform

  • FIG. 8 – Worms : un exemple de niveau

    8 Worms

    8.1 Principe du jeu

    Worms est un jeu à 2 joueurs dans lequel, dans un niveau 2D entièrement destructible, chaque joueurcontrôle une équipe de 4 vaillants vers de terre de combat, ayant pour objectif de réduire à néant les vers del’équipe adverse.

    A tour de rôle, chaque joueur dirige un ver de son équipe. Pendant son temps de jeu, il peut déplacer etfaire tirer son personnage, avec une arme choisie dans un large panel : bazooka, grenade, mine, fusil de chasse,banane, mouton,. . .

    8.2 Objectif

    Le but du projet est de créer un jeu se rapprochant le plus de Worms, avec au minimum :– La gestion d’une équipe de 4 vers par joueur ;– La gestion des déplacements des vers ;– Une gestion du temps limité ;– Une génération aléatoire des terrains, qui seront destructibles avec les impacts des armes. Ces terrains

    seront ouverts (pas de cavité) ;– Au minimum 3 armes différentes, dont une à tirs balistiques (bazooka).En plus, éventuellement :– Jeu à 3 ou 4 joueurs ;– Gestion du vent, influençant les directions des tirs balistiques et les déplacements des vers ;– Apparition de bonus aléatoires (points de vie en plus, munitions,. . . ) ;– Terrain fermé ou comportant des cavités ;– Ajout d’armes diverses. Le jeu original devrait vous donner pas mal d’idées en cas de panne !Comme pour les autres jeux proposés, il n’est pas nécessaire de passer 1 mois à faire les graphismes, ce

    n’est pas le but du projet et certainement ce qu’il faut faire en premier !

    9 Mario

    Le célèbre plombier de Nintendo est de retour ! ! ! Le but du projet est de créer un jeu se rapprochant le pluspossible du jeu de plateforme (celui en 2D !), avec :

    1. à faire au minimum :– un Mario qui se déplace, saute, et tire des boules de feu sur ses ennemis.– un écran qui défile.– des ennemis à éviter ou à tuer (avec les boules de feu).

    2. à faire éventuellement :– certains ennemis qui bougent de manière intelligente.– un Mario qui peut courir (touche Shift ).– un Mario qui élimine ses ennemis en sautant sur leur tête.– la gestion des scores.

    11

  • Techniquement avec la CertisLib : penser aux NativeBitmaps de la CLGraphics (images à affichage rapide- voir TP#9) ainsi qu’au paramètre XOR pour dessiner et effacer des images efficacement.

    10 Frozen bubble

    FIG. 9 – Frozen Bubble : quelques phases de jeu

    10.1 But du jeu

    Dégommer toutes les boules collées au plafond avant d’être gelé à leur contact.

    10.2 Principe

    Le joueur est muni d’un canon qu’il dirige et commande au clavier. Le canon est tourné vers le haut et peuttourner sur une amplitude de 170 degrés environ. Il peut tirer des boules :

    – une par une– dans un temps limite imparti par boule (au bout duquel la boule part dans la direction actuelle du canon)– d’une couleur arbitraire.

    Le joueur sait la couleur de la boule qu’il doit tirer et de la suivante.Le plafond descend d’un cran tous les N(=9) tirs. Le joueur a perdu quand une balle au moins rentre dans

    le sol.Une boule peut avoir six voisines - dès qu’elles se touchent, elles se collent.

    10.3 A faire au minimum

    1. disposition des boules

    2. commande du canon

    3. arrivée des boules, dégommage

    4. fin du jeu

    10.4 A faire éventuellement

    1. temps limite pour le tir

    2. gestion du plafond

    3. gestion des niveaux

    4. difficulté supplémentaire : lancement groupé de balles incontrôlables de temps en temps.

    12

    Stéréo, Carte de Disparité et Reconstruction 3dIntroductionMise en correspondanceVisualisation 3DRectificationMatrice fondamentaleVotre visage

    Smart BlendingRay TracingIntroductionPrincipeA faire au minimumExtensions possiblesQuelques liens en plus

    Reconnaissance d'objetsMéthodeIdentification des points d'intérêtReconnaissance d'objets

    Liens utiles

    WatermarkingIntroductionPrincipeDescription de la DCTTravail demandéDonnées

    Segmentation d'images médicalesDescription du travail demandéMorphologie mathématiqueSegmentation préciseAlgorithme de Graph-CutsDonnées

    Classification d'objets par Kernel PCAKernel PCAIntroductionAnalyse en Composantes PrincipalesKernel Principal Component AnalysisPour aller plus loinRéférences

    WormsPrincipe du jeuObjectif

    MarioFrozen bubbleBut du jeuPrincipeA faire au minimumA faire éventuellement