Introduction à OpenCV GEL – Design III Charles du Tremblay

Slides:



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

OpenCV: Introduction au Traitement d’Images et Vidéo
INF-1019 Programmation en temps réel
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Traitement d’images et vision par ordinateur avec la librairie OPENCV
Design dun système de vision embarqué. Application:
OpenCV: Introduction au Traitement d’Images et Vidéo
Chapitre 4 : Morphologie Mathématique
Programmation Création d’une mire 1 afficher une image
Semaine 06 vA14 Modèle colorimétrique Détection de contours
Vision industrielle Les applications industrielles de la vision : –Lecture de code barre (barcode) –Detection et position d objets (battery) –Reconnaissance.
Traitement d’images 420-D78-SW A15 Semaine 02.
Traitement d’images Semaine 03 A15 Seuillage.
Partie II : Segmentation
Traitement d’images Semaine 09 vA15.
L'image: Le codage des images BacPro SEN Lycée Condorcet.
Modélisation Géométrique Cours 4 : Acquisition de la géométrie.
Traitement d’images Semaine 01. Plan de leçon Plan de cours Traitement d’images – Définition – Domaine d’application Définition du spectre électromagnétique.
Le Pré-traitement en pratique Conférence AIP 2008Luc Coiffier Auteur de DeepSkyStacker.
Comparing color edge detection and segmentation methods Projet TIM.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Traitement d’images 420-D78-SW A16 Semaine 02 Plan de leçon  Images : définition  Mat : définition  Filtres de lissage  Les fonctions et méthodes.
Introduction à la vision numérique Présentation du plan de cours Lectures supplémentaires: Sonka et al: chap. 1 Patrick Hébert & Denis Laurendeau (dernière.
Traitement d'images en Java avec JAI
Traitement d’images 420-D78-SW A17 Semaine 02.
Réaliser un CD lecteur de salon (photos ou vidéos) pouvant être lu
I- ANALYSE DU BESOIN / Plan
Traitement d’images Semaine 01.
Introduction à la vision artificielle Traitement des images
Pas de variable globale
Pointeurs et langage C.
TP N°3 : Adressage IP Les classes IP
Traitement d’images Semaine 05.
Traitement d’images Semaine 04 et 05 Version 2017.
Semaine 11 Les pointeurs (suite)
Détection de coutours - Exemples élémentaires -
PHP Création et manipulation d'images
Format des fichiers TIFF
Feuilles de style Cascading Style Sheets
INTELLIGENCE ARTIFICIELLE
Codage Indenter le code Limiter la portée des variables Traiter les erreurs en premier Utiliser le switch au delà de 3 tests en cascades Ne jamais utiliser.
Réalisation d’une lampe connectée pilotée par bluetooth
SIF-1033 Traitement d’image
Programmation en C++ C++ de base
Regroupement contextuel de cimes dans les images aéroportées
Introduction au traitement d’images Simulation sous Matlab Professeur. Mohammed Talibi Alaoui Département Mathématique et Informatique, Oujda.
Calcul Scientifique Initiation à SCILB
PHP Création et manipulation d'images
2018 Nouveau Portail Web Journée des utilisateurs Octopus
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
VI. Introduction à l ’indexation
SIF1033 TRAITEMENT D’IMAGE
BIOS- OS Environnement logiciel PC / Traitement numérique / Contrôle.
Capture d’écrans pour les pages Web
Systèmes ADAS: Détection de panneaux de vitesse
Développement d’une application Android sur le suivi oculaire
Sujets Spéciaux en informatique II
Systèmes ADAS: Assistant de contrôle de direction et de voies
1 Architecture des ordinateurs Généralités. 2 Définition Informatique = Information + Automatique Ce terme a été introduit en France. Il est très répandu.
Wilber. Définition: GIMP , pour GNU Image Manipulation Program, littéralement « programme GNU de manipulation d'images », est un logiciel libre et gratuit.
GRAPHISME PAR ORDINATEUR
Listes Chaînées.
Problématique Se connecter au drône pour la capture vidéo en le pilotant. Détecter les carrés rouges et les suspects potentiels. Trouver « Le prof Meuniono»
Modèle d’image de réseau social
App Inventor trucs Afficher une image depuis le Web ou Google Drive.
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Chap2. Fonctions d'un système de vision
Vision DÉFINITION   La vision par ordinateur ou vision artificielle est le traitement d’images par ordinateur provenant d’un dispositif extérieur tel.
Transcription de la présentation:

Introduction à OpenCV GEL – 21405 Design III Charles du Tremblay

Plan Pourquoi OpenCV? Qu’est-ce qu’OpenCV? Structure de l’image IPL Fonctionnalités offertes Exemples d’utilisation

Pourquoi OpenCV? Une grande part de vos résultats dépendent de la vision. Fournit un lien entre la caméra et votre application (IA). Offre des outils pour traiter vos images et faciliter la reconnaissance du terrain.

Qu’est-ce qu’OpenCV? OpenCV: Open Source Computer Vision Library OpenCV vise: La vision numérique en temps réel La segmentation, reconnaissance et identification d’objets OpenCV offre: Une collection d’algorithmes Des exemples de codes

Qu’est-ce qu’OpenCV OpenCV est bâtit sur IPL (Intel Image Processing Library): Même format d’image (IPL image) La plupart des fonctions sont compatibles Différences: Fonctions exclusives Quelques fonctions incompatibles OpenCV: utilisation partielle du format IPL image

Structure de l’image IPL IplImage : nSize sizeof(IplImage) (int) nChannels Nb. de canaux (1-4 en OpenCV) (int) depth Bits par pixels (int) width Largeur de l’image en pixels (int) height Hauteur de l’image en pixels (int) roi Region Of Interest (_IplROI*) maskROI1 Masque (_IplImage*) alphaChannel2 Canal alpha (int) colorModel2 Espace couleur utilisé (char[4]) BorderMode2 Mode de détection de contour (int[4]) […] 1 Doit être NULL pour les fonctions OpenCV 2 Non supporté ou ignoré par OpenCV. Utile pour IPL.

Fonctionnalités offertes Création, allocation & destruction d’images Détection de contours Conversion d’espace couleur Analyse de contour Soustraction d’arrière-plan Détection de régions Pyramides d’images Opération morphologiques (érosion, dilatation, etc.) Seuillage […]

Création, allocation & destruction d’images Lier une caméra Fonction: cvCaptureFromCAM(int index) Retourne un objet CvCapture* qui définit votre caméra L’index importe peu pour une seule caméra Prendre une image Fonction: cvGrabFrame(CvCapture* camera) Demande à la caméra de capturer une image Fonction: cvRetrieveFrame(CvCapture* camera) Retourne une image IPL (IplImage*) Le format par défaut est BRG 8-bits

Création, allocation & destruction d’images Créer une image vide Fonction: cvCreateImage(CvSize size, int depth, int channels) Retourne une image IPL (IplImage*) remplie de 0. Libérer la mémoire Fonction: cvReleaseImage(&IplImage img) Pour libérer l’espace mémoire prise par une image. Fonction: cvReleaseCapture(&CvCapture camera) Pour libérer la caméra.

Conversion d’espace couleur Pour OpenCV: Espaces couleurs: RGB (BRG, RBG, etc.) HSV YCRCB CIE XYZ Fonction: cvCvtColor(&imgSrc, &imgDest, code) CIE Lab Bayer Greyscale Attention à l’ordre des composantes RGB dans les images que vous traitez! Par défaut, vos images sont capturées en BRG et non en RGB.

Seuillage Permet une première identification des points d’intérêts. Garde les pixels de la couleur de l’objet recherché Image originale Seuil sur RGB : blanc Seuil sur HSV : rouge

Exemple d’application Trouver un objet rouge dans une image: Initialiser la caméra et les images. Convertir l’espace couleur. Parcourir l’image HSV et vérifier les pixels par rapport aux seuils fixés. Détruire l’image et libérer la mémoire.

Exemple d’application Initialiser la caméra et les images //Définir une caméra CvCapture* camera = cvCaptureFromCAM( -1 ); //Capturer une image cvGrabFrame( camera ); //Aller chercher l’image sous format IplImage IplImage* brgFrame = cvRetrieveFrame( camera ); //Copies de l’image pour les transformations… IplImage* seuilFrame = cvCreateImage( cvGetSize(brgFrame), IPL_DEPTH_8U , 1 ); IplImage* hsvFrame = cvCreateImage( cvGetSize(brgFrame), IPL_DEPTH_8U, 3 );

Exemple d’application Convertir l’espace couleur //Conversion BGR -> HSV cvCvtColor( brgFrame, hsvFrame, CV_BGR2HSV ); //Retourne l’image par rapport à X si nécessaire cvFlip( hsvFrame, NULL, 0); //0 = axe X

Exemple d’application Parcourir l’image HSV et vérifier les seuils //Pour chaque pixel… for(int y = 0; y < (cvGetSize(hsvFrame).height); y++) { for(int x = 0; x < (cvGetSize(hsvFrame).width); x++) //…si HSV entre les seuils max et min… if( //test minH (=0) ((hsvFrame->imageData + hsvFrame->widthStep*y))[x*3] > 0 && //test maxH (=50) ((hsvFrame->imageData + hsvFrame->widthStep*y))[x*3] < 50 &&

Pourquoi « [x*3+k]… Donc… k=0 pour H k=1 pour S k=2 pour V

Exemple d’application Parcourir l’image HSV et vérifier les seuils (suite) //test minS (=100) (hsvFrame->imageData + hsvFrame->widthStep*y)[(x*3)+1] >100 ) //…placer un point blanc dans l’image « seuils ». ( seuilFrame->imageData + seuilFrame->widthStep*y)[x] = 255; //Sinon, placer un point noir. else ( seuilFrame->imageData + seuilFrame->widthStep*y)[x] = 0; } } //fin des boucles

Exemple d’application Détruire l’image et libérer la mémoire […suite des opérations sur l’image…] //Libérer l’espace des images cvReleaseImage( &brgFrame ); cvReleaseImage( &hsvFrame ); cvReleaseImage( &seuilFrame ); //Libérer la caméra cvReleaseCapture( &camera );

Bon Travail! Références: Intel Image Processing Library Reference Manual OpenCV Reference Manual http://wcours.gel.ulaval.ca/2006/a/21405/default/7references/index.chtml http://www.site.uottawa.ca/~laganier/tutorial/opencv+directshow http://www710.univ-lyon1.fr/~bouakaz/OpenCV-0.9.5/docs/