traitement dimages et vision par ordinateur avec la librairie opencv stéphane bazeille
TRANSCRIPT
![Page 1: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/1.jpg)
Traitement d’images et vision par ordinateur avec
la librairie OPENCV
Stéphane Bazeille
![Page 2: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/2.jpg)
Mise en œuvre d’un système de régulation basé
sur la visionSuivi d’un objet coloré à l’aide d’une webcam montée sur un servo-moteur.
Capteur : webcamRégulation : servo/pan & tilt + Labjack + PC
![Page 3: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/3.jpg)
Le capteur visuel dans le contexte de la robotique
mobileCapteur peu cher, il équipe la plupart des robots.Information riche (haute résolution). Encore peu utilisé car traitements complexes.Perception de l’environnement
Détection et évitement d’obstacles,Reconnaissance d’objets et intervention,Cartographie, carte d’exploration lors de la découverte d’un environnement inconnu.
![Page 4: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/4.jpg)
Qu’est-ce que la vision« Le monde » a une structure 3D et est composé d’objets.L’être humain sait parfaitement décrire et interpréter ce monde.Pourtant, l’information disponible sur la rétine n’est qu’un ensemble de points.
![Page 5: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/5.jpg)
Qu’est-ce que la visionChaque pixel contient des informations sur la lumière (quantité et contenu spectral/couleur) reçue en ce point de la rétine.Les objets (téléphone, voiture…) n’existent pas sur la rétine, et pourtant on les voit : leur interprétation est le résultat du processus visuel.
![Page 6: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/6.jpg)
Codage des imagesRGB: 3 plans. Couleurs primaires en synthèse additive comme l’œil humain.Niveau de gris: 1 plan.
Cas courant: entier entre 0-255.Parfois: double pour un codage fréquentiel par exemple.
![Page 7: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/7.jpg)
Le système de vision
![Page 8: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/8.jpg)
Le problème de la visionLa vision humaine est extrêmement complexe.La vision par ordinateur ne cherche pas à comprendre ou à reproduire la vision humaine, mais à construire un modèle algorithmique qui, vu de l’extérieur, possède des propriétés semblables.
![Page 9: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/9.jpg)
Les algorithmes de visionExtraction de primitives à partir des images.Représentation des connaissances. (modèle)Mise en correspondance image/connaissances : reconnaissance.
![Page 10: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/10.jpg)
Les algorithmes de vision1) Méthodes d’identifications « 2D ».
Prétraitement, segmentation (contour, régions)Extraction d’attributs colorimétriques, de textures et de forme,Classification et reconnaissance.
2) Méthodes d’identifications « 3D ».Segmentation (détection des points d’intérêts),Appariement des points d’intérêts,Calibration de la caméra,Extraction d’attributs géométriques Reconnaissance.
![Page 11: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/11.jpg)
Pourquoi OPENCVUtiliser la vision en contexte robotique pour des applications simples.Utiliser les traitements sans forcement connaître les algorithmes.Bibliothèque optimisée, traitement temps réel.
![Page 12: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/12.jpg)
Les algorithmes de visionOPENCV intervient dans les premiers niveaux du processus de reconnaissance :
Prétraitement des images, Segmentation (contours, régions)Segmentation (détection des points d’intérêts),Appariement des points d’intérêts,Calibration de la caméra,
![Page 13: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/13.jpg)
Le prétraitement des images
FiltrageDébruitage, rehaussement de contraste
Convolution (filtrage linéaire et non linéaire)Fourier, Gabor, ondelettes…
Correction des couleurs ou de la luminosité
Espace couleur, histogrammesTransformée de Fourier
Suppression des défauts (distorsion…)
![Page 14: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/14.jpg)
La segmentation et calibration
Segmentation (extraction d’attributs)Détection de contour ou de forme,Extraction de régions,Recherche de points intérêts,
CalibrationMise en correspondance de points,Calcul de pose et estimation de paramètres…
![Page 15: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/15.jpg)
Concours Robotique SAUC’E
Les épreuves:Franchir un cadre immergé sans le toucher (3mx2,5m)Larguer un marqueur au dessus d'une cible circulaire posée sur le fond. Localiser une cible rouge « entre deux eaux » et la toucher. Produire une cartographie de la zone de compétition (30mx20m). Obtenir les coordonnées de chaque objet: le cadre, la cible, la boule rouge, le leurre, le pneu, le plot, et zone de sortie flottante.Faire surface dans un hexagone blanc flottant (3mx3m)
![Page 16: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/16.jpg)
Présentation OPENCV
Généralités sur OPENCVCompiler sous Visual C++ 6Un premier programmeTraitement des images et des séquencesCréation d’une interface graphiqueProgramme de calibration à partir d’un échiquier (méthode de Zhang)
![Page 17: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/17.jpg)
Présentation OPENCV
Bibliothèque de traitement d’images et de vision par ordinateur en langage C/C++, optimisée, proposée par Intel pour Windows et Linux.Elle est « Open Source »Elle comprend un très grand nombre
d’opérateurs “classiques”.
![Page 18: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/18.jpg)
Présentation OPENCVCV et CVAUX
Traitement d’imageGradient, contours, coins et contours actifs,Morphomath (érosion, dilatation, fermeture…)Filtrages diverses (lissage, rehaussement de contraste, suppression de fond…)Conversion d’espace couleur (RGB, HSV, YCbCr…)Etiquetage, manipulation de contours,Transformations diverses (Fourier, Hough…)Histogrammes
![Page 19: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/19.jpg)
Présentation OPENCVAnalyse de mouvement et suivi
Suivi d’objets, flot optique…
ReconstructionCalibration, mise en correspondance…
Détection et reconnaissance de formes
détection de visages et autres formes particulières…
![Page 20: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/20.jpg)
Présentation OPENCVCXCORE et HIGHGUI
Structures élémentairesmatrices, tableaux, listes, files, graphes, arbres…opérateurs standards sur ces structures,
Dessin de primitives géométriqueslignes, rectangles, ellipses, polygones… et texte.
Manipulation des images et des séquenceslecture, écriture…
Interface utilisateurfenêtre, entrées/sorties utilisateur…
![Page 21: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/21.jpg)
Compilation sous VISUAL C++ 6
Les chemins suivants permettant de lier la bibliothèque, sont des chemins absolus considérant l'installation par défaut dans C:\Program Files\OpenCV\
Dans le menu "Project", "Settings", "C/C++", category "Preprocessor".Ajouter les liens suivants dans "Additional include directories":
C:\Program Files\OpenCV\cv\include, C:\Program Files\OpenCV\cvaux\include, C:\Program Files\OpenCV\cxcore\include,C:\Program Files\OpenCV\otherlibs\highgui
Dans le menu "Project", "Settings", "Link", catégorie "Input".Ajouter les librairies suivantes dans "Object/library modules":
cv.lib cvaux.lib cxcore.lib highgui.libAjouter le lien suivant dans "Additional library path":
C:\Program Files\OpenCV\lib
Modifier la variable d'environnement "PATH" de Windows en ajoutant: C:\Program Files\OpenCV\bin
![Page 22: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/22.jpg)
Premier programme
Créer un projet Win32ConsoleApplication
Ajouter les liens précédents.Ajouter dans le fichier main.cpp
#include <cv.h>#include <cvaux.h>#include <highgui.h>
Exemple : Lecture/affichage d’une image et application d’un filtre de convolution.
![Page 23: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/23.jpg)
Rappel : la convolution
• Convolution de l'image avec un masque (noyau) fixe
• La convolution est une opération linéaire
![Page 24: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/24.jpg)
La convolution• Exemple de filtre : Le filtre de moyennage
– Chaque pixel de l'image résultat prend comme valeur la somme pondérée des pixels voisins.
110
100
120 95 130
90
100 110
105110
125
115
120
90 110
125120 90110
130 100 110
125 90110 100
110
90
110
90 100110
105
110
100
110
125
110
130
125
110
100 120
95 130
90
100 110 105
Résultat = 107
Gaussien 1/16 2/16
1/162/16 4/16
2/161/16 2/16
1/16
Laplacien 0 -1 0 -1 -1 -1 -1 4 -1 -1 8 -1 0 -1 0 -1 -1 –1
Gradient -1 0 1 1 2 1 -2 0 2 0 0 0 -1 0 1
-1 -2 -1
![Page 25: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/25.jpg)
Rappel : les pointeursVariable contenant l’adresse d’une autre variable d’un type donné.Exemple:
int a=2;int *p1;p1=&a;int b=*p1;
int tableau[100];tableau[3]=5;*(tableau+2)=4;
int* t=tableau;
![Page 26: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/26.jpg)
Rappel : les pointeursCvMat Ma=cvMat(3,3,CV_32FC1);
CvMat *Mb=cvCloneMat(&Ma);
CvMat *Mc=cvCreateMat(3,3,CV_32FC1);
void cvAdd(CvMat*, CvMat*, CvMat*);
cvAdd(&Ma,Mb,Mc);
Class CvMat{
int rows; printf(‘’%lf’’,Ma.rows);
int cols; printf(‘’%lf’’,*Mb.cols);
int type;
float[] data.fl; printf(‘’%lf’’,*Mc.data.fl[0]);
} printf(‘’%lf’’,Mc->data.fl[0]);
![Page 27: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/27.jpg)
Généralités Codage des images comme les matrices
Un seul tableau (codage par défaut BGR)Classe IPLImage (objet)
widthheightnChannels (en général 1 ou 3)depth (Unsigned char 8bits jusqu’au Float 64)imageData
![Page 28: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/28.jpg)
Un premier programmeDéclaration
IplImage *im = cvCreateImage(cvSize(nl,nc),IPL_DEPTH_8U,1);IplImage *gaussian = cvCreateImage(cvSize(nl,nc),IPL_DEPTH_8U,1);
Chargement et affichageim = cvLoadImage(« Mon_image.jpg », 1);cvNamedWindow(« Ma fenêtre », 1);cvSmooth(im,gaussian,CV_BLUR,7,7);cvShowImage (« Ma fenêtre », gaussian);cvWaitKey(3000);
LibérationcvReleaseImage(&im);
![Page 29: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/29.jpg)
Exemple convolution
![Page 30: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/30.jpg)
Traitement séquenceTraitement d'un flux vidéo provenant d'une webcam (détection des pixels à dominantes rouges)
Capture d’une image dans une séquenceCvCapture* capture=cvCaptureFromCAM(0);IplImage* frame=cvQueryFrame(capture);
![Page 31: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/31.jpg)
Exemple de détection couleur
Accès aux pixels avec OPENCV
for(int i=0;i<frame->height;i++){
for(int j=0;j<(frame->width*frame->nChannels);j+=frame->nChannels){
frame->imageData[i*frame->widthStep+(j+0)]= 0;frame->imageData[i*frame->widthStep+(j+1)]= 0;frame->imageData[i*frame->widthStep+(j+2)]=255;
}}
![Page 32: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/32.jpg)
WebcamDEMO
![Page 33: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/33.jpg)
Programme utilisant les MFC
Créer un projet MFCAppWizard (exe)Dialog-based application. (OK/Cancel)Création automatique de 4.cpp et 4.h
Ajouter les liens précédents.Créer les boutons dans la fenêtre.
A chaque ajout d’un bouton une fonction est créée
Créer le fichier Demo.h
Compléter le fichier OpenCvDemoDlg.cpp contenant les fonctions associées aux boutons.Créer le fichier Demo.cpp
![Page 34: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/34.jpg)
Classe imageclass UneImage {
IplImage* img;public:UneImage(CString filename, bool display=TRUE){ //constructeur
img=cvLoadImage(filename);if(display){
cvNamedWindow("Image Originale",1); //créer une fenêtrecvShowImage("Image Originale",img); //afficher l'image
dans la fenêtre}
}~UneImage(){ //destructeur
cvReleaseImage(&img);}void display(){
cvNamedWindow("Image Résultat",1);cvShowImage("Image Résultat",img);
}void process();
};
![Page 35: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/35.jpg)
OpenCvDemoDlg.cppLe fichier Dlg contient la classe fenêtre.Inclure les fichiers:
Demo.h contenant la classe UneImage. cv.h,cvaux.h,highgui.h
Compléter les fonctions associées aux boutons
OnOpenOnProcess
![Page 36: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/36.jpg)
OpenCvDemoDlg.cppvoid COpenCVDemoDlg::OnOpen() { // TODO: Add your control notification handler code here
CFileDialog dlg(TRUE, _T("*.bmp"), "",OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,"image files (*.bmp; *.jpg) |*.bmp;*.jpg|AVI files (*.avi)|*.avi|All Files (*.*)|*.*||",NULL);
char title[]= {"Open Image"}; dlg.m_ofn.lpstrTitle= title;
if (dlg.DoModal() == IDOK){CString path= dlg.GetPathName();
if(image!=0) delete image; image = new UneImage(path);}
}
![Page 37: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/37.jpg)
OpenCvDemoDlg.cppvoid COpenCVDemoDlg::OnProcess() { // TODO: Add your control notification handler code here if(image!=0){
image->process(); image->display();
}}
Dans le fichier Demo.cpp on trouvera donc les fonctions de traitement associées à la méthode process.
![Page 38: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/38.jpg)
Demo.cpp#include "stdafx.h"#include "Demo.h"
UneImage *image=0;
void UneImage::process(){
IplImage* image = reinterpret_cast<IplImage*>(img);IplImage* color = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U , 3);IplImage* gray = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_8U , 1);IplImage* laplace = cvCreateImage(cvSize(image->width,image->height), IPL_DEPTH_16S, 1);
cvCvtColor(image, gray, CV_BGR2GRAY);cvLaplace(gray,laplace,3);cvConvertScale(laplace, gray, 1, 0 );cvCvtPlaneToPix(gray, gray, gray, 0, image);
}
![Page 39: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/39.jpg)
Résultats
![Page 40: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/40.jpg)
Programme CalibrationCalibration à partir d’un échiquier et d’une webcam, sans connaissances des positions de la caméra.
Lecture du flux vidéoPhotos de la cible d’étalonnageRecherche des coins dans les photosCalcul des paramètres de calibration par des techniques d'algèbre linéaire standards (moindre carrés)
![Page 41: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/41.jpg)
Étalonnage d'une caméraOn veut connaître la relation entre les points de l'espace (3D, en millimètres) et leur position dans l'image (2D, en pixels).On utilise un modèle simple (mais efficace) pour décrire le processus d'acquisition d'image :
L'étalonnage consiste à déterminer les paramètres de ce L'étalonnage consiste à déterminer les paramètres de ce modèlemodèle
Paramètresintrinsèques
Paramètresextrinsèques
point 3D(en mm)
point image(pixel)
![Page 42: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/42.jpg)
PETSPp CG
K
r
~~
Étalonnage d'une caméra :Explication du modèle
intrinsèques
extrinsèques
point 3D
point image
Z
Y
X
u
v
OI
OcZ
Y
X
OG
(u0,v0)
p=(u,v)
P=(X,Y,Z)
Centre deprojection
Axe optique
Centre duplan image
Plan image
![Page 43: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/43.jpg)
Conclusion sur OPENCV« Open Source » donc utilisée par une très grande communauté.Les codes sont optimisés.La documentation (papier et en ligne) décrit pratiquement tous les algorithmes implémentés.Des exemples de code sont disponibles dans le dossier « samples » d’OPENCV pour des problèmes assez complexes.
![Page 44: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/44.jpg)
Le boitier LabjackSystème d'acquisition de données à connexion USB et Ethernet.Piloter un moteur par une sortie numérique.
PWM : Modulation de largeur d'impulsions (Pulse Width Modulation) utilisée pour synthétiser des signaux continus à l'aide de circuits à fonctionnement tout ou rien. 16-bit PWM output: le rapport cyclique détermine la valeur.
![Page 45: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/45.jpg)
Fonctions Labjackint U3Open(LJ_HANDLE* pHandle);int U3Reset(LJ_HANDLE lngHandle);int U3ConfigTimers(LJ_HANDLE lngHandle, int timer_clock_divisor, int timer_duty_cycle_init);int U3ModifyDutyCycle(LJ_HANDLE lngHandle, int timer_duty_cycle, int num_timer);int U3Close(LJ_HANDLE* pHandle);
![Page 46: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/46.jpg)
Le servo-moteurUn servomoteur est un système motorisé capable d'atteindre des positions prédéterminées, puis de les maintenir.
En aéromodélisme, les servos servent à actionner les parties mobiles comme les ailerons par exemple.
On utilisera des servos asservis en position. (angle compris entre -40°et +40°)
![Page 47: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/47.jpg)
Commande d’un servomoteur
Paramètres pour la commande d'un servomoteur - Fréquence Labjack 4 Mhz.- Fréquence et période du PWM ~61 Hz et 16.39ms (avec 65536 échantillons par période).Il faut fournir au servo-moteur une impulsion suivie d’un retour à zéro. La largeur d’impulsion est convertie proportionnellement en angle comme indiqué sur le schéma suivant.
![Page 48: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/48.jpg)
PWMNb échantillons
/période : 65536
Déplacement max image : 768
Déplacement max servo : 61136
Déplacement min servo 57936
![Page 49: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/49.jpg)
Sujet du TP1) Détecter les objets rouges dans la séquence et calculer le barycentre.2) Calculer l’angle de déplacement nécessaire pour recentrer l’objet dans l’image.3)Générer le signal PWM correspondant à l’angle calculé.
![Page 50: Traitement dimages et vision par ordinateur avec la librairie OPENCV Stéphane Bazeille](https://reader035.vdocuments.pub/reader035/viewer/2022062511/551d9db5497959293b8d9952/html5/thumbnails/50.jpg)
Webhttp://www.ensieta.ecole/e3i2/Bazeille/http://perception.inrialpes.fr/people/Horaud/livre-hermes.htmlhttp://www710.univ-lyon1.fr/~ameyer/devel/opencv/docs/ref/opencvref_cv.htmhttp://www710.univ-lyon1.fr/~ameyer/devel/opencv/docs/ref/opencvref_cxcore.htmhttp://www710.univ-lyon1.fr/~ameyer/devel/opencv/docs/ref/opencvref_highgui.htm