Compétences

Compétences informatiques

Développement : C++, très bonne maîtrise (Boost, STL, Qt) - C#, bonne maîtrise - Java, bonne maîtrise

Spécialisation : Vision artificielle, bonne maîtrise (OpenCV) - 3D & Réalité virtuelle, bonne maîtrise - OpenGL - OSG - SDL - SFML

Langues

Français : langue maternelle

Anglais : avancé

Espagnol : bon niveau (DELE 92/100 en mai 2008)

Voici toutes les expériences en relation avec la compétence C++

icon

Projet de fin d’études, développeur C++ Image - 3D

6 mois, MirriAd (Londres - Angleterre)
03/2011 - 08/2011
Développement d’un module d’incrustation de modèles 3D dans une application de compositing vidéo.
  • Création d’un rendu photo réaliste temps réel type Réalité Augmentée utilisant le Ray Tracing.
  • Synchronisation des modèles 3D avec le mouvement de la caméra – Interface utilisateur avec Qt.
  • Implémentation des techniques d’illumination en CUDA – Bêta testeur de NVIDIA SceniX 7.
Haut
icon

Assistant ingénieur, développeur C++ 3D

8 mois, Virtuel City (Montbéliard - France)
07/2009 - 02/2010
Développement d’un outil en C++ avec Boost, OSG et Qt pour automatiser la création de villes en 3D.
  • Création d’un plugin C++ pour OSG automatisant les conversions 3D depuis/vers le SIG ESRI.
  • Intégration d’une équipe de développement et automatisation d’opérations 3D - graphe de scène.
  • Création d’un module C# pour le logiciel SIG ArcMap permettant de gérer des données 3D.
Haut

Projets d'imagerie et de réalité virtuelle

4 mois
03/2010 - 06/2010
  • Chef de projet d'une équipe de 6 personnes ayant réalisée un moteur 3D pour un jeu vidéo avec OpenGL en C++.
  • Equipe de 2 personnes : détection de toitures pour la génération automatique d'un modèle 3D de toît.
  • Equipe de 3 personnes : simulation de l'évacuation d'un bâtiment en Java.
Chef d'une équipe de 6 personnes - Réalisation d'un moteur 3D avec OpenGL en C++
Description :

Le but de ce projet a été de créer un nouveau moteur 3D pour le jeu que nous a proposé le professeur. Etant donné que nous n'étions pas autorisés à utiliser d'autres librairies que CML, STL et Boost, nous avons créé le moteur 3D depuis zéro en utilisant C++ et OpenGL.

En tant que chef de projet d'un groupe de 6 étudiants, j'ai choisi de diviser le travail en 3 parties : création de librairies indépendantes et complètement opérationnelles (un graphe de scène, un visualisateur et un importeur de fichier 3DS), création du moteur 3D traitant les données du jeu et mettant à jour le graphe de scène et création de nouveaux modèles 3D en utilisant 3DS Max.

