Semaine 07 vA13 Morphologie

Slides:



Advertisements
Présentations similaires
Manipulation d’un objet virtuel à l’aide d’une cible et d’une caméra
Advertisements

A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Programmation Orienté Objet en C++
Rappels C.
Cours n° 2 Les entrées-sorties Biliothèque C++ (iostream) –
L’ interruption de boucle
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
INF-1019 Programmation en temps réel
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
PROGRAMMATION SCIENTIFIQUE EN C PRO Généralités u Présentation du plan de cours –Disponibilité –Références u Environnement de travail –Langage C.
Base de programmation Script unity en c#.
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Les fichiers binaires en C++
Conteneurs STL.
IFT 6800 Atelier en Technologies d’information
Chapitre 4 : Morphologie Mathématique
COURS DE PROGRAMMATION ORIENTEE OBJET :
1 Fonction : surcharge de sélection La surcharge de sélection consiste à implanter plusieurs méthodes de même nom dans une même classe à condition que.
Héritage Lhéritage permet de spécialiser une classe en définissant une relation de type « est une sorte de ». #include comptebancaire.h class CompteEpargne.
CSI 1502 Principes fondamentaux de conception de logiciels
Structures de données IFT-2000 Abder Alikacem Semaine 12 (2 ième partie) Les B-arbres Département d’informatique et de génie logiciel Édition septembre.
Procédures et fonctions
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Une introduction à Java
Programmation Orienté Objet en C++ Ricard julien.
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 3 Polymorphisme I.
Les fichiers texte en C++
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
L’essentiel du langage C
Chapitre IX Gestion de flux.
2.1 - Historique Chapitre 2 : Introduction au langage C++
9ième Classe (Mardi, 4 novembre) CSI2572. H Nous avons vu comment utiliser les directives #define #ifndef #endif Pour s’assurer de l’inclusion unique.
1 Fichers Binaires, Accès Direct et Objets. 2 Données binaires. Il s'agit ici de lire et écrire des données binaires par opposition à du texte. Pour ce.
Internet WEB.
La notion de type revisitée en POO
SIF-1053 Architecture des ordinateurs
8PRO107 Éléments de programmation Les chaînes de caractères.
Ferhat nouis Cédric tanguy Eric abrial Gregory nazaire
Labo 4 : Les structures et les entrées et sorties
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Cours C++ Fonctions Surcharge d’opérateurs Passage d’arguments
Constructeurs H Batatia. Variable statique Une variable statique est partagée par tous les objets d’une classe.
Les sockets.
Les opérateurs L’amitié Les opérateurs Introduction
Les surcharges d'opérateurs
Fiabilisation des lectures au clavier. Problèmes liés à scanf: rencontre de caractères invalides Sans arrêt prématuré: compte = scanf(``%d%c``;&n,&c);
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
1 Les caractères En informatique, les caractères sont très importants puisqu’ils sont utilisés pour la communication personne-machine. Puisque les ordinateurs.
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Ecrire 10 fois "Bonjour" sur 10 lignes différentes
JDBC (Complément de cours) IFT 3030
Traitement d’images 420-D78-SW A15 Semaine 02.
Traitement d’images Semaine 03 A15 Seuillage.
TRAITEMENT D’IMAGES Semaine 05. AGENDA DE LEÇON Documentation officielle d’OpenCV Écrire du texte Source vidéo TP1.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Traitement d’images Semaine 09 v.A15.
Traitement d’images Semaine 13 – Modèle correspondant.
Philippe Gandy – 17 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 13 octobre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Traitement d’images Semaine 09 vA15.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Informatique 2A Langage C 4ème séance
1 UNIX AVANCE Yves PAGNOTTE – Janvier – COMMUNICATION INTER PROCESSUS : TUBES.
Traitement d’images Semaine 05.
Int 10. Int 6.
Transcription de la présentation:

Semaine 07 vA13 Morphologie Traitement d’images Semaine 07 vA13 Morphologie

Plan de leçon Source vidéo Morphologie Région d’intérêt Érosion Dilatation Ouverture Fermeture Région d’intérêt Canal d’intérêt Opérateurs arithmétiques et binaires

Source vidéo Il est possible de lire les fichiers vidéo ou les flux caméras avec OpenCV Le principe est d’utiliser la classe VideoCapture pour initier la caméra Cette classe accepte les flux URL* Le URL dépendra de marque de la caméra Ensuite, il faudra valider si la caméra a bel et bien été chargée En autant que ce ne soit pas FFMPEG sous Windows

Source vidéo Dans le code, il faudra utiliser une boucle qui s’arrête une fois que la vidéo prend fin ou encore selon l’action de l’utilisateur avec la fonction waitKey La méthode read de la classe VideoCapture permet de lire une image du flux de transmission

