PG208, Projet n 4 : Traitement vidéo temps réel

Documents pareils
PG208, Projet n 3 : Serveur HTTP évolué

TP : Gestion d une image au format PGM

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse

DUT. Informatique, orientation Imagerie Numérique. Domaine : Sciences, Technologies, Santé. Mention : Informatique

Initiation à linfographie

Comment faire passer un message

Bases Java - Eclipse / Netbeans

exigences des standards ISO 9001: 2008 OHSAS 18001:2007 et sa mise en place dans une entreprise de la catégorie des petites et moyennes entreprises.

Générer du code à partir d une description de haut niveau

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Atelier n 12 : Assistance à distance

données en connaissance et en actions?

RIE LE RENDU THEO. 2 e trim ÉTAPE DE FINITION BOÎTE DE DIALOGUE. remarques

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

FICHE PEDAGOGIQUE. Questions à poser. - Avant de démarrer l ordinateur,

Conception Electronique (CEL) Prof. Maurizio Tognolini

Programmation Mobile Android Master CCI

Chap17 - CORRECTİON DES EXERCİCES

Vérifier la qualité de vos applications logicielle de manière continue

Logiciel Libre Cours 3 Fondements: Génie Logiciel

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Environnements de développement (intégrés)

Tutoriel Papier sur le logiciel DVD Shrink

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Lire, dire et écrire en utilisant les cartes heuristiques. OBJECTIFS

Traitement d un AVI avec Iris

Brique BDL Gestion de Projet Logiciel

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

TP1 : Initiation à l algorithmique (1 séance)

GUIDE D UTILISATION. Informations importantes Toshiba FOLIO 100 Conseils pour une première utilisation, configuration et principaux usages

Indications pour une progression au CM1 et au CM2

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Création de maquette web

Plateforme de capture et d analyse de sites Web AspirWeb

PROJET DE MODELISATION CASERNE SERGEANT BLANDAN

I00 Éléments d architecture

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Module 4 Tablettes et lieux de culture, musées, bibliothèques, universités

Compte-rendu re union Campus AAR 3 mars 2015

Systèmes de transmission

REUNION INFORMATIQUE 15/09/12 Utilisation Messagerie «Webmail 2» I ) Préambule : Pourquoi l utilisation d une messagerie commune?

Business Intelligence

Espace pro. Installation des composants avec Firefox. Pour. Windows XP Vista en 32 et 64 bits Windows 7 en 32 et 64 bits

Projet de développement

FEN FICHE EMPLOIS NUISANCES

Consignes pour les travaux d actualité Premier quadrimestre

5 bonnes pratiques pour solution décisionnelle mobile

Afin d accéder à votre messagerie personnelle, vous devez vous identifier par votre adresse mail et votre mot de passe :

Le traitement du 5ème concours A.I.P. pour l objet SH2-155 de Franck JOBARD

Cours 1 : Qu est-ce que la programmation?

Prise en main du logiciel Smart BOARD

Ce document décrit la démarche à suivre pour installer les outils de développement et compiler le projet TANAGRA.

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Mini_guide_Isis.pdf le 23/09/2001 Page 1/14

Opérations de base sur ImageJ

Sécurité et Firewall

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Chapitre 1 L interface de Windows 7 9

Migration du pack office Planification, préparation, déploiement et formation

F210. Automate de vision hautes fonctionnalités. Caractèristiques. Algorithmes vectoriels

ANICOTTE Guillaume GUFFROY Matthieu LIMA Juliette SALLOUH Chamsseddine CAHIER DES CHARGES SI 28

Master CCI. Compétences Complémentaires en Informatique. Livret de l étudiant

Rapport du projet Qualité de Service

Le langage C. Séance n 4

V11. Release 1. Nouveaux appareils. Nouvelles fonctionnalités. Plus de flexibilité.

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet

workshop javascript crm

Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Outils informatiques de manipulation de la vidéo et du son : une introduction

DUT Informatique, orientation Imagerie Numérique

Outils pour les réseaux de neurones et contenu du CD-Rom

DESS Arts, création et technologies

QoS Réseaux haut débit et Qualité de service

RTDS G3. Emmanuel Gaudin

EIP 2012 Projet Livepad. Documentation technique 1.5

CESI Bases de données

Chapitre 18 : Transmettre et stocker de l information

Le menu du jour, un outil au service de la mise en mémoire

Fabriquer son TBI avec une manette de jeu WII

progression premiere et terminale

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