Cela a été un des projets les plus intéressants étant donné qu'il a nécessité de rassembler beaucoup de compétences dans un temps réduit :
  • Diriger le projet en assignant les tâches tout en apprenant OpenGL et les mathématiques relatives à la 3D.
  • Ne pas réinventer la roue en s'inspirant de solutions bien connues (inspiré de lib3ds que nous n'avions pas le droit d'utiliser et de Open Scene Graph avec énormément de simplification).
  • Se conformer aux conventions de codage et à l'utilisation avancée du C++.
  • Créer un moteur de rendu fiable en utilisant un système de Logging, un sélecteur d'extension OpenGL et des librairies C++ avancées (Configurable Math Library, STL et Boost).
  • Utilisé des éléments graphiques avancés : élimination des parties cachées, Vertex Buffer Objects et support des shaders.
  • Créer une collection de librairies réutilisables (un importeur de fichier 3DS indépendant, un graphe de scène et un visualisateur indépendants permettant beaucoup plus d'excentricité que le jeu simple qui nous était fourni).

Note : nous sommes le seul groupe d'étudiant à avoir choisi ce projet.

Illustrations :
Ressources :
Haut
icon

Ingénieur en informatique spécialisé en Image, Interaction et Réalité Virtuelle

5 ans, UTBM (Belfort - France)
09/2006 - 08/2011
« Parmi les 5% meilleurs »
    Principaux projets :
  • Création d’un moteur 3D pour un jeu vidéo en C++ et OpenGL.
  • Création d’une simulation comportementale 3D de l’évacuation d’un bâtiment en Java.
  • Création d'un outil d'analyse d'orthophotographies.
Techniques et méthodes
Description :
  • IN55 : Synthèse d'images (Note : A)
  • MT51 : Mathématiques pour l'image (Note : B)
  • TX52 : Travaux de laboratoire (Note : C)
  • VI51 : Virtual Life Simulation (Note : B)
Ressources :
Projets liés :
Livres lus :
Connaissances scientifiques
Description :
  • AG41 : Optimisation et recherche opérationnelle (Note : A)
  • BD40 : Systèmes d'information (Note : A)
  • IA41 : Intelligence artificielle : concepts fondamentaux et langages dédiés (Note : A)
  • IN41 : Analyse et traitement du signal (Note : A)
  • IN42 : Introduction au multimedia (Note : A)
  • LO41 : Architecture et utilisation des systèmes d'exploitation (Note : A)
  • LO43 : Bases fondamentales de la programmation orientée objet (Note : A)
  • MT44 : Analyse numérique et splines (Note : A)
Ressources :
Projets liés :
Haut
icon

Digital Signal and Image Processing MSc

1 an, Cranfield University (Cranfield - Angleterre)
09/2010 - 09/2011
Double diplôme préparé conjointement à mon diplôme d'ingénieur informatique UTBM.
    Principaux projets :
  • Exploration autonome d’un environnement inconnu avec un robot en utilisant la stéréovision.
  • Création d’un programme de vidéo surveillance pour un passage à niveau.
  • Création d'un programme de stéganographie.
Techniques et méthodes
Description :
  • Applications of DSP & Computer Vision (Note : 90/100)
  • C++ Programming (Note : 87/100)
  • Computer Graphics (Note : 86/100)
  • Advanced Graphics (Note : 81/100)
  • Image Analysis (Note : 98/100)
  • Image Processing (Note : 80/100)
  • Machine Learning (Note : 70/100)
Ressources :
Projets liés :
Livres lus :
Haut

Projets informatiques de 3ième année (semestre 2)

2 mois
05/2009 - 06/2009
  • Chef de projet d'une équipe de 3 personnes vainqueurs du concours d'optimisation et de recherche opérationnelle (métaheuristiques, planification de tournées de véhicules).
  • Equipe de 2 personnes : création d'une application interactive d'apprentissage en Flash.
Chef d'une équipe de 3 personnes - Vainqueur du concours d'optimisation et de recherche opérationnelle en C++
Description :

Le but de ce challenge était de réaliser un logiciel permettant de résoudre un problème de tournées de véhicules en temps limité (2 minutes). Ce problème, récurrent dans l'industrie (distributions de produits, ramassage scolaire, collecte des ordures ménagères, transport de personnes handicapées) est celui d'un transporteur qui doit livrer un ensemble de clients à partir d'un centre de distribution. Chaque client a une demande connue et pour réaliser ces livraisons, le transporteur dispose de plusieurs camions. Plusieurs contraintes peuvent lui être imposées. Les contraintes retenues pour ce challenge sont que chaque camion possède une capacité limitée et que chaque client possède une heure de livraison qu'il est toutefois possible de ne pas respecter avec application d'une pénalité donnée.

Ce challenge avait pour but de mettre les étudiants en compétition afin de les motiver et de les pousser à fournir les meilleurs résultats. Nous avons gagné le challenge (26 groupes participaient).

Pour résoudre ce problème, nous devions nous orienter vers les métaheuristiques vues en cours. Afin de ne pas réinventer la roue, il nous était conseillé d'effectuer des recherches dans la littérature étant donné que ce problème est largement traité avec des contraintes assez similaires.

Nous avons choisi de nous orienter vers la méthode de résolution développée dans la thèse de Taillard, et al. : "A Tabu Search Heuristic for the Vehicle Routing Problem with Soft Time Windows", en simplifiant un peu la méthode.Le langage d'implémentation était au choix le C++ ou le JAVA, nous avons choisi de développer le programme en C++.

Illustrations :
Ressources :
Haut

Projets de traitement d'images

4 mois
12/2010 - 03/2011
Projets réalisés à Cranfield University : stéréovision, vidéo surveillance et stéganographie.
Création d'un module de stéréovision pour un robot
Description :

Ce projet réalisé dans un groupe de 6 personnes avait pour but de permettre à un robot d'explorer automatiquement un environnement inconnu pour lui permettre de lire des capteurs. Nous avons déveloper le projet en C++ avec OpenCV.

Mon rôle a été de trouver une technique permettant au robot de détecter et d'éviter les obstacles. Le robot possédant une caméra pouvant être orientée dans 3 positions prédéfinies, j'ai choisi d'utiliser la stéréovision ce qui nous a permis d'obtenir un meilleur résultat que les autres groupes.

Vidéos :
Ressources :
Vidéo surveillance pour un passage à niveau
Description :

Le but de ce projet était de détecter automatiquement les événements se produisant à un passage à niveau : détecter si il y a du traffic entrant ou sortant du passage à niveau, détecter si du traffic ou un piéton est sur le passage à niveau, détecter le passage d'un train et enfin détecter lorsque la barrière est baissée. J'ai développé ce projet en C++ avec OpenCV.

J'ai appliqué des techniques de traitement d'images : opérations morphologiques - Canny - espace couleurs HSV - Transformée de Hough.

Vidéos :
Ressources :
Création d'un programme de stéganographie
Description :

Le but de ce projet était de créer un programme en C++ capable de cacher tout type de fichier dans une image. J'ai réalisé ce projet avec la librairie OpenCV.

Ressources :
Haut

Projets d'imagerie et de réalité virtuelle

4 mois
03/2010 - 06/2010
  • Chef de projet d'une équipe de 6 personnes ayant réalisée un moteur 3D pour un jeu vidéo avec OpenGL en C++.
  • Equipe de 2 personnes : détection de toitures pour la génération automatique d'un modèle 3D de toît.
  • Equipe de 3 personnes : simulation de l'évacuation d'un bâtiment en Java.
Détection de toitures pour la génération automatique d'un modèle 3D de toît
Description :

Le but de ce projet était de pouvoir, à partir d'orthophotographies, extraire les éléments caractéristiques composant une toiture donnée, la comparer à une base de données de toitures afin de pouvoir, si elle n'y est pas déjà présente, reconstruire automatiquement le modèle 3D de la toiture donnée.

Nos recherches se sont déroulées en plusieurs étapes. Tout d'abord, nous avons pris connaissance de la librairie open source d'opérateurs de traitement d'images développée par le GREYC : Pandore. Cette librairie nous a permis de comprendre rapidement beaucoup de fonctionnalités utilisées en traitements d'images. Nous avons ensuite pu commencer à mettre en application nos connaissances.

Illustrations :
Ressources :
  • Toutes les ressources sont confidentielles
Haut