350 likes | 590 Views
INF-1019 Programmation en temps réel. Traitement du signal (images). Sujets Librairie openCV Lecture d’images Création de contrôles Filtrage d’images Lectures: Notes de cours. Traitement du signal (images).
E N D
INF-1019Programmation en temps réel Traitement du signal (images) • Sujets • Librairie openCV • Lecture d’images • Création de contrôles • Filtrage d’images • Lectures: Notes de cours
Traitement du signal (images) • OpenCV (Open Source Computer Vision Library) est une bibliothèque gratuite d’analyse d’images et de vision par ordinateur, en langage C/C++, proposée par Intel pour Windows et Linux. • C’est une collection de fonctions en langage C et quelques classes de C++ qui mettent en application quelques algorithmes populaires de traitement d’images et de la vision par ordinateur.
Traitement du signal (images) • Les opérateurs classiques disponibles dans OpenCV comprennent un très grand nombre d’opérateurs, parmi lesquels : • Création/libération d’images, macros d’accès rapides aux pixels. • Opérateurs standard (morphologie, filtres dérivatifs, filtres de contours, suppression de fond, recherche de coins). • Recherche, manipulation, traitement de contours. • Pyramides d’images. • Dessins de primitives géométriques (lignes, rectangles, ellipses, polygones... et même du texte). • Création et utilisation d’histogrammes. • Changement d’espaces de couleurs (RGB, HSV, L*a*b* et YCrCb).
Traitement du signal (images) • Les opérateurs classiques disponibles dans OpenCV comprennent un très grand nombre d’opérateurs, parmi lesquels : • Interface Utilisateur (lecture/écriture d’images de type JPEG, PPM, BMP, etc.) affichage à l’écran, gestion des signaux sur un clic de fenêtre, fermeture de fenêtre, ...). • Lecture des séquences vidéo et découpage de celles-ci en plusieurs images (environ 30 par seconde).
Traitement du signal (images) • Opérateurs complexes : • Contours actifs: Modèle qu’on nomme aussi snakes (serpents) en raison des déformations subies pendant le processus d’adaptation qui s’apparentent au mouvement d’un serpent. • Analyse de mouvement : Flot optique et MHI. • Détection de visages. • Calibrage d’une caméra (possible à partir d’un damier). • Suivi d’objets 3D avec plusieurs caméras. • Mise en correspondance de deux images. • Lecture d’images à la volée directement depuis une vidéo AVI ou une caméra (Windows seulement).
Traitement du signal (images) • Fonctions d’entrée / sortie sur les séquences vidéo • Lecture d’une vidéo: Il est possible de lire une séquence d’images à partir d’un fichier vidéo ou directement à partir d’une caméra. • Pour chaque capture, une image est automatiquement allouée (et ensuite libérée) en mémoire. • Structure de capture d’une vidéo (CvCapture()). Cette structure n’a pas d’interface publique et elle est employée seulement comme paramètre pour des fonctions de capture de vidéo. • Ainsi, il y a deux types d’initialisation de capture d’une vidéo. • Initialisation à partir d’un fichier AVI (cvCaptureFromFile(”Fichier.avi”)). • Initialisation pour la capture en temps réel à partir d’une caméra (cvCaptureFromCAM (index de la caméra utilisée)).
Traitement du signal (images) • Fonctions d’entrée / sortie sur les séquences vidéo • Saisie d’une fenêtre (cvQueryFrame(capture)) Cette fonction permet de saisir une fenêtre à partir d’une caméra ou un fichier AVI déjà capturés. • La fenêtre saisie est stockée en mémoire. Le but de cette fonction est de saisir la fenêtre rapidement qui est important pour la synchronisation en cas de lecture de plusieurs caméras simultanément. • Les fenêtres saisies ne sont pas exposées parce qu’elles peuvent être stockées dans le format compressé (comme défini par la caméra/utilisateur). • Obtention de la fenêtre (cvSaveImage(”Image.extension”,fenêtre)). Cette fonction permet de sauvegarder la fenêtre saisie dans une image. Ainsi elle retourne un pointeur sur l’image saisie par la fonction précédente. • L’image retournée ne devrait pas être libérée ou modifiée par l’utilisateur.
Traitement du signal (images) • Fonctions de gestions d’interfaces
Traitement du signal (images) • Fonctions de gestions d’interfaces
Traitement du signal (images) • Fonctions de gestions d’interfaces
Traitement du signal (images) • Fonctions de gestions d’interfaces
Traitement du signal (images) • Fonctions de gestions d’interfaces
Traitement du signal (images) • Fonctions d’I/O d’images
Traitement du signal (images) • Fonctions d’I/O d’images
Traitement du signal (images) • Fonctions d’I/O sur les vidéo
Traitement du signal (images) • Fonctions d’I/O sur les vidéo
Traitement du signal (images) • Fonctions d’I/O sur les vidéo
Traitement du signal (images) • Fonctions d’I/O sur les vidéo
Traitement du signal (images) • Fonctions de filtrage (lissage)
Traitement du signal (images) • Fonctions de filtrage (seuillage)
Traitement du signal (images) • Fonctions de filtrage (seuillage)
Traitement du signal (images) • Fonctions de détection de contours
Traitement du signal (images) • Fonctions de détection de contours
Traitement du signal (images) • Fonctions de détection de contours
Traitement du signal (images) • Fonctions de dessin (ellipse)
Traitement du signal (images) • Exemple de programme utilisant openCV (findThresholdFaceNIR.c)
Traitement du signal (images) • Exemple de programme utilisant openCV
Traitement du signal (images) • Exemple de programme utilisant openCV
Traitement du signal (images) • Exemple de programme utilisant openCV
Traitement du signal (images) • Exemple de programme utilisant openCV
Traitement du signal (images) • Exemple de programme utilisant openCV
Traitement du signal (images) • Exemple de programme utilisant openCV
Traitement du signal (images) • Exemple de programme utilisant openCV
Traitement du signal (images) • Exemple de programme utilisant openCV (Exécution)
Traitement du signal (images) • Exemple de programme utilisant openCV (Exécution)