View  Edit  Attributes  History  Attach  Print  Search


ACCUEIL | DOCUMENTATION | STRATEGIES | TESTS

JavacvPro : Vue d'ensemble des fonctions disponibles

Objectifs

  • La librairie javacvPro présentée ici se donne pour objectif d'implémenter la plupart des fonctions disponibles avec la librairie OpenCV suivante : http://ubaa.net/shared/processing/opencv/ ainsi que de nombreuses fonctions supplémentaires ajoutées dont certaines implémentent des fonctions d'analyse avancées exclusives !
  • A noter que les délais d'exécution de la plupart de ces fonctions sont de l'ordre de quelques millisecondes, permettant leur utilisation dans le cadre du traitement d'image d'un flux vidéo en temps quasi-réel.
  • Sont d'ors et déjà implémentés les fonctions suivantes :

Classe OpenCV

  • La plupart des fonctions de traitement d'image sont appliquées par défaut au Buffer principal OpenCV mais peuvent également être appliquées à toute image ou buffer OpenCV de son choix.
  • Afin de faciliter la prise en main ou pour réaliser des tests facilement, pour les fonctions de traitement d'image, même complexes et élaborées, la librairie propose une forme simplifiée de la fonction au format fonction() qui est appliquée au buffer principal avec des paramètres par défaut généralement utilisés.

NB : les fonctions signalées par une * sont des fonctions implémentées dans javacvPro équivalentes à celles de la libairie http://ubaa.net/shared/processing/opencv/

Initialisation

  • OpenCV * : constructeur de la classe principale OpenCV
  • allocate() * : initialisation des buffers de la librairie OpenCV

Interface Processing/OpenCV

  • fromPImage() : transforme un objet PImage (conteneur image Processing) en un objet IplImage (conteneur image OpenCV)
  • toPImage() : transforme un objet IplImage (conteneur image OpenCV) en un un objet PImage (conteneur image Processing)

Gestion des buffers OpenCV

  • loadImage() * : charge une image dans le buffer principal d'OpenCV à partir d'un fichier image
  • copy() * : charge une image (PImage ou IplImage) dans le buffer principal
  • copyToGray() : charge une image (PImage ou IplImage) dans le buffer Gray (mono-canal)
  • remember() * : mémorise le buffer principal dans le buffer Memory
  • remember2() : mémorise le buffer principal dans le buffer Memory2
  • area() : renvoie l'aire de l'image du Buffer principal
  • height() : renvoie la hauteur de l'image du buffer principal
  • width() : renvoie la largeur de l'image du buffer principal
  • extractRGB() : charge les 3 canaux du buffer principal dans 3 buffers RGB distincts mono-canal
  • image() * : renvoie un PImage avec le contenu du buffer principal d'OpenCV
  • getBuffer() : renvoie un PImage avec le contenu du buffer principal d'OpenCV - équivalent image()
  • getBufferGray() : renvoie un PImage avec le contenu du buffer Gray
  • getBufferR() : renvoie un PImage avec le contenu du buffer R (Rouge) - voir extractRGB()
  • getBufferG() : renvoie un PImage avec le contenu du buffer G (Rouge) - voir extractRGB()
  • getBufferB() : renvoie un PImage avec le contenu du buffer B (Rouge) - voir extractRGB()
  • getMemory() : renvoie un PImage avec le contenu du buffer Memory - voir remember()
  • getMemory2() : renvoie un PImage avec le contenu du buffer Memory - voir remember2()

Traitement d'image de base

  • blur() * : applique un flou à une image
  • smooth() : autre fonction appliquant un flou à une image.
  • brightness() * : modifie la luminosité d'une image
  • contrast() * : modifie le contraste d'une image
  • setBrightnessContrast() : modifie la luminosité et le contraste d'une image.
  • flip() * : renverse ou retourne une image
  • invert() * : inverse les pixels d'une image (négatif)
  • threshold() * : applique un seuillage à une image
  • gray() : convertit le buffer principal en niveaux de gris et garde une copie dans le buffer Gray
  • multiply() : permet de multiplier tous les pixels d'une image par un coefficient voulu.