Cookies de session ils vous permettent de sauvegarder vos préférences d utilisation et optimiser l expérience de navigation de l Utilisateur ;

Traitement bas-niveau

Introduction à Eclipse

Objet du document. Version document : 1.00

Utilisation du client de messagerie Thunderbird

Serveur de Téléphonie Asterisk implanté sur Trixbox

Routage AODV. Languignon - Mathe - Palancher - Pierdet - Robache. 20 décembre Une implémentation de la RFC3561

Microsoft infrastructure Systèmes et Réseaux

Simulation EIS. Changement et Innovation. Les Défis du Management

Guide de configuration d'une classe

Enregistrement et transformation du son. S. Natkin Novembre 2001

Sous réserve de modifications techniques et des disponibilités, fabrication française.

Leçon N 5 PICASA Généralités

Transcription:

PG208, Projet n : Traitement vidéo temps réel Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L objectif du projet est de mettre en œuvre les notions appréhendées durant l enseignement de de PG208. Durant cet enseignement vous avez normalement acquis les notions de base de la programmation orientée objets appliquées au langage C++. Le point de départ du projet est constitué du présent document. Ce dernier correspond au cahier des charges spécifié par le client (votre enseignant). Afin de mener à bien ce projet, vous allez devoir : lire le cahier des charges, identifier les besoins exprimés par le client, comprendre ce que vous devez développer, élaborer un modèle de solution, développer et mettre au point votre application. Pour mener à bien les quatre premières étapes, il vous est demandé de mettre en pratique les notion d UML vues en cours. Cela vous permettra de structurer vos idées et de les partager (avec votre binôme et votre enseignant). De plus, étant donné que le projet est un projet de conception objets, il vous est demandé dans les deux dernière étapes de mettre en œuvre les notions vues en cours (héritage, classes, polymorphisme, surcharge, etc.). 1.2 Déroulement du projet La durée estimée du projet est d environ 18 heures. Six séances de TP de heures sont programmés dans votre emploi du temps. Toutefois, elles ne sont pas toutes encadrées : les 2 premières et les 2 dernières bertrand.legal(at)ims-bordeaux.fr serge.bouter(at)u-bordeaux1.fr clement.vuchener(at)inria.fr 1

séances sont encadrées tandis que les 2 séances intermédiaires sont planifiées mais se dérouleront sans encadrement. Le sujet du projet a été écrit de manière à prendre en considération les différences de niveaux entre les groupes. Pour cela le sujet du projet est écrit sous forme de cahier des charges à tiroir. Cette particularité vous permettra d avancer à votre rythme. 1. Évaluation de votre travail La notation du projet se basera sur : La qualité de l analyse du cahier des charges. Cette analyse doit être réalisée à l aide d UML. L utilisation adéquate des possibilités offertes par le langage C++ (héritage, surcharge,... ). Le respect des fonctionnalités spécifiées dans le cahier des charges. L évaluation du projet sera réalisée en deux parties : Lors d une présentation orale de votre projet. Dans un rapport papier détaillant le développement de votre application. Lors de la présentation orale de votre application, vous êtes en charge de présenter à votre enseignant (le client) l application développée. Cette présentation d une durée approximative de 10 minutes vise à démontrer au client que vous avez développé ce qu il vous a commandé. Pour cela, vous présenterez vos choix de conception, vous expliquerez les différentes étapes par lesquelles vous êtes passées et enfin une réaliserez démonstration des fonctionnalités de l outil (démonstration que vous aurez pris soin de préparer). En ce qui concerne le rapport écrit, une attention particulière sera portée à la présentation des choix d implantation que vous aurez réalisés lors de votre développement. Ces choix ainsi que votre cheminement devront être détaillés clairement à l aide du langage UML. De plus une analyse des avantages et inconvénients du langage C++ par rapport au langage C devra être réalisée. 2 Cahier des charges 2.1 Fonctionnalités de base Comme nous l avons déjà précisé dans les parties précédentes, l objectif du projet est de développer une application de traitement vidéo temps réel. La base de l application permettant d extraire une vidéo depuis un fichier et de l afficher à l écran vous est fournie par votre enseignant. Votre rôle sera d implanter dans cette application une série de traitements vidéo permettant à l utilisateur d analyser en temps réel les images qui sont affichées. 2

