Semaine 07 vA13 Morphologie Traitement d’images Semaine 07 vA13 Morphologie
Plan de leçon Source vidéo Morphologie Région d’intérêt É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 En autant que ce ne soit pas FFMPEG sous Windows
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 : Exemple int 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 Exemple : centre 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 Attention! Ici, on « érode » le blanc. Élément structurant carré de 3x3
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 structurant carré 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 𝑑𝑠𝑡= 𝑚𝑜𝑟𝑝ℎ 𝑔𝑟𝑎𝑑 𝑠𝑟𝑐, 𝑒𝑙𝑒𝑚𝑒𝑛𝑡 =𝑑𝑖𝑙𝑎𝑡𝑎𝑡𝑖𝑜𝑛 𝑠𝑟𝑐, 𝑒𝑙𝑒𝑚𝑒𝑛𝑡 − 𝑒𝑟𝑜𝑠𝑖𝑜𝑛 𝑠𝑟𝑐, 𝑒𝑙𝑒𝑚𝑒𝑛𝑡
Traitement d’images Région d’intérêt Canal d’intérêt Opé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’image Mat img = imread(monFichier); // Régler le roi Mat roi (img, monRectangle); // Rempli le roi de vert qui affecte l’image originale roi = 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/