Démonstrateur OpenCV - Liste des fonctions
Ci-dessous vous pourrez trouver la liste des fonctions et démonstrations OpenCV actuellement supportées par l'IHM :
Démonstration | Description | |
Dérivation | Calcul de gradient | Le gradient consiste à calculer les dérivées partielles d'une image (suivant les dimensions x et y). Du fait que les contours des objets se manifestent par des gradients élevés, le calcul du gradient a beaucoup d'applications en traitement d'image.
Cette démonstration vous permet de calculer le gradient, avec différents masques et niveaux de pré-filtrages possibles.![]() |
Calcul de laplacien | Le laplacien est la somme des dérivées secondes d'une image suivant x et y. C'est un opérateur qui a beaucoup d'applications. Par exemple, au niveau des contours d'une image, le laplacien s'annule.![]() | |
Amélioration de la netteté d'une image | Le laplacien est utilisé pour rendre plus net les contours d'une image. Pour cela, on soustrait à l'image une fraction du laplacien.![]() | |
Contours | Détection de contour par Canny | L'algorithme de Canny est une méthode en plusieurs étapes pour déterminer les points de contour dans une image. Elle est fondée sur le calcul du gradient de l'image, de la sélection des maxima locaux du gradient suivant sa direction, et enfin d'un seuillage avec hystérésis pour supprimer les faux positifs isolés.![]() |
Délimitation des contours | Cet exemple permet de tester l'algorithme de séparation des contours, c'est-à-dire la fonction findContours() de OpenCV. En entrée, cette fonction prends un masque de contour (typiquement la sortie de l'algorithme de Canny), et détermine les contours des différents objets présents sur l'image.![]() | |
Transformée de Hough | Transformée de Hough (lignes) | La transformée de Hough est une méthode robuste pour détecter des lignes ou des segments dans une image. L'implémentation dans OpenCV fait appel à l'algorithme de Canny pour déterminer les points de contour. De ce fait, il y a deux seuils à régler.
Cette démonstration vous permet de tester la détection de lignes avec OpenCV, avec la méthode standard et une variante probabiliste (détection de segments).![]() |
Transformée de Hough (cercles) | On peut aussi adapter la transformée de Hough pour détecter des cercles. Dans ce cas, l'espace des paramètres est à trois dimensions : position du centre (x, y) et rayon. En pratique, on effectue la recherche en deux étapes (localisations des centres, puis calcul des rayons) afin de diminuer la dimension de l'espace de recherche.![]() | |
Détection de quadrilatères | Détection de quadrilatères et correction automatique de perspective. Cette démonstration est fondée sur le tutorial Automatic perspective correction for quadrilateral objects, que l'on peut trouver à l'adresse suivante : http://opencv-code.com/tutorials/automatic-perspective-correction-for-quadrilateral-objects.
L'algorithme fait appel aux étapes suivantes :
(1) Détection des contours par Canny,
(2) Transformée de Hough (variante probabiliste),
(3) Calcul des points d'intersections entre toutes les lignes détectées,
(4) Estimation d'un polygone passant par ces points et vérification qu'il s'agit d'un quadrilatère,
(5) Application d'une transformée de perspective.![]() | |
Histogrammes | Calcul d'histogramme | L'histogramme est une estimation de la distribution des valeurs de pixels sur une ou plusieurs images. Cette démonstration vous permet de calculer les histogrammes en luminance, RVB ou TSV.![]() |
Egalisation d'histogramme | L'égalisation d'histogramme consiste à améliorer le contraste d'une image en utilisant mieux la plage des valeurs possibles pour chaque pixel.
Attention : l'égalisation d'autres composantes que la luminance (exemple : égalisation RVB) peut générer des couleurs artificielles (non présentes dans l'image d'origine).![]() | |
Projection arrière | Vous pouvez sélectionner avec la souris une zone rectangulaire dans l'image d'entrée. Cette zone servira à calculer l'histogramme de référence. A partir de cet histogramme, l'algorithme de projection arrière (back-projection) détermine pour chaque pixel de l'image la probabilité qu'il soit du même type que la zone sélectionnée.
Cela peut vous servir pour repérer des objets similaires (de même teinte) dans une image, on pour suivre un objet en mouvement (fondement de l'algorithme camshift).![]() | |
Segmentation | Seuillage | Le seuillage d'une image (en niveaux de gris) vous permet de sélectionner uniquement les pixels dont la valeur est supérieure à un certain seuil. Le seuil peut être :
(1) fixe,
(2) calculé automatiquement en fonction de l'image (méthode de Otsu),
(3) adaptatif, dans ce cas on ajoute pour chaque pixel au seuil la valeur moyenne de l'image dans le voisinage du pixel. Cela permet de diminuer l'impact des variations de luminosité dans une image.![]() |
Transformée de distance | La transformée de distance consiste à, à partir d'une image binaire, calculer la distance entre chaque pixel et le pixel noir le plus proche.![]() | |
Séparation avant-plan (grabcut) | Séparation avant-plan / arrière-plan, à partir d'une pré-localisation d'un rectangle contenant l'avant plan.
Note : La séparation pourrait être améliorée en précisant manuellement d'autres points comme faisant partie de l'avant ou de l'arrière plan.![]() | |
Segmentation par Watershed (non supervisée) | Cette démonstration est basée sur les tutoriaux en ligne Image Segmentation with Watershed Algorithm (http://docs.opencv.org/master/d3/db4/tutorial_py_watershed.html#gsc.tab=0, et Image Segmentation using Unsupervised Watershed Algorithm with an Over-segmentation Reduction Technique (http://www.codeproject.com/Articles/751744/Image-Segmentation-using-Unsupervised-Watershed-Al). Elle permet de segmenter différents objets, même si ils sont proches l'un de l'autre. Cela peut être utile pour compter des objets similaires sur une image.
Le principe consiste à déterminer les graines initiales pour l'algorithme Watershed grâce à un seuillage et des opérations morphologiques.![]() | |
Traitements d'image simples | Filtrage | Cette démonstration vous permet d'essayer quelques filtre linéaires (moyenne mobile, gaussien) et non linéaires (médian, bilatéral), sur une image dont le niveau de bruit est réglable (bruit poivre et sel, et bruit blanc gaussien).![]() |
Opérateurs morphologiques | Cette démonstration vous permet d'essayer divers opérateurs morphologiques (dilatation, érosion, fermeture, ouverture, gradient, etc.), avec différentes formes et tailles de noyaux.
Les opération morphologiques ont beaucoup d'applications ; elles sont notamment utilisées pour réduire l'impact du bruit et sélectionner la dimension des objets d'intérêt avant une segmentation d'image.![]() | |
Transformée de Fourier | Cette démonstration de la TFD (transformée de Fourier Discrète) est fondée sur l'exemple discrete_fourier_transform.cpp inclu dans OpenCV.
![]() | |
Détecteurs en cascade | Visage(s) | Détection de visages (vue de face), classifieur en cascade par défaut (fournit avec OpenCV).![]() |
Yeux | Détection pour les yeux, classifieur en cascade par défaut (fournit avec OpenCV).![]() | |
Plaques d'immatriculation | Détection de plaques d'immatriculation, classifieur en cascade par défaut pour les plaques russes (fournit avec OpenCV).![]() | |
Point d'intérêts / Traits | Détections de points d'intérêts | Cette démonstration vous permet de tester différents détecteurs de point d'inrérêt inclus dans OpenCV (Harris, FAST, ORB).
Les points d'intérêts ont beaucoup d'applications: ils sont très utilisés notamment pour mettre en correspondance des points sur deux images différentes (exemple : réalisation de panoramas à partir de plusieurs photos).![]() |
Mise en correspondance | Cette démonstration permet de tester la mise en correspondance de points d'intérêts sur 2 images. Cette démonstration est inspirée du tutorial OpenCV "Features2D + Homography to find a known object" (http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html#feature-homography).![]() | |
Traitements vidéos | Calcul de flux optique | Le flux optique consiste à estimer la vitesse (direction et valeur absolue) des objets à partir d'un flux vidéo. On peut distinguer deux catégories d'algorithmes :
(1) Les algorithmes "denses", qui essayent de calculer le flux optique pour tous les pixels de l'image. Le problème est qu'il peut être très difficile de mesurer la vitesse pour certain pixels (par exemple si le gradient est localement constant dans une direction).
(2) Les algorithmes "creux", qui calculent le flux optique seulement au niveau de point spéciaux, situés à des endroits où le flux optique est calculable de manière fiable.
Cette démonstration vous permet de tester l'implémentation OpenCV de l'algorithme de Farneback (flux optique dense).![]() |
Soustraction d'arrière-plan | Cette démonstration vous permet de tester la fonction de soustraction d'arrière-plan incluse dans OpenCV. La soustraction d'arrière-plan peut être utile pour localiser des objets en mouvements ou ponctuels sur un arrière-plan fixe and changeant lentement (exemple : vidéo-surveillance, etc.).![]() | |
Suivi d'objets en mouvement (camshift) | L'algorithme camshift permet de suivre un objet en mouvement. La détection est fondée sur la projection arrière d'histogramme.![]() | |
Photographie | Réalisation de panoramas | Cette démonstration vous permet de réaliser un panorama à partir de plusieurs images. Elle est basée sur le module stictching de OpenCV.![]() |
Haute définition (HDR) | Cette démonstration vous permet de fusionner des images à basse résolutions (8 bits), fondé sur le module HDR de OpenCV.![]() | |
Réparation d'image | Cette démonstration vous permet de tester la fonction "d'inpainting" de OpenCV. Avec la souris, vous pouvez sélectionner la zone d'image à réparer (cliquer sur l'image).![]() | |
Traitements 3D | Calibration de caméra | Cette petite démonstration vous permet de tester les fonctions de calibration automatique de caméra incluses dans OpenCV. Pour simplifier, seulement une image est utilisée pour la calibration, mais avec plusieurs images les résultats sont plus précis.
Notez comme les lignes droites sont améliorées (comparer les bords du damier sur les deux images).
Cette démonstration est fondée sur l'exemple calibration.cpp inclu dans OpenCV et l'image utilisée est prise du même exemple.
![]() |
Calcul de disparité | Calcul de la disparité entre deux images, qui doivent avoir été correctement rectifiées auparavant (les images doivent être alignées verticalement).![]() |