39

Traitement d image et vision par ordinateur avec la

  • Upload
    others

  • View
    8

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Traitement d image et vision par ordinateur avec la

Traitement d'image

et vision par ordinateur

avec la librairie OpenCV

Stéphane Bazeille

Page 2: Traitement d image et vision par ordinateur avec la

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'unensemble de points

Chaque pixel contient des informations sur la lumière (quantité etcontenu spectral/couleur) reçue en ce point de la rétine

Les objets (téléphone, voiture. . . ) n'existent pas sur la rétine etpourtant on les voit : leur interprétation est le résultat duprocessus visuel

Stéphane Bazeille 2007 2 / 39

Page 3: Traitement d image et vision par ordinateur avec la

Qu'est-ce que la vision ?

Stéphane Bazeille 2007 3 / 39

Page 4: Traitement d image et vision par ordinateur avec la

Le problème de la vision

La vision humaine est extrêmement complexe

La vision par ordinateur ne cherche pas à comprendre ou àreproduire la vision humaine mais à construire un modèlealgorithmique qui, vu de l'extérieur, possède des propriétéssemblables

Stéphane Bazeille 2007 4 / 39

Page 5: Traitement d image et vision par ordinateur avec la

Une théorie de la vision

Connaissance a priori

Physiques (optiques, forces/interactions)

