Commit initial

This commit is contained in:
Thomas FORGIONE 2015-01-20 10:24:55 +01:00
commit b24234db18
4 changed files with 231 additions and 0 deletions

142
Charges/cahier.mdown Normal file
View File

@ -0,0 +1,142 @@
# Cahier des charges
## Description du besoin
Dans le cadre du projet long de 3ème année et en étroite collaboration avec
Bastien Durix dont la thèse porte sur le sujet de l'extraction de squelettes,
notre rôle est de fournir un pipeline complet allant partant d'un ensemble
d'images en entrée dont on segmente les contours. On extrait ensuite le
squelette. En parallèle, on apparie les points. Une fois ces deux premières
étapes faites, on cherche à habiller et enfin à animer le squelette ainsi
habillé en définissant des points de rotation.
Nous définissons ici un cahier des charges aussi précis que possible : dans un
premier temps, nous spécifions le besoin, puis nous dressons une liste
d'exigences.
## Livrables attendus et dates de livraison souhaitées
On s'appliquera à livrer une archive contenant :
- une documentation détaillée
- les codes sources : une partie calibrage et mise en correspondance dont la
date de livraison espérée est prévue pour le 6 février, puis une partie
habillage et animation dont la date de livraison est fixée au 13 mars
- une formation au C++ 11
## Fournitures du client
Le client s'engage à fournir les éléments suivants :
- les programmes réalisant l'extraction de squelette
- les formules mathématiques permettant l'habillage du squelette
- les références aux articles sur lesquels s'appuyer pour l'animation
## Contraintes techniques imposées
Les contraintes techniques sont les suivantes :
- le langage de programmation sera le C++
- il est suggéré de s'appuyer sur la librairie OpenCV
- l'utilitaire de compilation suggéré est CMake
- les librairies utilisées doivent toutes être portables entre Windows et
Linux
## Contraintes de gestion de projet et de suivi qualité
Les contraintes de gestion de projet sont les suivantes :
- la programmation sera effectuée par pair programming
- au moins une réunion par semaine sera effectuée avec le client
- une réunion par semaine est programmée chaque jeudi après-midi de 15h30 à
16h30 avec l'industrielle
## Organisation client
Au moins une réunion par semaine sera effectuée avec le client, deux en début
de projet pour la rédaction du cahier des charges.
# Gestion des risques
## Tableau des risques
Id | Description | Cause du risque | Proba(1-5) | Conséquence | Gravité(1-5) | Actions préventives | Actions correctives | Etat du risque
-|-|-|-|-|-|-|-
1|Mauvaise estimation du temps|Sous-estimation de la difficulté du problème|3|Livraison en retard|4|Prendre de la marge sur le planning, nommer un responsable de l'avancement des différentes tâches|Augmenter la charge de travail, revoir le planning|Ouvert
2|L'autre groupe ne livre pas à temps|Sous-estimation de la difficulté de leur problème, augmentation de la charge de travail au dernier moment|2|Retard pour les tests de la partie mise en 3D du squelette|3|Envisager une autre méthode pour pouvoir tester sur des cas simples|Implémenter soi-même une méthode de segmentation plus simple se basant sur un simple seuil|Ouvert
3|L'autre groupe ne livre pas les bonnes sorties|Mauvaise compréhension des termes du sujet|3|Les tests ne fonctionneront pas correctement|1|Se mettre d'accord sur le format|Développement d'une fonction de transition|Ouvert
4|Les binaires fournis par le client ne sont pas compatibles|Complexité des systèmes|2|On ne peut pas continuer le pipeline|3|Discuter avec le client à propos du binaire fourni|Emuler le système permettant d'utiliser les binaires|Ouvert
5|L'entente au sein du groupe est fragile|Différentes habitudes de gestion de projet, de programmation|1|Tensions, ambiance accablante, stress intense|5|Nommer un responsable de l'intégration|Organiser une médiation entre les deux partis|Ouvert
6|L'entente avec l'autre groupe est périlleuse|Le découpage un peu bancal du projet pourrait amener des tensions|2|Difficultés à gérer les parties communes|3|Apporter une offrande en gage de bonne entente|Faire des compromis|Ouvert
7|L'un des membres est absent pendant une période donnée|Maladie, évènement|5|Adapter la répartition|1|Mettre en place des solutions de télétravail|Adaptation du planning|Ouvert
8|Production de code non fiable, non maintenable et non lisible|Manque de maîtrise des technologies utilisées|4|Pertes de temps, mauvaise qualité, devoir refaire des programmes|3|Formation au C++ par un expert technique|Appel de l'expert|Ouvert
9|Besoin d'accéder à une ressource supprimée|Utilisation d'une commande de suppression, crash du matériel|2|Pertes de temps, devoir refaire des programmes|5|Utiliser git|Utilisation de techniques de récupération de fichiers, longues et compliquées|Ouvert
## Spécifications
### Partie appariement
- En entrée : $n$ images d'un même objet photographiées selon $n$ points de vue
différents sur un fond unis de même couleur (vert, rouge ou bleu) dont une
sera l'image de référence. Pour un même objet, les conditions de prises de
vue (éclairage, appareil photo, position de l'objet) doivent être les mêmes :
entre deux photos, l'objet ne doit pas bouger, c'est l'utilisateur qui se
déplace. Si le temps le permet, on pourra envisager de suspendre l'objet pour
les prises de vue. On définira une résolution minimale. Un marqueur (croix)
servant à calibrer par la suite la caméra sera visible sur le papier. On
définira précisément la façon dont ces marqueurs seront présents : un damier
risque de géner la segmentation. Des croix espacées régulièrement seraient
plus discrètes mais pourraient aussi géner. On se demande s'il serait
possible de n'afficher que 4 croix pour définir 4 coins.
- Traitement :
1. Appliquer SIFT sur chaque photo pour récupérer un ensemble de points
d'intérêt par photo. Les paramètres de l'algorithme SIFT seront à définir.
1. Définir les paramètres intrinsèques de la caméra sous la forme d'un fichier
au format xml (matK).
1. Définir les paramètres extrinsèques de la caméra à l'aide des marqueurs :
les détecter puis calculer l'homographie.
1. Appariement des points d'intérêt.
- En sortie : Des paires de correspondances de points d'intérêt entre l'image
de référence et une autre image.
### Partie habillage
- En entrée : un squelette 3D (B-Splines) et une fonction de rayon.
- Traitement : Utilise les surfaces canales.
- En sortie : Un maillage 3D (points et faces).
### Partie animation
- En entrée : le maillage 3D, les points d'articulations sur le squelette
et leur degré de liberté associé.
- Traitement: à élucider ?
- En sortie : l'affichage d'une animation.
### Définition des tâches
||Détection des points d'intérêts|Appariement|Calibrage interne de la caméra|Calibrage externe de la caméra|Reconstruction 3D du squelette|Habillage|Animation |
|-|-|-|-|-|
| Conception |
| Rédaction de la documentation |
| Préparation des tests |
| Implémentation |
### Matrice de Rasci
||Service qualité|Service multimédia|Client|Régine|
|-|:-:|:-:|:-:|:-:|
|Détection des points d'intérêts|A|R|I/C|I|
|Appariement|A|R|I/C|I|
|Calibrage interne de la caméra|A|R|I/C|I|
|Calibrage externe de la caméra|A|R|I/C|I|
|Reconstruction 3D du squelette|A|R|I/C|I|
|Habillage|A|R|I/C|I|
|Animation|A|R|I/C|I|
### Exigences
1. L'algorithme doit pouvoir évaluer les paramètres extrinsèques à partir des
marqueurs.
1. L'algorithme doit pouvoir évaluer les paramètres intrinsèques de la caméra.

1
README.md Normal file
View File

@ -0,0 +1 @@
# Projet long

25
Rapports/.gitignore vendored Normal file
View File

@ -0,0 +1,25 @@
*.tex
*.aux
*.glo
*.idx
*.log
*.toc
*.ist
*.acn
*.acr
*.alg
*.bbl
*.blg
*.dvi
*.glg
*.gls
*.ilg
*.ind
*.lof
*.lot
*.maf
*.mtc
*.mtc1
*.out
*.synctex.gz
*.pdf

View File

@ -0,0 +1,63 @@
Compte-rendu de la réunion 1 du 15 janvier 2015
==========
A l'approche du démarrage du projet, cette première réunion a été l'occasion :
* dans un premier temps, **avec les deux groupes réunis**, de rencontrer notre superviseur industriel, Régine Nigris, d'Airbus.
* dans un second temps, **au sein de notre groupe**, de répondre à quelques questions fondamentales indispensables au bon démarrage du projet.
##Rencontre avec notre superviseur industriel
**Régine Nigris** (_[regine.nigris@airbus.com](regine.nigris@airbus.com)_), qui travaille chez Airbus en temps que project manager, supervisera les aspects gestion de projet et gestion de la qualité. Comme elle nous l'a rappelé, son rôle n'est pas de regarder les aspects techniques ; c'est au client et à nous-mêmes de gérer ces derniers.
Un premier tour de table a permis à chacun de **se présenter** brièvement et de **donner son rôle au sein du projet**. L'ensemble des dix membres constituant les deux groupes était présent.
###Les réunions à venir
Nous avons ensuite convenu d'un créneau horaire fixe de réunion pour les semaines à venir :
* exceptionnellement, **mercredi 21 janvier de 15h30 à 16h30 en B122** (une heure par groupe, notre groupe passant en deuxième).
* puis à partir du 5 février, tous les **jeudis de 15h30 à 16h30 en salle A201**.
Nous avons choisi de ne **pas travailler la semaine du 26 au 30 janvier**.
Au cours des prochaines réunions, il nous est conseillé de venir avec un rapport présentant les tâches effectuées dans la semaine et les difficultés rencontrées. **L'auteur du rapport de la semaine sera en charge d'animer la réunion** et de présenter le travail effectué. Ce rôle tournera chaque semaine.
###Le rapport individuel
Un rapport individuel devra être remis (en anglais ou en français) **mi-février**. Il devra présenter de manière précise les apports de la gestion de projet dans le cadre de notre projet long. Une version numérique de ce qui est attendu nous sera envoyée. L'ensemble des autres documents que l'on devra remettre étant en anglais, il nous est conseillé de rédiger ce rapport individuel en anglais également.
###Les tâches à effectuer à court terme
Nous avons ensuite donner une liste de tâches à effectuer en début de projet :
* Le **cahier des charges** : définir clairement le besoin lors de la prochaine réunion avec le client.
* Un premier **planning** : assez vague pour le moment, il changera très probablement par la suite, mais l'on peut déjà y incorporer les réunions.
* Définir les **rôles** dans l'équipe.
* Initialiser la **table des risques** et des **actions préventives** pour les limites, ainsi que des **actions correctives** si l'un des risques se produit.
* Réfléchir au **WBS**.
###Concernant la répartition des parties 1 et 2
Après le départ de l'industrielle, les deux groupes ayant a priori plutôt des attraits pour la partie de segmentation, une discussion a eu lieu pour décider auquel il serait attribué. **Nous avons finalement cédé la partie 1** (segmentation du contour et de la normale) à l'autre groupe et **nous traiterons donc la partie 2** (placement du squelette).
##Réunion de groupe
Une fois la réunion avec les deux groupes terminée, nous sommes restés afin de mener une première réunion entre membres du groupe. L'objectif a été de déterminer :
* un lieu de travail : **chez Thomas** dans un premier temps, les salles de TP risquant d'être bruyantes et remplies en période de projet long.
* un **premier planning** de la première semaine pour fixer les heures de travail et placer les réunions avec le client et avec l'industrielle.
* un maximum d'éléments de spécification au client pour pouvoir formuler un cahier des charges aussi complet, détaillé et précis que possible.
* Qu'est-ce qui nous est **fourni** ?
* Quelles **entrées** ? Combien de photos en entrée ?
* Qu'y a-t-il en **sortie de la première partie** (c'est-à-dire en entrée de la deuxième partie) ?
* Sous quel environnement le produit final sera-t-il utilisé ? (**Windows ou Linux** ?)
* Y a-t-il des **méthodes particulières à utiliser** et, le cas échéant, quels noms portent-elles ? Y a-t-il des **articles à consulter** ?
* Y a-t-il des **IHM** à développer et éventuellement lesquelles ? Ou tout en ligne de commande ?
* A quelle date pourront-ils nous donner les **modalités exactes des parties 3 et 4** (habillage et animation) ?
* Comment est-on censé s'y prendre pour l'**appariement** ?
* Faut-il cliquer pour guider la **recherche de squelette** ? Comment s'intègre l'**algorithme de Ma** avec le squelette approximatif défini par l'utilisateur ?
* Quelle **documentation** est attendue ?
_Rédigé par Thierry Malon_