traitement d’images semaine 07 va13 morphologie. plan de leçon source vidéo morphologie ...
TRANSCRIPT
Traitement d’imagesSemaine 07 vA13Morphologie
Plan de leçon Source vidéo Morphologie
É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
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 : Exempleint 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 Tout ce qui touche au point d’ancrage
de l’opérateur est converti à la valeur la plus basse
Élément structurantcarré de 3x3
Exemple : centre
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 structurantcarré 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
𝑑𝑠𝑡=𝑚𝑜𝑟𝑝h𝑔𝑟𝑎𝑑 (𝑠𝑟𝑐 ,𝑒𝑙𝑒𝑚𝑒𝑛𝑡 )=𝑑𝑖𝑙𝑎𝑡𝑎𝑡𝑖𝑜𝑛 (𝑠𝑟𝑐 ,𝑒𝑙𝑒𝑚𝑒𝑛𝑡 )−𝑒𝑟𝑜𝑠𝑖𝑜𝑛 (𝑠𝑟𝑐 ,𝑒𝑙𝑒𝑚𝑒𝑛𝑡 )
Traitement d’imagesRégion d’intérêtCanal d’intérêtOpé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’imageMat img = imread(monFichier);// Régler le roiMat roi (img, monRectangle);// Rempli le roi de vert qui affecte l’image originaleroi = 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/