Les traitements vidéo à intégrer dans l outil seront de différentes natures permettant par exemple de filtrer un canal de couleur, détecter les contours de l image, etc. La liste ci-dessous présente une liste exhaustive des traitements à implémenter au minimum dans votre application : Filtrage du canal rouge (le canal rouge garde sa valeur et 0 pour les autres) Filtrage du canal bleu (le canal bleu garde sa valeur et 0 pour les autres) Filtrage du canal vert (le canal vert garde sa valeur et 0 pour les autres) Transformation en nuance de gris «simple», tous les canaux adoptent la valeur fournie par l équation donnée ci dessous : Red (x,y) = Red (x,y) + Green (x,y) + Blue (x,y) Green (x,y) = Red (x,y) + Green (x,y) + Blue (x,y) Blue (x,y) = Red (x,y) + Green (x,y) + Blue (x,y) Transformation en nuance de gris «fiable», tous les canaux adoptent la valeur fournie par l équation donnée ci dessous : Red (x,y) = 0.299 Red (x,y) + 0.587 Green (x,y) + 0.11 Blue (x,y) Green (x,y) = 0.299 Red (x,y) + 0.587 Green (x,y) + 0.11 Blue (x,y) Blue (x,y) = 0.299 Red (x,y) + 0.587 Green (x,y) + 0.11 Blue (x,y) Sous échantillonnage (poinçon), l objectif est de diminuer d un facteur 2 la taille de l image. Le sous échantillonnage est réalisé à l aide de la fonction donnée ci-dessous : Red (x,y) = Red (2 x,2 y) Green (x,y) = Green (2 x,2 y) Blue (x,y) = Blue (2 x,2 y) Sous échantillonnage (linéaire), l objectif est de diminuer d un facteur 2 la taille de l image. Le sous échantillonnage est réalisé à l aide de la fonction donnée ci-dessous : Red (x,y) = Red (2 x,2 y) + Red (2 x+1,2 y) + Red (2 x,2 y+1) + Red (2 x+1,2 y+1) Green (x,y) = Green (2 x,2 y) + Green (2 x+1,2 y) + Green (2 x,2 y+1) + Green (2 x+1,2 y+1) Blue (x,y) = Blue (2 x,2 y) + Blue (2 x+1,2 y) + Blue (2 x,2 y+1) + Blue (2 x+1,2 y+1)

Sous échantillonnage (cubique), l objectif est de diminuer d un facteur 2 la taille de l image. Le sous échantillonnage est réalisé à l aide de la fonction donnée ci-dessous : Red (x,y) = Red 2 2 (2 x,2 y) + Red2 (2 x+1,2 y) + Red2 (2 x,2 y+1) + Red2 (2 x+1,2 y+1) Green (x,y) = Green 2 2 (2 x,2 y) + Green2 (2 x+1,2 y) + Green2 (2 x,2 y+1) + Green2 (2 x+1,2 y+1) Blue (x,y) = Blue 2 2 (2 x,2 y) + Blue2 (2 x+1,2 y) + Blue2 (2 x,2 y+1) + Blue2 (2 x+1,2 y+1) Sur-échantillonage (poinçon, linéaire, cubique), l objectif est d augmenter d un facteur 2 la taille de l image. Le sur échantillonnage est réalisé à l aide des fonctions données ci-dessous : Red (2 x,2 y) = Red (x,y) Red (2 x+1,2 y) = Red (x,y) Red (2 x,2 y+1) = Red (x,y) Red (2 x+1,2 y+1) = Red (x,y) Détection de contour (filtrage passe haut), la détection de contour peut être appliquée sur une image couleur ou transformée en nuance de gris. Le filtrage sera assuré par une convolution assurée par les matrices données ci-dessous pour les filtres à implémenter : [ ] M 0 = 1 1 [ ] M 1 = 1 2 1 M 2 = 2 0 2 M = 1 2 1 M = 0 0 0 1 2 1 1 1 1 M 5 = 0 0 0

0 1 0 M 6 = 1 1 0 1 0 1 1 1 M 7 = 1 8 1 1 1 1 1 2 1 M 8 = 2 12 2 1 2 1 1 1 0 M 9 = 0 1 1 Flou (filtrage passe bas), le filtrage de l image peut être appliquée sur une image couleur ou transformée en nuance de gris. Le filtrage sera assuré par une convolution assurée par les matrices données ci-dessous pour les filtres à implémenter : 0 1 0 B 0 = 1 1 1 8 0 1 0 1 2 1 B 1 = 1 2 8 2 16 1 2 1 B 2 = 1 9 B = 1 1 0 1 8 Adaptation automatique des niveaux de couleur afin d exploiter toutes les possibilités d affichage. Cette transformation se base sur la réalisation d un histogramme pour chacun des canaux de l image : on calcul les valeurs minimum et maximum des valeurs pour chaque canal et ensuite on adapte les valeurs des composantes de chaque pixel à l aide de la formule suivante : C u = 255 max min u (x,y) = C u (u (x,y) min) 5