Traitement d'image avancé

  • mixerRGB() : implémente la fonction "mixeur de canaux" disponible dans le logiciel de traitement d'image libre The Gimp qui permet d'appliquer sur un canal de sortie une proportion voulue issue des 2 autres canaux. Cette stratégie permet de discriminer assez efficacement des couleurs d'objets déterminées.

Traitements utilisants plusieurs images

  • absDiff() * : réalise une soustraction entre 2 images (soustraction du fond par exemple)

Extraction de contours

  • sobel() : applique un traitement d'extraction de contour sur une image par détection des fronts. Ce filtre est basé sur la fonction OpenCV native cvSobel().
  • sobel2() : applique un traitement d'extraction de contour sur une image par détection des fronts. Ce filtre est basé sur une nouvelle implémentation du filtre Sobel à partir de la fonction cvFilter2D. Cette fonction réduit la normalisation du noyau de convolution rendant les contours plus contrastés.
  • scharr() : applique un traitement d'extraction de contour sur une image. Ce filtre utilise un noyau plus discriminant que le filtre sobel().
  • canny() : applique l'algorithme de Canny au buffer et détecte les contours de façon fine.

Détection de forme

  • blobs() * : Renvoie les paramètres des formes détectées (aire, centre, rectangle entourant, tableau des points)
  • blobsDebug() : Renvoie les paramètres des formes détectées (aire, centre, rectangle entourant, tableau des points) avec message de debug détaillés
  • drawBlobs() : dessine le contours des formes détectées par la fonction blobs()
  • drawCentroidBlobs : dessine le centre des formes détectées par la fonction blobs()
  • drawRectBlobs : dessine le rectangle encadrant les formes détectées par la fonction blobs()
  • selectBlobs() : sélectionne, au sein d'un tableau de formes renvoyé par la fonction blobs(), les formes voulues en fonction du ratio hauteur/largeur et du ratio aire forme / aire rectangle entourant. Cette fonction est utile pour éliminer les formes détectées qui ne correspondent pas aux critères attendus pour la forme que l'on souhaite détecter.
  • selectBallBlobs() : sélectionne, au sein d'un tableau de formes renvoyé par la fonction blobs(), les formes compatibles avec la forme d'une balle. Cette fonction est basée sur la fonction selectBlobs() en fixant un ratio hauteur/largeur compatible avec un carré et un ratio (aire forme / aire rectangle encadrant) compatible avec un cercle.

Analyse avancée de formes

  • drawConvexPoints() : détecte et dessine les points de convexité des formes détectées par la fonction blobs()
  • drawConvexityDefect() : fonction avancée qui analyse les points de convexité des formes détectées par blobs() et dessine les creux maximum détectés entre les points de convexité.

Détection d'objet ou de visage

  • cascade() * : initialise la détection de visage ou d'objet en chargeant le fichier de description utilisé
  • detect() * : détecte les visages ou objets et renvoie le tableau des rectangles encadrant
  • drawRectDetect() : dessine les rectangles entourant les objets ou visages détectés renvoyés par la fonction detect()

Les fonctions de la librairie Opencv http://ubaa.net/shared/processing/opencv/ qui ne son pas implémentées (pour le moment...) dans javacvPro :

  • Ce sont essentiellement les fonctions liées à la capture et la lecture de vidéo, dans la mesure où je préfère utiliser la librairie GSVideo qui va de plus devenir la librairie vidéo standard à partir de Processing 2.0.

ROI() capture() convert() interpolation() jump() movie() pixels() read() restore() stop()

Classe Blob

Fonctions natives OpenCV

  • A noter que la plupart des fonctions natives OpenCV sont également disponibles "in line" et peuvent être utilisée directement dans un programme Processing grâce à la librairie javacvpro !