Home

Rapport - Tran Franck

image

Contents

1. la deuxi me m thode consiste rechercher le plus grand pivot par ligne plut t que par colonne on recherche donc le pivot d fini par max lt lt lal l inconv nient majeur de cette m thode est qu elle ne conserve pas le syst me initial mais qu il faut obligatoirement tenir compte d un r agencement des solutions cette m thode est donc plus compliqu e que la pr c dente puisque le programme doit m moriser toute la s quence de r agencements successifs afin de pouvoir remettre les solutions dans le bon ordre Projet Mosa que IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT la troisi me m thode consiste mixer les deux m thodes pr c dentes et donc chercher le pivot d fini par max lt lt lail a l la recherche se fait donc sur lignes et colonnes cette m thode a g n ralement les m mes inconv nients que la pr c dente C est cette derni re m thode que nous avons choisi d impl menter dans notre programme c est le pivot de Gauss total MULTIPLICATION DE MATRICES colonne k dij Dir ligne i gt aa aj 4 xb ba b Cp lt Hgnei a nj FR Dr colonne k A x B C Ligne 1 lt i lt m 1 lt j lt n 1 lt i lt m Colonne 1 lt j lt n 1 lt kK lt p 1 lt kK lt p L l ment Cik de la colonne k et de la ligne i de la matrice C est la somme des n produits ai1 DiK din DK des l ments de la ligne i de la matrice par des l ments du m me rang de la colon
2. gt data 0 res gt y E matProj gt data 1 retourner res Projet Mosa que IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT HOMOGRAPHIE INVERSE void homographielnverse image img image img3 image imgRes Matrice H12 Matrice H32 int Xmin int Ymin int i j Matrice invH12 Matrice invH32 pixel pix RVB pixColor allouerTaillelmageFinale pixcolor invH12 inverserMat H12 invH32 inverserMat H32 pour i allant de 0 imgRes gt height avec un pas de 1 pour j allant de 0 imgRes gt width avec un pas de 1 pix homographiePoint invH12 j Xmin i Ymin si pix gt x gt 0 amp amp pix gt x lt img1 gt width amp amp pix gt y gt 0 amp amp pix gt y lt img1 gt height pixColor lirePixel img1 pix gt x pix gt y ecrirePixel imgRes j i pixColor fin si pix homographiePoint invH32 j Xmin i Ymin si pix gt x gt 0 amp amp pix gt x lt img1 gt width amp amp pix gt y gt 0 amp amp pix gt y lt img1 gt height pixColor lirePixel img3 pix gt x pix gt y ecrirePixel imgRes j i pixColor fin si fin pour fin pour fin homographielnverse C Option L ANTI ALIASING L anti aliasing a pour but de corriger les probl mes d effet escalier En effet lors du calcul de la position du pixel projet on est oblig de caster ce dernier en valeur enti re afin de l ins rer une position sp cifique
3. matrice a et b dans des nouvelles matrices A et B car elles vont tre modifier Puis nous parcourons sous matrice par sous matrice la matrice A en recherchant le pivot de chaque sous matrice courante par l appel de la fonction trouvePivot La fonction de recherche du pivot parcoure une matrice partir d une ligne et d une colonne On utilise une variable max pour stocker la valeur maximale trouv e Lorsqu on trouve un l ment dont la valeur absolue est sup rieure celle actuellement sauvegard e il la remplace et x et y prennent alors les nouvelles coordonn es Les coordonn es sont directement modifi es en m moire par les pointeurs x et y pass s en param tres Par x et y nous connaissons les coordonn es du pivot on compare ces coordonn es avec celles du de l l ment 0 0 c est dire pivot pivot de notre sous matrice Si elles sont diff rentes c est que le pivot de ne trouve pas sur la m me ligne pour y et ou sur la m me colonne pour x Il faut donc les permuter Si pivot est diff rent de y nous permutons les lignes d indices pivot et y des matrice A et B Si pivot est diff rent de x nous permutons les colonnes num ro pivot et x ainsi que les lignes pivot et x de la matrice X Puis vient la triangularisation progressive de la matrice A chaque passage dans la boucle une nouvelle sous matrice est trait e On cherche pour chaque ligne apr s celle du pivot le coefficient qui va serv
4. qui cr e en m moire l image aux dimensions sp cifi es et nitlmgNoir qui colorie l image en noir en mettant toutes les composantes couleur des pixels de l image 0 Nous projetons l image 2 sans aucun traitement sur le nouveau rep re Nous parcourons l image 2 et crivons dans la nouvelle image tous les pixels en soustrayant la valeur minimale en abscisse la valeur du pixel horizontal courant et en soustrayant la valeur minimale en ordonn e la valeur du pixel vertical Ceci nous permet de replacer l image 2 au centre de l image finale Les valeurs minimales en hauteur et en largeur tant n gatives cela permet de d caler l image vers la droite Ensuite nous devons projeter les images 1 et 3 sur le rep re gr ce projectionlmgDir Nous agissons de la m me fa on que pour l image Seul ajout la projection de chaque pixel via la fonction homographiePoint d crite plus haut Cette fonction est elle aussi appel e 2 fois chacune avec une matrice homographique correspondant l image projet e Les r sultats par homographie simple sont de mani re g n ral peut convaincant du fait de la cr ation d une image plus grande que celles de d part les pixels de l image finale non pas toujours une correspondance avec ceux des images de d part sauf l image de r f rence Projet Mosa que IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT La solution est d utiliser l homographie inverse et donc de calc
5. Gr ce aux 2 listes le programme va pouvoir cr er la matrice amp B puis calculer les 2 matrices H d homographie La fonction calcMat cr e les matrice et B manuellement puis d termine la m thode utiliser pour calculer la matrice H pivot de gauss si 4 paires de points sont cliqu es pseudo inverse si plus Pour la description du pivot de gauss se r f rer au chapitre concern plus haut Un syst me est dit surd termin d s lors que pour une inconnue plusieurs solutions sont possibles Par exemple 2a 5 a 3 La m thode de la pseudo inverse permet de r soudre le syst me surd termin A X B o X est l inconnu gr ce la formule de l nonc Nous proc dons par tapes en utilisant les fonctions de transposition de matrice transpoMat inversion de matrice invMat et multiplication de matrices multiplier Mat Le vecteur renvoy est de norme 8 quil convient de convertir gr ce convVectToMat3 3 en matrice 3 3 sachant que le dernier et 9 l ment vaut 1 Nous utilisons le fait qu une matrice en m moire est repr sent e comme un vecteur c est dire de mani re lin aire pour utiliser la fonction memcpy Ces op rations sont r p t es pour les 2 matrices d h homographie Nous allouons en m moire la place n cessaire pour les 2 images r sultats afficher imgRes amp imgReslnv Il s agit de trouver les coordonn es extr mes de l image finale les 4 coins de l image Les coo
6. IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT Projet MOSAIQUE Cr ation d image panoramique Math matiques pour l Informatique Enseignent Monsieur Nozick Institut Gaspard Monge Institut Charles Cros Universit de Marne la Vall e p le Val d Europe IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT SOMMAIRE INTRODUCTION p 02 Math matiques Explication des m thodes math matiques pivot de Gauss total p 03 multiplication de matrices p 04 matrice transpos e p 04 inversion de matrices p 04 II Pseudo code et explication des principaux algorithmes Algorithmes math matiques Pivot de gaUSS p 05 Syst mes surd termin sS p 07 Homographies p 07 Homographie Directe p 09 Homographie Inverse p 10 Option Anti aliasing p 10 III Structures de donn es Matrice p 11 P
7. as de 1 coeff lireEltMat B colB ligne pour colonne allant de ligne 1 A gt sizeX avec un pas de 1 coeff lireEltMat A colonne ligne lireEltMat xin colB lireEMat X 0 colonne 2 semestre 2004 ecrireEltMat xin colB lireEltMat X 0 ligne coeff lireEltMat Aligne ligne Projet Mosa que IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT PSEUDO INVERSE syst me surd termin Matrice pseudolnvMat Matrice A Matrice B Matrice matlnv Matrice matPseudo Matrice tmp Matrice X tmp multiplier Mat transpos e A A matinv inverserMat tmp matPseudo multiplier Mat matinv transpos eMat A X multiplier Mat matPseudo B retourner X B Homographies Voici tout d abord une explication du d roulement du programme pour le calcul des homographies Viendra ensuite le pseudo code des fonctions d homographie L utilisateur d finie les points de corr lation entre l image 1 et 2 puis 2 et 3 Il en r sulte deux listes correlation 12 et correlation 32 Lorsqu il appuie sur la touche Entr e le traitement homographique peut commencer Le programme r cup re les 2 listes fonction recupListe il v rifie leur validit par la fonction nbClick 2 appels de fonction un pour chaque liste Si le nombre de points cliqu s entre la premi re image et la seconde diff re ou s il y a moins de 4 points cliqu s dans une image le programme s arr te en sp cifiant l erreur
8. de l image r sultat Cette fa on de faire n est pas tr s juste car on ne prend pas en compte cette diff rence de valeurs lors du caste L option anti aliasing permet de faire un calcul pond r de la valeur du pixel de couleurs avec les quatre pixels qui l entourent en ayant un poids sp cifique de chacun d entre eux Avec alpha la valeur ente O et 1 r sultat de la soustraction de la valeur du pixel sur l image finale par sa valeur enti re calcul r alis lors de l homographie et seulement si l option de lanti aliasing a est utilis RVB antiAliasing double alpha double beta PixDouble pixDouble int i int j image img RVB poids colori color2 color3 colord color1 lirePixel img E pixDouble gt x E pixDouble gt y 1 color2 lirePixel img E pixDouble gt x E pixDouble gt y 1 Projet Mosa que 10 IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT color3 lirePixel img E pixDouble gt x 1 E pixDouble gt y color4 lirePixel img E pixDouble gt x 1 E pixDouble gt y si alpha lt 0 5 amp amp beta lt 0 5 poids gt r 0 5 alpha color3 gt r 1 alpha color4 gt r 0 5 beta color1 gt r 1 beta color2 gt r poids gt v 0 5 alpha color3 gt v 1 alpha color4 gt v 0 5 beta color1 gt v 1 beta color2 gt v poids gt b 0 5 alpha color3 gt b 1 alpha color4 gt b 0 5 beta color1 gt b 1 beta color2 gt b
9. ent sur le disque Anti aliasing en option Des tests de la biblioth que math matique fonction inversion de matrice et pivot de Gauss total Inacheve La gestion de la colorim trie n a pas t impl ment e faute de temps Nous en pr senterons ici les principes La projection d une image sur une autre n est pas parfaite on remarque le contour de l image superpos e une autre Ceci est du la pr sence d un l ger halo aux extr mit s des photographies La colorim trie vient corriger ce d faut Son principe de base est de calculer une moyenne entre la couleur du pixel de l image de base et la couleur du pixel projeter par dessus Chaque image se voit attribuer un poids pour chaque pixel qui la compose allant de 0 1 Le pixel du centre de l image vaut 1 celui son extr mit vaut 0 Cela donne l aspect d u cercle concentrique autour du centre de l image On parcourt donc les parties communes de l image de base et de celle projeter Pour chaque pixel on applique la formule e x2 sigma e y sigma de m me pour O x et y sont les coordonn es du pixel courant et sigma se calculant par la formule Sigma V L2 4InD O L est la largeur de l image ou sa hauteur dans le cas du calcul avec y et D la distance entre le centre de l image et le pixel courant Pour conna tre la valeur du pixel il suffit de faire un rapport entre les coefficients des 2 pixels obtenus pour obten
10. ir calculer la nouvelle sous matrice On met 0 la valeur qui se trouve juste en dessous le pivot Nous calculons le reste de la ligne de la matrice A et pour la matrice B gr ce la formule l ment de la colonne courante l ment de la ligne du pivot et de la colonne courante coeff Nous terminons la boucle par un test permettant d en sortir au cas ou la valeur absolue du dernier pivot serait inf rieur EPS EPS tant une variable definie en d but de programme 10 8 ce qui provoquerait des erreurs dans le programme Projet Mosa que IMAC 1 Franck TRAN Laurent BARBAT Pseudo Code pivotGaussTot Matrice a Matrice b Matrice xin int pivot indpivot ligne colonne int x y int i int colB double coeff JAllouer les matrices interm diaires allouerMat a gt sizeX a gt sizeY B allouerMat b gt sizeX b gt sizeY X allouerMat 1 a gt sizeY initialiserMatrice xin Remplir les indices de X de 0 sizeY recopierMatrice a dans recopierMatrice b dans B pour pivot allant de 0 A gt size avec un pas de 1 trouverPivot A pivot pivot amp x amp y si pivot y permuterLignes A pivot y permuterLignes B pivot y si pivot x permuterColonnes A pivot x permuterLignes X pivot x Triangulariser A ICalcul en remontant pour colB allant de 0 B gt sizeX avec un pas de 1 pour ligne allant de A gt sizeY 1 0 avec un p
11. ir 1 en les additionnant Par exemple si on obtient une valeur de 0 3 pour le pixel de la premi re image et 0 5 pour le second RVB na 0 3 0 8 RVBimg1 0 5 0 8 RVBimg2 Projet Mosa que _ 14 IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT CONCLUSION Ce projet nous a permis d approcher des algorithmes de transformation d image par l utilisation de calculs matriciels et du pivot de Gauss ainsi que de nous familiariser avec l interface Glut OpenGL Ce fut donc un projet concret qu il est possible de replacer dans un contexte conomique En effet la cr ation d images panoramiques est un march part enti re ouvert depuis quelques ann es Ces images nous sont devenues ordinaires sans que nous nous demandions quel type d appareil pouvait produire ces images angle de vue si large Des appareils existent mais ils co tent chers Les algorithmes tels que celui que nous venons de programmer permettent de produire des panorama tout fait cr dibles avec des appareils photo angle de vue basique d autant plus que les m thodes que nous avons d couvertes sont certainement les bases d algorithmes plus pouss s Des applications commerciales de ce type d image se sont rapidement d velopp es sur internet notamment Les h tels et agences de voyages agences immobili res y trouv rent un int r t certain gr ce aux images 360 Une nouvelle volution est en passe de se d mocratiser gr ce aux logicie
12. isation de glut Notre programme permet d afficher les images une fois le calcul de lhomographie effectu La touche s permet de sauvegarder les images Ainsi si l utilisateur n est pas satisfait du r sultat aucune image n est cr sur le disque dur il peut nouveau recommencer les op rations DIFFICULTES Cependant nous n avons pas r ussi fermer les fen tres r sultats sans que toutes les autres fen tres ne se ferment galement Ceci est du la notion de contexte OpenGL signifiant que toutes les fen tres ouvertes sous un m me environnement sont en quelque sorte d pendantes les unes des autres Lorsque l on ferme une fen tre par la croix en haut droite par exemple toues les autres fen tres de l environnement de celle ferment galement La solution viendrait probablement de l utilisation de fen tres principales et de sous fen tres et donc de niveau de hi rarchie Lors du lancement du programme une fen tre principale cach e glutCreateWindow de la taille de l cran glutHideWindow puis les fen tres cr es s par ment via glutCreateSubWindow V Manuel d utilisation Usage nom _executable h a testinvMat testGauss imagel ppm image2 ppm image3 ppm h ce message a Gestion de l anti aliasing testinvMat Teste la fonction d inversion de matrice avec une matrice al atoire testGauss Teste la fonction de pivot de Gauss total avec des matrices al atoires Utilisation du progra
13. ixel pixDouble RVB Image IV IHM OpenGL Description p 12 Difficult s V Manuel d utilisation p 12 VI Exemple d utilisation p 13 VII Difficult s rencontr es p 13 VIII Compte rendu p 14 CONCLUSION p 15 ANNEXES p 16 Projet Mosa que IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT INTRODUCTION Ce projet de Math matique pour l Informatique a t r alis dans le cadre de notre premi re ann e de formation d Ing nieur IMAC Il nous arrive parfois de prendre plusieurs photographies la suite pour effectuer un panorama Cependant le r sultat n est la plupart du temps celui escompt les raccords entre les photos ne collent pas Le projet Mosa que est un programme permettant de corriger ces d fauts gr ce l utilisation du pivot de Gauss et l application d homographies aux images Ce rapport a pour but de donner une vue d ensemble de notre projet il contient aussi bien l explica
14. l du u dh b B es X b F La F4 un p A e e A x b Fi 2 HF i H j par un syst me triangulaire quivalent de la forme My dy An b 0 a X b PER AT 0 e O a x D Pour liminer x1 de la premi re quation on divise par le coefficient a11 de la matrice ce coefficient s appelle le pivot Il est clairement indispensable que ce coefficient ne soit pas nul N anmoins ce crit re parfaitement acceptable math matiquement n est pas suffisant num riquement En effet ce coefficient peut tre tr s faible entra nant ainsi l apparition de tr s grandes valeurs et donc de grands risques d impr cisions et d erreurs num riques En fait la m thode du pivot de Gauss est rigoureuse math matiquement mais elle conduit g n ralement de nombreux calculs la m thode est donc assez sensible aux erreurs num riques en particulier pour les syst mes de grande taille Une impl mentation de cette m thode doit donc imp rativement mettre en oeuvre une strat gie de choix du pivot consistant recherche le plus grand pivot en valeur absolue On a pour cela plusieurs possibilit s la premi re m thode la plus simple consiste observer que l on peut indiff remment inverser l ordre des quations sans changer le syst me ni sa solution on recherche donc le pivot d fini par maX a et on permute les quations si n cessaire la recherche du plus grand pivot se fait donc par colonne
15. l et l affichage des images d homographie directe et inverse sont g r es s par ment La touche d permet de calculer et d afficher l image r sultat de l homographie directe De la m me fa on la touche permet d afficher l image de l homographie indirecte Si le r sultat ne convient pas l utilisateur peur r initialiser les listes en appuyant sur la ouche T ou 3 et recommencer cliquer les points pour relancer ensuite le calcul Dans ce cas la ou les images r sultats seront cach es puis r affich es et rafra chies lors de l utilisation des touches i ou q Les images sont stock es en m moire pendant l utilisation du programme Pour les sauvegarder ou la sauvegarder s il n y en a qu une de calcul e il suffit d utiliser la touche s VII Difficult s rencontr es Les principales difficult s lors de ce projet furent la cr ation de la biblioth que math matique et les notions de changement de rep re Le programme se base essentiellement sur des m thodes math matiques de calculs sur les matrices notre premier travail consiste la cr er Le pivot de Gauss total tait la fonction la plus dur impl menter nous sommes parti sur la cr ation d une fonction de pivot de Gauss partiel d abord puis l avons compl ter Malheureusement nous n avons pas trouv tout de suite comment retenir l ordre des op ration afin de restituer le syst me d quation d origine afin d effectuer sa r s
16. ls de type QuickTime VR d Apple et consorts permettant de regarder dans toutes les directions partir d un point fixe L volution du programme vers un panorama 360 et a fortiori vers un logiciel type QuickTime VR est cependant beaucoup plus complexe Projet Mosa que 15 IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT ANNEXES Voici quelques exemples de mosa que obtenue en utilisant notre programme Exemple 1 Image R sultat Projet Mosa que 16 IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT Exemple 2 Image R sultat Projet Mosa que 17 IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT Exemple 3 Image R sultat Projet Mosa que 18
17. mme 1 corr lations image image2 R initialise les listes n 3 corr lations image3 image2 R initialise les listes n Entr e pour le panorama valdo uniquement remplie directement les listes avec des points corrects d Affichage de l homographie directe i Affichage de l homographie inverse S Sauvegarde d une ou des deux images en fichiers ppm une fois le calcul effectu Projet Mosa que 12e IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT VI Exemple d utilisation L utilisateur tape sur la ligne de commande mosaique chemin acc s imagel ppm chemin acc s image2 ppm chemin acc s image3 ppm a Le programme va charger l cran les 3 images qui vont servir la reconstruction du panoramique Il appuie sur 1 pour cliquer la liste de corr lation entre la premi re et l image centrale puis 3 pour l image centrale et la troisi me Il devra cliquer le m me nombre de points entre chaque couple d image et un minimum de 4 points de corr lation sans quoi le programme affichera dans la console ce message d erreur et r initialisera les listes il suffira de taper 1 ou 3 pour reprendre l ex cution du programme Pour le panorama valdo uniquement Pour viter de cliquer manuellement les points la fameuse fonction travailAMaPlace est appel e l aide de la touche Entr e Les 2 listes seront remplies par 4 couples de points judicieusement choisis Le calcu
18. ne k de la matrice B La multiplication des matrices se fait lignes par colonnes MATRICE TRANSPOSEE On appelle transpos e d une matrice la matrice not e A obtenu partir de en changeant les lignes et les colonnes Pi P A Apg ee A ag fy dya Aag oe e Aa djy Bag e a Aa T A A d d m dm Adin mn n INVERSION DE MATRICES On dit qu une matrice A est inversible si il existe une matrice A tel que A A Id Pour obtenir la matrice A il suffit de faire une r solution de syst me d quation avec la m thode du pivot de Gauss en prenant une matrice et une matrice identit Id Projet Mosa que IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT II Pseudo code et explication des principaux algorithmes Algorithmes math matiques PIVOT DE GAUSS La recherche du pivot de Gauss s effectue en plusieurs tapes dont les principaux algorithmes se trouvent dans maths c Cette m thode permet de r soudre des quations dont le r sultat est une matrice plusieurs dimensions et pas seulement un vecteur Nous recevons en param tres les pointeurs a b et xin xin est vide il sert sauvegarder la matrice r sultat Nous utilisons une matrice X de la m me taille que xin pour garder en m moire l indice initial des lignes qui seront certainement permut es lors des recherches de pivots X nous permettra de r ordonner les l ments du vecteur r sultat Nous recopions les
19. olution Cette tape franchie nous devons tester notre biblioth que pour cela nous avons tout d abord comparer avec les r sultats donn s par le logiciel Scilab puis avons crit des fonctions de test directement dans notre programme Apr s maintes corrections et de v rification la biblioth que fonctionnait correctement L autre difficult r side dans la recherche de la taille maximale de l image et le changement de rep re dans l image de r sultat Les images que nous avons g n r es au d part sont compl tement d form es et sort la plus part du temps du cadre de l image r sultat calcul e Apr s des discussions avec d autres l ves nous nous sommes rendu compte que nous n avons pas pris en compte le changement de rep re pour tous les pixels calcul s partir de lhomographie La r solution de ce probl me fut tr s rapide Par manque de temps nous n avons pas pu impl menter toutes les options pr vues notamment la colorim trie sur les images Projet Mosa que 12 2 IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT VIII Compte Rendu Effectu Nous avons men bien le projet Mosa que dans son ensemble Ont t r alis es les diff rentes t ches pivot de Gauss total g rant les matrices au lieu de simples vecteurs r solution de syst mes surd termin s _homographie directe _homographie inverse Cr ation des images r sultantes la vol e amp enregistrem
20. rdonn es de d part sont celles de l image 2 image r f rence car elle sera projet e directement dans le nouveau rep re sans d formation Projet Mosa que IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT L op ration suivante va tre appliquer 8 fois 4 fois pour l image 1 et 4 fois pour l image 3 Chacune des 4 op rations correspond un point extr me de l image en question apr s projection sur le nouveau rep re C est donc pas pas que nous allons trouver les 4 coordonn es de l image finale Appel de la fonction homographiePoint calcule les coordonn es d un point apr s projection Cette fonction re oit la matrice d homographie les coordonn es x y d un des 4 points de l image projeter Elle cr e un vecteur de type Xx y 1 puis multiplie ce vecteur par la matrice d homographie Sont renvoy s les coordonn es x y du r sultat de l op ration S en suivent 4 tests destin s savoir si ce point ou pixel fait partie de l espace virtuel caract ris par les 4 points extr mes courants Si oui rien ne se passe sinon ses coordonn es remplacent celles de l un des 4 points de l espace Xmin Xmax Ymin Ymax sont les variables de type pixel utilis es Max hauteur largeur hauteur Smax min smin xXxmax Xmin largeur de l Image Ymax Ymin hauteur de limage A la suite de cette op ration r p t e 8 fois nous allons pouvoir cr er limage gr ce la fonction newlmage
21. rnie les coordonn es x y d un point sur l image en valeur enti re La structure pixDouble a t rajout pour permettre les calculs c cessaire lanti aliasing et donne les coordonn es d un pixel en double image ppm h La structure image contient les donn es relatives une image i e un pointeur d unsigned char pour les donn es de l image et les dimensions width amp height de l image RVB ppm h Structure utilis e pour conna tre les 3 valeurs RVB d un pixel en unsigned char List liste h Structure permettant de stocker les points de corr lation Projet Mosa que BA ie IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT IV IHM OpenGL DESCRIPTION Nous utilisons OpenGL et Glut pour g rer l affichage et l interface utilisateur Toute la gestion de l affichage se trouve dans le fichier gestGlut c Ce fichier se construit selon les sp cificit s de glut il poss de en plus des fonctions tierces les fonctions suivantes Reshape Il g re le rafra chissement de la fen tre si besoin Display g re l affichage des fen tres Keyboard I contr le du clavier MouseFunc contr le de la souris Lance appel par le main joue le r le de fonction principale Nous avons cherch cr er une interface aussi d velopp e que possible avec les connaissances que nous avions Nos recherches sur internet et l utilisation du man nous ont galement permis d apprendre un peu plus sur l util
22. sinon si alpha lt 0 5 amp amp beta gt 0 5 poids gt r 0 5 alpha color3 gt r 1 alpha color4 gt r 0 5 beta color1 gt r 1 beta color2 gt r poids gt v 0 5 alpha color3 gt v 1 alpha color4 gt v 0 5 beta color1 gt v 1 beta color2 gt v poids gt b 0 5 alpha color3 gt b 1 alpha color4 gt b 0 5 beta color1 gt b 1 beta color2 gt b sinon si alpha gt 0 5 amp amp beta gt 0 5 poids gt r 0 5 alpha color3 gt r 1 alpha color4 gt r 0 5 beta color1 gt r 1 beta color2 gt r poids gt v 0 5 alpha color3 gt v 1 alpha color4 gt v 0 5 beta color1 gt v 1 beta color2 gt v poids gt b 0 5 alpha color3 gt b 1 alpha color4 gt b 0 5 beta color1 gt b 1 beta color2 gt b sinon si alpha gt 0 5 amp amp beta lt 0 5 poids gt r 0 5 alpha color3 gt r 1 alpha color4 gt r 0 5 beta color1 gt r 1 beta color2 gt r poids gt v 0 5 alpha color3 gt v 1 alpha color4 gt v 0 5 beta color1 gt v 1 beta color2 gt v poids gt b 0 5 alpha color3 gt b 1 alpha color4 gt b 0 5 beta color1 gt b 1 beta color2 gt b retourner poids IIl Structures de donn es Matrice matrice h La structure Matrice se compose de la taille de la matrice hauteur et largeur et un pointeur de double vers les donn es de la matrice Pixel amp pixDouble liste h amp homographie h La structure pixel fou
23. tion les diff rentes m thodes math matiques abord es que des algorithmes qui ont t impl ment s dans notre programme Nous avons ajout s galement des id es d am lioration qui n ont pas t cod es car nous n avons pas eu le temps le temps de le faire Projet Mosa que IMAC 1 Franck TRAN 2 semestre 2004 Laurent BARBAT Math matique Ce projet comporte une grosse partie math matique qui se traduise par la conception d une biblioth que math matique sp cifique au besoin du projet Cette biblioth que comporte quelques op rations de base sur les matrices dont nous allons vous pr senter PIVOT DE GAUSS TOTAL Le pivot de Gauss est une m thode de r solution de syst mes d quation lin aire c est la plus simple et la plus classique De la premi re quation on exprime la premi re inconnue x1 en fonction des autres inconnues puis on substitue cette expression dans les autres quations du syst me faisant appara tre ainsi un sous syst me dans lequel x1 n intervient pas On it re le m me sch ma jusqu ce que la matrice du syst me devienne triangulaire sup rieure toute la partie inf rieure de la matrice sous la diagonale est remplie de z ros Une fois la triangularisation termin e on calcule xn puis xn 1 et ainsi de suite jusqu x1 les diff rentes solutions sont ainsi calcul es de proche en proche Le principe de triangularisation permet ainsi de transformer le syst me initia
24. uler X He partir de l image finale allou e le programme recherche une correspondance avec les 2 images de d part par la fonction homographiePoint partir des matrices d homographie invers es Si le point fait partie du cadre de l image 1 ou 3 il prend la couleur du pixel correspondant sinon il reste noir Nous affichons les 2 images finales r sultat par homographie et homographie inverse gr ce la fonction glut aficherlmgFin HOMORAPHIE DIRECTE Il fonction de projection d une image sur un nouveau plan void projectionimgDir image imgRes image img Matrice H int Xmin int Ymin int i j pixel proj RVB couleurs Pour j allant de 0 img gt height Pour i allant de 0 img gt width proj homographiePoint H i j couleurs lirePixel img i j ecrirePixel imgRes proj gt x Xmin proj gt y Ymin couleurs fin pour fin pour pixel homographiePoint Matrice H int x int y Matrice matX Matrice matPro j pixel res int i double w matX allouerMat 1 3 Points de d part ecrireEltMatrice matrice colonne ligne valeur ecrireEltMatrice matX 0 0 x ecrireEltMatrice matX 0 1 y ecrireEltMatrice matX 0 2 1 matProj multiplierMat H matX ICalculs de coordonnees 2D x w y w w w w matProj gt data 2 pour i allant de 0 2 avec un pas de 1 matProj gt datali matProj gt datafi w fin pour IStocker dans pixel res gt x E matProj

Download Pdf Manuals

image

Related Search

Related Contents

Denon ADV-M51 Speaker System User Manual  Dell One Identity Virtual Directory Server 6.1.0 User`s Reference  Wiley Mastering Autodesk Maya 2011  Telecamere a colori ad alta e media risoluzione modd. TCP  COMMON STAINS & SPILLS REMOVAL METHODS GATTISTONE  Accounts Receivable - Down To Earth Business Software  User Guide and Record Book  manual de instrucciones - Alquiler y venta de maquinaria y  Ihr Datenblatt als PDF  SikaPlast® SC  

Copyright © All rights reserved.
Failed to retrieve file