Géométriques (formes des objets, formation de l'image)

Sémantique (fonction des objets comportement

Exemple

Quelles sont les valeurs mesurables sur une voiture qui permettent del'identier dans une image ?

Stéphane Bazeille 2007 5 / 39

Page 6: Traitement d image et vision par ordinateur avec la

Les algorithmes de vision

Extraction de primitives à partir des images

Représentation des connaissances (modèle)

Mise en correspondance image/connaissances : reconnaissance

Méthodes d'identication 2D Prétraitement, segmentation (contour, régions)

Extraction d'attributs colorimétriques, de textures et de formes

Classication et reconnaissance

Méthodes d'identication 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

Stéphane Bazeille 2007 6 / 39

Page 7: Traitement d image et vision par ordinateur avec la

Traitement des images

Filtrage

Débruitage, rehaussement de contraste Convolution (ltrage linéaire et non linéaire) Fourier, Gabor, ondelettes . . .

Correction des couleurs ou de la luminosité Espace couleur Transformée de Fourier

Suppression des défauts (distorsion . . .)

Segmentation (extraction d'attributs)

Détection de contours

Fermeture de contours

Extraction de régions

Recherche de points intérêts

Stéphane Bazeille 2007 7 / 39

Page 8: Traitement d image et vision par ordinateur avec la

Exemple : la convolution

Convolution de l'image avec un masque (noyau) xe

La convolution est une opération linéaire

Ef (i , j) = A ∗ E =

m/2∑h=−m/2

m/2∑k=−m/2

A(h, k)E (i − h, j − k)

A

m1 1 11 1 11 1 1

∗ 1/9

m

Stéphane Bazeille 2007 8 / 39

Page 9: Traitement d image et vision par ordinateur avec la

Exemple : la convolution

Exemple de ltre : le ltre de moyennage

Chaque pixel de l'image résultat prend comme valeur la sommepondérée des pixels voisins

90 100 120 125 110 90 100120 110 95 130 100 110 110115 110 100 120 90 105 11090 110 110 95 130 110 110120 125 100 110 105 110 125105 125 110 90 100 90 125110 130 100 110 90 100 130

⇒ résultat = 107

Stéphane Bazeille 2007 9 / 39

Page 10: Traitement d image et vision par ordinateur avec la

Exemple : la convolution

Exemples de matrices de convolution

Gaussien 1/16 2/16 1/162/16 4/16 2/161/16 2/16 1/16

Laplacien 0 -1 0

-1 4 -10 -1 0

-1 -1 -1-1 8 -1-1 -1 -1

Gradient -1 0 1

-2 0 2-1 0 1

1 2 10 0 0-1 -2 -1

Stéphane Bazeille 2007 10 / 39

Page 11: Traitement d image et vision par ordinateur avec la

Exemple : la convolution

Le résultat n'est pas une combinaison linéaire des pixels de l'image àtraiter mais plutôt une fonction non-linéaire telle qu'un min, un maxou la médiane.

Stéphane Bazeille 2007 11 / 39

Page 12: Traitement d image et vision par ordinateur avec la

Certains problèmes

Plusieurs facteurs inuencent le traitement et l'interprétation desimages :

Éclairage variable (éclairage naturel ou articiel)

Arrière-plan

Déformation de perspective

Réectance des matériaux

Modication des couleurs

Bruit du capteur

. . .

Stéphane Bazeille 2007 12 / 39

Page 13: Traitement d image et vision par ordinateur avec la

Quelques exemples concrets

Robotique mobile

Plusieurs facteurs inuencent le traitement et l'interprétation desimages :

Évitement d'obstacles

Découverte d'un environnement inconnu et construction d'unecarte (exploration)

Localisation par rapport aux objets

Reconnaissance d'objets

Stéphane Bazeille 2007 13 / 39

Page 14: Traitement d image et vision par ordinateur avec la

Calibration et reconstruction

Coordonnées homogènes

On passe des coordonnées cartésiennes aux coordonnées homogènesen ajoutant un "1" comme 4ème élément au vecteur

Notions importantes pour la reconstruction

Rotation

Translation

Changement d'échelle ("scaling")

Stéphane Bazeille 2007 14 / 39

Page 15: Traitement d image et vision par ordinateur avec la

Coordonnées homogènes : Transformations d'intérêt

Rotation

RX (α) =

1 0 0 00 cos(α) − sin(α) 00 sin(α) cos(α) 00 0 0 1

RY (β) =

cos(β) 0 sin(β) 0

0 1 0 0− sin(β) 0 cos(β) 0

0 0 0 1

RZ (γ) =

cos(γ) − sin(γ) 0 0sin(γ) cos(γ) 0 0−0 0 1 00 0 0 1

RXYZ (α, β, γ) = RX (α)RY (β)RZ (γ)

RXYZ (α, β, γ)︷ ︸︸ ︷ cos(β) cos(γ) cos(β) sin(γ) sin(β) 0

sin(α) sin(β) cos(γ) + cos(α) sin(γ) − sin(α) sin(β) sin(γ) + cos(α) cos(γ) − sin(α) cos(β) 0

− cos(α) sin(β) cos(γ) + sin(α) sin(γ) cos(α) sin(β) sin(γ) + sin(α) cos(γ) cos(α) cos(β) 0

0 0 0 1

Stéphane Bazeille 2007 15 / 39

Page 16: Traitement d image et vision par ordinateur avec la

Coordonnées homogènes : Transformations d'intérêt

Translation

T =

1 0 0 tx

0 1 0 ty

0 0 1 tz

0 0 0 1

Changement d'échelle "scaling"

S =

sx 0 0 00 sy 0 00 0 sz 00 0 0 1

Stéphane Bazeille 2007 16 / 39

Page 17: Traitement d image et vision par ordinateur avec la

Étalonnage d'une caméra

On veut connaître la relation ("Mapping") entre les points del'espace (3D en mm) et leur position dans l'image (2D en px)

On utilise un modèle simple (mais ecace) pour décrire leprocessus d'acquisition d'image :

susvs

︸ ︷︷ ︸

point image (pixel)

=

α γ u0 00 β v0 00 0 1 0

︸ ︷︷ ︸paramètres intrinsèques

paramètres extrinsèques︷ ︸︸ ︷r1 r2 r3 txr4 r5 r6 tyr7 r8 r9 tz0 0 0 1

XG

YG

ZG

1

︸ ︷︷ ︸

point 3D en mm

⇒ L'étalonnage consiste à déterminer les paramètres de ce modèle

Stéphane Bazeille 2007 17 / 39

Page 18: Traitement d image et vision par ordinateur avec la

Étalonnage d'une caméra

Explication du modèle

Le modèle provient de la formule suivante (si γ = 0) :

p︸︷︷︸point image

=

K︷ ︸︸ ︷TSPr︸ ︷︷ ︸

intrinsèque

extrinsèque︷︸︸︷ECG P︸︷︷︸

point 3D

Stéphane Bazeille 2007 18 / 39

Page 19: Traitement d image et vision par ordinateur avec la

Étalonnage d'une caméra

1 Placer une cible d'étalonnage devant la caméra

2 Repérer la position de chaque marqueur de la cible dans l'image

⇒ On obtient une liste de coordonnées3D (global) accompagnées de leurprojection dans l'image

[u1 v1][u2 v2]...

...[uN vN ]

[X1 Y1 Z1][X2 Y2 Z2]...

......

[XN YN ZN ]

3 Chaque point nous donne 2 équations de plans et on a 11 inconnues (5 intr.

+ 6 extr. car il y a 6 contraintes sur R)susvs

=

α γ u0

0 β v0

0 0 1

r1 r2 r3 tx

r4 r5 r6 ty

r7 r8 r9 tz

XG

YG

ZG

4 On construit un système d'équations linéaires que l'on peut résoudre à l'aide

des techniques d'algèbre linéaire standards (moindre carrés) → mij

5 On extrait, s'il y a lieu, les paramètres explicites α, β, tx . . .

Stéphane Bazeille 2007 19 / 39

Page 20: Traitement d image et vision par ordinateur avec la

Étalonnage d'une caméra

Il existe plusieurs techniques d'étalonnage : Zhang, Tsai, Heikkilä,Faugeras, . . .

Le type de cible et le modèle de la caméra utilisée changent

Le système d'équations à résoudre dière en fonction de cesvariantes

L'idée est toujours la même : trouver les paramètres permettantde faire le "mapping" entre les points de l'espace et leur positiondans l'image

Stéphane Bazeille 2007 20 / 39

Page 21: Traitement d image et vision par ordinateur avec la

OpenCV

1 Généralités sur OpenCV

2 Compiler Visual C++ 6

3 Premier programme utilisant une Webcam

4 Deuxième programme utilisant les MFC 1

1. Microsoft Foundation ClassStéphane Bazeille 2007 21 / 39

Page 22: Traitement d image et vision par ordinateur avec la

Présentation

Bibliothèque de traitement d'image et de vision par ordinateur enlangage C/C++, optimisée, proposée par Intel pour Windows etLinux

Open Source

Comprend une très grand nombre d'opérateurs "classiques"

Stéphane Bazeille 2007 22 / 39

Page 23: Traitement d image et vision par ordinateur avec la

Présentation

CV et CVAUX

Traitement d'image Gradient, contours, coins et contours actifs Morphomath (érosion, dilatation, fermeture . . .) Filtrages divers (lissage, rehaussement contraste, suppression fond . . .) Conversion d'espace couleur (RGB, HSV, YCbCr . . .) Etiquetage, manipulation de contours Transformations diverses (Fourier, Hough . . .) Histogrammes

Analyse de mouvement et suivi Suivi d'objets, ot optique . . .

Reconstruction Calibration, mise en correspondance . . .

Détection et reconnaissance de formes Détection de visages et autres formes particulières

Stéphane Bazeille 2007 23 / 39

Page 24: Traitement d image et vision par ordinateur avec la

Présentation

CXCORE et HIGHGUI

Structures élémentaires Matrices, tableaux, listes, les, graphes, arbres . . . Opérateurs standards sur ces structures

Dessin de primitives géométriques Lignes, rectangles, ellipses, polygônes . . . et texte

Création et libération d'images

Chargement et sauvegarde d'images

Chargement et sauvegarde de vidéos

Interface utilisateur Souris Clavier

Stéphane Bazeille 2007 24 / 39

Page 25: Traitement d image et vision par ordinateur avec la

Généralités

Codage des imagesUn seul tableau (codage par défaut BGR)

Déclaration d'imageIplImage *im =

cvCreateImage(cvSize(nl,nc),IPL_DEPTH_8U,3) ;

LibérationcvReleaseImage(&im) ;

Chargement et achageim = cvLoadImage("Mon_image.jpg",1) ;

cvNamedWindow("Ma_fenetre",1) ;

cvShowImage("Ma_fenetre",im) ;

Stéphane Bazeille 2007 25 / 39

Page 26: Traitement d image et vision par ordinateur avec la

Généralités

Accès au pixel

unsigned char *data =reinterpret_cast <unsigned char *>(frame→imageData) ;

for(i=0 ;i<nl ;i++)

for(j=0 ;j<(nc*nbchannel) ;j+=nbchannel)

data[j]=255 ;data[j+1]=0 ;data[j+2]=0 ;

data+=step ;

Stéphane Bazeille 2007 26 / 39

Page 27: Traitement d image et vision par ordinateur avec la

Compilation sous VISUAL C++ 6

Les chemins suivants permettent de lier la bibliothèque et sont des cheminsabsolus considérant l'installation par défaut dans :C :\Program Files\OpenCV\

Dans le menu Project, Settings, C/C++, catégorie 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, Links, catégorie Input, ajouter leslibrairies suivantes dans Object/library modules :

cv.lib cvaux.lib cxcore.lib highgui.lib

Ajouter le lien suivant dans Additional library path :

C :\Program Files\OpenCV\lib

Modier la variable d'environnement PATH de Windows en ajoutant :

C :\Program Files\OpenCV\bin

Stéphane Bazeille 2007 27 / 39

Page 28: Traitement d image et vision par ordinateur avec la

Premier programme

Créer un projet Win32ConsoleApplication

Ajouter les liens précédents

Ajouter dans le chier main.cpp :#include <stdio.h>#include <cv.h>#include <cvaux.h>#include <highgui.h>

Stéphane Bazeille 2007 28 / 39

Page 29: Traitement d image et vision par ordinateur avec la

ExempleAchage et traitement d'un ux vidéo provenant d'une webcam

int main ()

int i,j ;CvCapture *capture = cvCaptureFromCAM(0) ;cvNamedWindow("Capture Webcam",0) ;cvNamedWindow("Capture Rouge",0) ;if(capture)

IplImage *frame = cvQueryFrame(capture) ;int nl=frame→height, nc=frame→width,

step=frame→widthStep, nbchannel=frame→nChannels, a=1 ;printf("PRESS SPACE TO QUIT \n\n") ;while(a)

frame = cvQueryFrame(capture) ;cvShowImage("Capture Webcam",frame) ;if(cvWaitKey(1) !=-1)a=0 ;unsigned char *data = reinterpret cast <unsigned char *>(frame→imageData) ;for(i=0 ;i<nl ;i++)

for(j=0 ;j<(nc*nbchannel) ;j+=nbchannel)

if((data[j]<128)&&(data[j+1]<128)&&(data[j+2]>128))data[j]=0 ;data[j+1]=0 ;data[j+2]=255 ;

elsedata[j]=128 ;data[j+1]=128 ;data[j+2]=128 ;data+ = step ;

cvShowImage("Capture Rouge",frame) ;

else printf("Video stream not found \n\n") ;return 0 ;

Stéphane Bazeille 2007 29 / 39

Page 30: Traitement d image et vision par ordinateur avec la

WebcamDEMO

Stéphane Bazeille 2007 30 / 39

Page 31: Traitement d image et vision par ordinateur avec la

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 chier Demo.h

Compléter le chier OpenCvDemoDlg.cpp contenant lesfonctions associées aux boutons

Créer le chier Demo.cpp

Stéphane Bazeille 2007 31 / 39

Page 32: Traitement d image et vision par ordinateur avec la

Classe image : Demo.h

class UneImage

IplImage*img ;public :UneImage(CString filename, bool display=TRUE) ← constructeur

img = cvLoadImage(filename) ;if(display)

cvNamedWindow("Image Originale",1) ; ← créer une fenêtre

cvShowImage("Image Originale",img) ; ← acher l'image dans la fenêtre

void process() ;void display()

cvNamedWindow("Image Résultat",1) ;cvShowImage("Image Résultat",img) ;

~UneImage() ← destructeur

cvReleaseImage(&img) ;

;

Stéphane Bazeille 2007 32 / 39

Page 33: Traitement d image et vision par ordinateur avec la

OpenCvDemoDlg.cpp

Le chier Dlg contient la classe fenêtre

Inclure les chiers : Demo.h contenant la classe UneImage cv.h, cvaux.h, highgui.h

Compléter les fonctions associées aux boutons : OnOpen OnProcess

Stéphane Bazeille 2007 33 / 39

Page 34: Traitement d image et vision par ordinateur avec la

OpenCvDemoDlg.cpp OnOpen

void COpenCVDemoDlg : :OnOpen()⇒ ToDo : add your control notication 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) ;

;

Stéphane Bazeille 2007 34 / 39

Page 35: Traitement d image et vision par ordinateur avec la

OpenCvDemoDlg.cpp OnProcess

void COpenCVDemoDlg : :OnProcess()⇒ ToDo : add your control notication handler code here

if(image !=0)

image → process() ;image → display() ;

Dans le chier Demo.cpp, on trouvera donc les fonctions detraitement associées à la méthode process.

Stéphane Bazeille 2007 35 / 39

Page 36: Traitement d image et vision par ordinateur avec la

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) ;

Stéphane Bazeille 2007 36 / 39

Page 37: Traitement d image et vision par ordinateur avec la

Résultats

Stéphane Bazeille 2007 37 / 39

Page 38: Traitement d image et vision par ordinateur avec la

Conclusion

La documentation (papier et en ligne) décrit pratiquement tousles algorithmes implémentés

Des exemples de codes sont disponibles dans le dossier "samples"d'OpenCV pour des problèmes assez complexes

Stéphane Bazeille 2007 38 / 39

Page 39: Traitement d image et vision par ordinateur avec la

Web

http://www.ensieta.ecole/e3i2/Bazeille

http://perception.inrialpes.fr/people/Horaud/livre-hermes/html

http://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

Stéphane Bazeille 2007 39 / 39