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émonstrationDescription
DérivationCalcul de gradientLe 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 gradient
Calcul de laplacienLe 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.
Calcul de laplacien
Amélioration de la netteté d'une imageLe laplacien est utilisé pour rendre plus net les contours d'une image. Pour cela, on soustrait à l'image une fraction du laplacien.
Amélioration de la netteté d'une image
ContoursDétection de contour par CannyL'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étection de contour par Canny
Délimitation des contoursCet 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.
Délimitation des contours
Transformée de HoughTransformé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 (lignes)
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.
Transformée de Hough (cercles)
Détection de quadrilatèresDé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.
Détection de quadrilatères
HistogrammesCalcul d'histogrammeL'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.
Calcul d'histogramme
Egalisation d'histogrammeL'é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).
Egalisation d'histogramme
Projection arrièreVous 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).
Projection arrière
SegmentationSeuillageLe 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.
Seuillage
Transformée de distanceLa transformée de distance consiste à, à partir d'une image binaire, calculer la distance entre chaque pixel et le pixel noir le plus proche.
Transformée de distance
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.
Séparation avant-plan (grabcut)
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.
Segmentation par Watershed (non supervisée)
Traitements d'image simplesFiltrageCette 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).
Filtrage
Opérateurs morphologiquesCette 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.
Opérateurs morphologiques
Transformée de FourierCette démonstration de la TFD (transformée de Fourier Discrète) est fondée sur l'exemple discrete_fourier_transform.cpp inclu dans OpenCV.
Transformée de Fourier
Détecteurs en cascadeVisage(s)Détection de visages (vue de face), classifieur en cascade par défaut (fournit avec OpenCV).
Visage(s)
YeuxDétection pour les yeux, classifieur en cascade par défaut (fournit avec OpenCV).
Yeux
Plaques d'immatriculationDétection de plaques d'immatriculation, classifieur en cascade par défaut pour les plaques russes (fournit avec OpenCV).
Plaques d'immatriculation
Point d'intérêts / TraitsDétections de points d'intérêtsCette 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).
Détections de points d'intérêts
Mise en correspondanceCette 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).
Mise en correspondance
Traitements vidéosCalcul de flux optiqueLe 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).
Calcul de flux optique
Soustraction d'arrière-planCette 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.).
Soustraction d'arrière-plan
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.
Suivi d'objets en mouvement (camshift)
PhotographieRéalisation de panoramasCette démonstration vous permet de réaliser un panorama à partir de plusieurs images. Elle est basée sur le module stictching de OpenCV.
Réalisation de panoramas
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.
Haute définition (HDR)
Réparation d'imageCette 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).
Réparation d'image
Traitements 3DCalibration de caméraCette 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.
Calibration de caméra
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).
Calcul de disparité