# Specifications

## Need description

Our third year final project consists in producing a 3D skeleton, its casing, and its animation 
from some images of an object.  
This project is done in collaboration with Bastien Durix, whose thesis is about skeleton extraction.
The steps of the project development are as follow :
  - segmentation of the image
  - skeleton extraction
  - points matching
  - camera calibration
  - skeleton branches matching
  - skeleton casing
  - animation (using rotation points)

  
## Expected deliverables and delivery delay

We will deliver an archive containing:
  - detailed documentation (commented code and a user manual)
  - source code : camera calibration and points matching, delivered on February 6th,
  and then casing and animation on March 13th.
  

## Client supplies

The client engages to supply the following elements :
  - programs performing the skeleton extraction
  - mathematical formulas for skeleton casing
  - scientific articles concerning animation 

  
## Contraintes techniques imposées
## Imposed technical constraints

Our technical constraints are as follow :
  - C++ as programming language
  - it is suggested to use the openCV library
  - CMake is suggested as compilation utility
  - used libraries must be portable between Windows and Linux

  
## Project management constraints and quality follow-up

The project management constraints are the following :
  - programming is done by pair programming
  - at least one meeting a week with the client will be carried out
  - one meeting a week is set every Thursday from 3:30pm to 4:30pm with the industrial

  
## Client organisation

Our clients are a team of researchers composed from :
  - Bastien Durix, preparing a thesis at the IRIT
  - Sylvie Chambon, lecturer at the IRIT
  - Geraldine Morin, lecturer at the IRIT

At least one meeting a week with the client will be carried out, and two meetings a week
at the beginning of the project to write the specifications.

# Risks management

## Risks table

| Id | Description | risk cause | Proba(1-5) |  Consequence | Seriousness(1-5) | Preventive actions | Corrective actions | Risk state |
| --- | --- | --- | :---: | --- | :---: | --- | --- | --- |
| 1 | Bad time estimation | Under estimation of the problem difficulty | 3 | Late delivery | 4 | Time margin of the planning, name a task advancement responsible | Raise the work amount, revise the planning | Open |
| 2 | The other group does not deliver the deliverables on time | Under estimation of their problem difficulty, last time augmentation of the work amount | 2 | Delay for tests on the 3D part of the skeleton | 3 | Contemplate an other method to test on simple case | Implement ourselves a segmentation method based on simple threshold | Open |
| 3 | The other group delivers wrong outputs | Bad comprehension of the subject | 3 | Tests do not work correctly | 1 | Find en agreement on the format | Develop a transition function | Open |
| 4 | Binaries provided by the client are not compatible | Systems complexity | 2 | We can not carry on with the pipeline | 3 | Discuss with the client the provided binary | Emulate the system allowing the use of the binaries | Open |
| 5 | Fragile harmony inside the group | Different uses for project management and programmation | 1 | Tensions, bad ambiance, intense stress | 5 | Name a cohesion responsible | Organize a mediation beetween the two parties | Open |
| 6 | Bad understanding with the other group | A bancal division of the project might bring tensions | 2 | Difficulty to manage shared parts | 3 | Bring a present as a sign of sympathy | Come to a compromise | Open |
| 7 | A group member is absent during a certain period of time | Illness, event | 5 | Someone's absence | 1 | Put in place teleworking solutions | Planning adaptation | Open |
| 8 | Production of unreliable, unmaintainable and illegible code | Lack of skills with the used technology | 4 | Lack of time, bad quality, need to reprogram | 3 | C++ formation by a technical expert | Call of the expert | Open |
| 9 | Need to access urgently to a deleted resource | Utilization of a suppression command, material crash | 2 | Lack of time, need to reprogram | 5 | Use github | Use of recuperation technology on long and complicated files | Open |


## Specifications

### Matching part

  - Input : $n$ images from the same object photographed on a plain green background within $n$ different points of view
  of which one will be the reference image. For the same object the shooting conditions must be the same :
     - the light
	 - the object position
	 - the camera used
  A minimum resolution will be defined. 
  A target has to be printed and put on the image for calibration : we chose to use a chequerboard.
 
  - Processing :
    1. Apply SIFT on every picture to get a group of interest points for each picture.
	   The SIFT algorithm parameters will be defined later.
	1. Define the camera intrinsic parameters as a .xml file. 
	1. Define the camera extrinsic parameters using the chequerboard.
	1. Matching of the interest points.
	
  - Output : correspondence pairs of interest points between the reference image and the other image.

### Casing part

  - Input : a 3D skeleton (B-Splines) and a rayon function.
  
  - Processing : Use canal surfaces
  
  - Output : a 3D mesh (edges and vertices)

### Animation part

  - Input : a 3D mesh, articulation points on the skeleton and their associated degree of freedom

  - Processing : to do
  
  - Output : animation display
  

### Tasks definition
|  | Interest points detection | Matching | Camera intern calibration | Camera extern calibration | skeleton 3D reconstruction | Casing | Animation  |
| --- | --- | --- | --- | --- | --- | --- | --- |
|  Conception  | | | | | | | |
|  Redaction of documentation  | | | | | | | |
|  Tests preparation  | | | | | | | |
|  Implementation  | | | | | | | |


### Rasci matrix
|  | Group 8 | Project leader | Quality service | Team 1 | Team 2 | Client | Régine Nigris|
| --- | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| Pictures shooting | R | I | I | A-R | R  | C | |
| Interest points detection | | C | I | A-R |  | C | |
| Matching | | C | I  | A-R | | C | |
| Camera intern calibration | | C | I | | A-R | C | |
| Camera extern calibration | | C | I | | A-R | C | |
| Skeleton 3D reconstruction | | C | I | R | A-R | C | |
| Casing | | C | I | | | C | |
| Animation | | C | I | | | C | |
| Project management | | A | R | R | R | | C |

### Requirements

  1. The algorithm must evaluate extrinsic parameters using the chequerboar.
  1. The algorithm must be able to evaluate intrinsic parameters.

### Roles

We decided to develop our prototype working in "pair programming", meaning we will work in parallel in teams of two.
The fifth person would be mobile and support the other groups in case of blockage on a technical aspect.
These  "technical support" post would be moving.

The initial role repartition is the following :
  - Project leader : Thomas Forgione
  - Quality responsible : Amandine Pailloux

