OpenCV - Présentation

OpenCV est une bibliothèque multiplateforme à l'aide de laquelle nous pouvons développer en temps réel computer vision applications. Il se concentre principalement sur le traitement d'image, la capture vidéo et l'analyse, y compris des fonctionnalités telles que la détection de visage et la détection d'objets.

Commençons le chapitre en définissant le terme «Computer Vision».

Vision par ordinateur

La vision par ordinateur peut être définie comme une discipline qui explique comment reconstruire, interrompre et comprendre une scène 3D à partir de ses images 2D, en termes de propriétés de la structure présente dans la scène. Il traite de la modélisation et de la reproduction de la vision humaine à l'aide de logiciels et de matériel informatique.

La vision par ordinateur chevauche considérablement les domaines suivants -

  • Image Processing - Il se concentre sur la manipulation d'images.

  • Pattern Recognition - Il explique diverses techniques pour classer les modèles.

  • Photogrammetry - Il s'agit d'obtenir des mesures précises à partir d'images.

Vision par ordinateur vs traitement d'image

Image processingtraite de la transformation d'image en image. L'entrée et la sortie du traitement d'image sont toutes deux des images.

Computer visionest la construction de descriptions explicites et significatives d'objets physiques à partir de leur image. Le résultat de la vision par ordinateur est une description ou une interprétation de structures dans une scène 3D.

Applications de la vision par ordinateur

Nous avons répertorié ici certains des principaux domaines dans lesquels la vision par ordinateur est largement utilisée.

Application robotique

  • Localisation - Déterminez automatiquement l'emplacement du robot

  • Navigation

  • Évitement des obstacles

  • Assemblage (peg-in-hole, soudure, peinture)

  • Manipulation (par exemple, manipulateur de robot PUMA)

  • Human Robot Interaction (HRI) - Robotique intelligente pour interagir et servir les gens

Application de médecine

  • Classification et détection (par exemple, classification des lésions ou des cellules et détection des tumeurs)
  • Segmentation 2D / 3D
  • Reconstruction d'organes humains en 3D (IRM ou échographie)
  • Chirurgie robotique guidée par la vision

Application d'automatisation industrielle

  • Inspection industrielle (détection de défauts)
  • Assembly
  • Lecture de codes-barres et d'étiquettes d'emballage
  • Tri d'objets
  • Compréhension des documents (par exemple OCR)

Application de sécurité

  • Biométrie (iris, empreinte digitale, reconnaissance faciale)

  • Surveillance - Détection de certaines activités ou comportements suspects

Application de transport

  • Véhicule autonome
  • Sécurité, p. Ex. Surveillance de la vigilance du conducteur

Caractéristiques de la bibliothèque OpenCV

En utilisant la bibliothèque OpenCV, vous pouvez -

  • Lire et écrire des images

  • Capturez et enregistrez des vidéos

  • Images de processus (filtrer, transformer)

  • Effectuer la détection des fonctionnalités

  • Détectez des objets spécifiques tels que des visages, des yeux, des voitures, dans les vidéos ou les images.

  • Analysez la vidéo, c'est-à-dire estimez le mouvement qu'elle contient, soustrayez l'arrière-plan et suivez les objets qu'elle contient.

OpenCV a été initialement développé en C ++. En plus de cela, des liaisons Python et Java ont été fournies. OpenCV fonctionne sur divers systèmes d'exploitation tels que Windows, Linux, OSx, FreeBSD, Net BSD, Open BSD, etc.

Ce tutoriel explique les concepts d'OpenCV avec des exemples utilisant des liaisons Java.

Modules de bibliothèque OpenCV

Voici les principaux modules de bibliothèque de la bibliothèque OpenCV.

Fonctionnalité de base

Ce module couvre les structures de données de base telles que Scalar, Point, Range, etc., qui sont utilisées pour créer des applications OpenCV. En plus de ceux-ci, il comprend également le tableau multidimensionnelMat, qui est utilisé pour stocker les images. Dans la bibliothèque Java d'OpenCV, ce module est inclus sous forme de package avec le nomorg.opencv.core.

Traitement d'image

Ce module couvre diverses opérations de traitement d'images telles que le filtrage d'images, les transformations géométriques d'images, la conversion d'espace colorimétrique, les histogrammes, etc. Dans la bibliothèque Java d'OpenCV, ce module est inclus sous forme de package avec le nom org.opencv.imgproc.

Vidéo

Ce module couvre les concepts d'analyse vidéo tels que l'estimation de mouvement, la soustraction d'arrière-plan et le suivi d'objets. Dans la bibliothèque Java d'OpenCV, ce module est inclus sous forme de package avec le nomorg.opencv.video.

E / S vidéo

Ce module explique la capture vidéo et les codecs vidéo à l'aide de la bibliothèque OpenCV. Dans la bibliothèque Java d'OpenCV, ce module est inclus sous forme de package avec le nomorg.opencv.videoio.

calib3d

Ce module comprend des algorithmes concernant les algorithmes de géométrie de base à vues multiples, l'étalonnage de caméra simple et stéréo, l'estimation de la pose de l'objet, la correspondance stéréo et les éléments de reconstruction 3D. Dans la bibliothèque Java d'OpenCV, ce module est inclus sous forme de package avec le nomorg.opencv.calib3d.

caractéristiques2d

Ce module comprend les concepts de détection et de description des fonctionnalités. Dans la bibliothèque Java d'OpenCV, ce module est inclus sous forme de package avec le nomorg.opencv.features2d.

Objdetect

Ce module inclut la détection d'objets et d'instances des classes prédéfinies telles que les visages, les yeux, les mugs, les personnes, les voitures, etc. Dans la bibliothèque Java d'OpenCV, ce module est inclus sous forme de package avec le nom org.opencv.objdetect.

Highgui

Il s'agit d'une interface facile à utiliser avec des capacités d'interface utilisateur simples. Dans la bibliothèque Java d'OpenCV, les fonctionnalités de ce module sont incluses dans deux packages différents à savoir,org.opencv.imgcodecs et org.opencv.videoio.

Une brève histoire d'OpenCV

OpenCV était initialement une initiative de recherche d'Intel visant à conseiller les applications gourmandes en CPU. Il a été officiellement lancé en 1999.

  • En 2006, sa première version majeure, OpenCV 1.0, est sortie.
  • En octobre 2009, la deuxième version majeure, OpenCV 2, est sortie.
  • En août 2012, OpenCV a été repris par une organisation à but non lucratif OpenCV.org.