Motion blur, afin de donner une exagération des mouvements dans la vidéo. Pour réaliser ce filtre il est nécessaire de mémoriser les N images précédentes de la séquence et d en réaliser une somme pondérée. Dans votre cas, nous allons considérer que la somme des 2 dernières images avec l image courante est suffisante. La somme pondérée sera réalisée à l aide de l équation suivante : P (x,y) = 1 2 P (x,y) + 10 P 2(x,y) + 2 10 P (x,y) Transformations complexes, nous souhaitons aussi mettre en?uvre des transformations plus complexes réalisant successivement plusieurs transformations. Vous devrez par exemple développer les «traitements suivants» : Sortie = Image sous échantillonnée cubiquement d un facteur ; Sortie = Image sous échantillonnée par 2 avec détection de contours Sortie = Image en nuance de gris floutée et agrandie d un facteur 2 (linéairement) Sortie = Image avec détection de contour réalisée sur une image floutée et passée en nuance de gris. Autres transformations en fonction de vos envies? En fonction du temps restant et de vos connaissances, vous pouvez ajouter à cette liste de nouvelles transformations ou des compositions de ces dernières : comme par exemple la squelettisation, la détection d objets, etc. Afin d insérer ces différents filtres dans l outil vous devrez bien réfléchir à la question suivante : quels sont les points communs entre les différentes transformations (uniformisation des classes afin de bénéficier de la compatibilité)? 2.2 Extension de l application Dans un second temps vous devrez modifier votre conception afin de permettre à l utilisateur de réaliser un assemblage de filtres vidéo à appliquer à l image avant son affichage. Dans cette partie vous devrez comprendre et gérer les concepts de programmation visuelle associés à la bibliothèque QT. Vous devrez faire en sorte que l utilisateur puisse choisir parmi tous les filtres développés les éléments qu il souhaite voir appliqué à l image, en ajouter, en supprimer ou changer leur ordre d application afin de rendre plus flexible l outil. Point de départ de la conception Le point de départ de votre conception vous sera fourni par votre enseignant lors de la première séance de projet. Le code source qui vous sera distribué assure les fonctions suivantes : Création d une interface graphique permettant d ouvrir un fichier vidéo et d en lancer la lecture avec ou sans application d un filtrage X. 6

Mise en marche et arrêt de l affichage de la vidéo. Mode pas à pas dans le cas ou la vidéo est actuellement arrêtée. Passage du mode lecture d une vidéo au mode extraction d image depuis une webcam (ou pas... ). Mode de limitation de l extraction à 2 images par seconde ou mode libre allant jusqu à 1000fps au maximum. Basez vous sur l ensemble de ce travail afin d étendre les capacités de l outil dans le but de répondre à toutes les attentes du client. Outils de développement Afin de mener à bien ce projet, vous allez devoir changer d environnement de développement. La bibliothèque objets QT nécessite des scripts de compilation (makefile) que le logiciel Eclipse ne sait pas gérer, nous allons donc nous rabattre sur QtCreator qui est développé par TrollTech (maison mère de Qt). Vous pourrez télécharger une version gratuite des bibliothèques QT, du compilateur g++ ainsi que de l éditeur à l adresse suivante : http://www.qtsoftware.com/downloads 5 Classes utiles La bibliothèque QT offre des centaines de classes toutes plus utiles les unes que les autres? Ci-dessous je vous en cite un certains nombre qui peuvent vous servir dans le cadre de ce projet, mais beaucoup d autres sont aussi utilisables (cette liste est non exhaustive) : QString : Gestion des chaines de caractères QHash : Structure de données associative (pratique pour le cache) QVector : Structure de données itérative QFile : Objet permettant de lire, d écrire et de vérifier l existence d un fichier (QFileInfoList + QFileInfo), QByteArray : Object permettant de manipuler des tableaux de données 8 bits en mémoire, QDir : Object représentant un répertoire (consultation des fichiers présents, vérification de l existante du répertoire, etc.). Pour toutes les parties concernant la programmation graphique en Qt vous trouverez de très bon tutoriaux sur Internet, de plus le code source fourni par votre encadrant devrait vous permettre d en comprendre les bases? 7