Source vidéo : Exemple int main () { char * adr = "http://10.10.3.80/videostream.cgi?user=admin&pw=&resolution=32"; char * winMain = "Main"; Mat frame; VideoCapture cap(1); if (!cap.isOpened()){ string k; cout << "Unable to load source!\r\n"; getchar(); //cin >> k; return -1; } int c = 0; namedWindow(winMain); while (c != 27) if (!cap.read(frame)) cout << "No image!\r\n"; c = waitKey(); imshow(winMain, frame); c = waitKey(33);

Morphologie

Morphologie L’idée de base est de convoluer un élément structurant (opérateur) sur une image binaire pour mettre en évidence des éléments visuels ou encore d’éliminer des structures qui ne respectent pas certains critères Exemple d’opérateur

Érosion L’érosion consiste à passer un opérateur qui « érode » l’image Exemple : centre L’érosion consiste à passer un opérateur qui « érode » l’image Tout ce qui touche au point d’ancrage de l’opérateur est converti à la valeur la plus basse Attention! Ici, on « érode » le blanc. Élément structurant carré de 3x3

Dilatation La dilatation consiste à passer un opérateur qui « dilate » les valeurs intenses Tout ce qui touche au point d’ancrage de l’opérateur est converti à la valeur la plus haute Élément structurant carré de 3x3

Morphologie Voici un exemple de l’effet de la dilatation et l’érosion avec un carré de 3x3 Original Dilatation Érosion

Ouverture L’ouverture constitue d’une érosion suivit d’une dilatation Cela permet de faire disparaître des petits artéfacts Il faut que ceux-ci soit clair sur un fond foncé 𝑑𝑠𝑡=𝑜𝑢𝑣𝑒𝑟𝑡𝑢𝑟𝑒 𝑠𝑟𝑐, 𝑒𝑙𝑒𝑚𝑒𝑛𝑡 =𝑑𝑖𝑙𝑎𝑡𝑎𝑡𝑖𝑜𝑛 (𝑒𝑟𝑜𝑠𝑖𝑜𝑛 𝑠𝑟𝑐, 𝑒𝑙𝑒𝑚𝑒𝑛𝑡 )

Fermeture Elle consiste d’une dilatation suivi d’une érosion Elle permet de fermer les petits trous dans une image 𝑑𝑠𝑡=𝑓𝑒𝑟𝑚𝑒𝑡𝑢𝑟𝑒 𝑠𝑟𝑐, 𝑒𝑙𝑒𝑚𝑒𝑛𝑡 =𝑒𝑟𝑜𝑠𝑖𝑜𝑛 (𝑑𝑖𝑙𝑎𝑡𝑎𝑡𝑖𝑜𝑛 𝑠𝑟𝑐, 𝑒𝑙𝑒𝑚𝑒𝑛𝑡 )

Gradient morphologique C’est la différence entre une dilatation et une érosion Cela permet de tracer le contour des objets 𝑑𝑠𝑡= 𝑚𝑜𝑟𝑝ℎ 𝑔𝑟𝑎𝑑 𝑠𝑟𝑐, 𝑒𝑙𝑒𝑚𝑒𝑛𝑡 =𝑑𝑖𝑙𝑎𝑡𝑎𝑡𝑖𝑜𝑛 𝑠𝑟𝑐, 𝑒𝑙𝑒𝑚𝑒𝑛𝑡 − 𝑒𝑟𝑜𝑠𝑖𝑜𝑛 𝑠𝑟𝑐, 𝑒𝑙𝑒𝑚𝑒𝑛𝑡

Traitement d’images Région d’intérêt Canal d’intérêt Opérateurs arithmétiques et binaires

Plan de leçon Région d’intérêt Canal d’intérêt Opérations arithmétiques Opérateurs logiques

Région et canal d’intérêt La ROI sert à cadrer une région pour accélérer les algorithmes de traitement Ainsi au lieu d’exécuter un algorithme sur une image entière, celui-ci est appliquée que sur la région d’intérêt Une région d’intérêt n’est qu’une sous-image dans une image Pour définir une ROI, il suffit d’avoir une image source et un rectangle qui définit la zone Mis à part le rectangle, le même principe peut s’appliquer aux canaux

ROI et COI // Lire l’image Mat img = imread(monFichier); // Régler le roi Mat roi (img, monRectangle); // Rempli le roi de vert qui affecte l’image originale roi = Scalar (0, 255, 0);

Opérations arithmétiques Telles les équations mathématiques, il y a l’équivalent au niveau des images cv::add, cv::sub, cv::multiply, cv::sum, etc. Certains opérateurs tels que « + », « - » et « * » fonctionnent Exemple faire le tracer du mouvement en faisant une somme pondérée de la différence des contours Projet : ocv_difference

Opérateurs logiques cv::bitwise_operateur bitwise_and bitwise_or bitwise_xor bitwise_not Ces opérateurs agissent de la même façon que sur les valeurs numériques sauf qu’ils s’appliquent aux valeurs des pixels

Exercices À l’aide d’une caméra vidéo Afficher plusieurs fenêtres avec chacun des filtres suivants Vidéo originale Vidéo avec une détection de contour avec gradient morphologique Possibilité de désactiver ce filtre en appuyant sur espace La touche d’échappement doit servir à quitter la boucle du flux de vidéo Vidéo avec filtre de détection de contour Sobel Optionnel

Référence http://ee.lamar.edu/gleb/dip/10-1%20-%20Morphological%20Image%20Processing.pdf http://en.wikipedia.org/wiki/Erosion_(morphology) http://www.mathworks.com/help/images/morphology-fundamentals-dilation-and-erosion.html http://razibdeb.wordpress.com/2013/09/10/skin-detection-in-c-using-opencv/