OpenCV, c’est quoi ?

Présentation de la solution de traitement d’image OPENCV et retour sur expérience.
thomasC.jpg
Thomas CHABOUDMis à jour le 25 Sept 2019
opencv

Présentation générale d’OPENCV

Initialement développée par Intel, OpenCV (Open Computer Vision) est une bibliothèque graphique. Elle est spécialisée dans le traitement d’images, que ce soit pour de la photo ou de la vidéo.

Sa première version est sortie en juin 2000. Elle est disponible sur la plupart des systèmes d’exploitation et existe pour les langages Python, C++ et JavaLangage de développement très populaire !

opencv-logo.png

Sous licence BSD (Berkeley Software Distribution Licence), OpenCV peut être réutilisé librement, en tout ou partie, pour être intégré au sein d’un autre projet.

C’est notament cette notion qui fait qu’OpenCV est très populaire et à la base de nombreux logiciels de traitements d’images/vidéos. Elle est aujourd’hui développée, maintenue, documentée et utilisée par une communauté de plus de 40 000 membres actifs !

Fonctionnement d’OpenCV

Pour comprendre le fonctionnement d’OpenCV, il faut d’abord définir ce qu’est la vision par ordinateur. Branche de l’IA, la vision par ordinateur a pour principal but de permettre à une machine d’analyser, traiter et comprendre des images prises par un système (une caméra par exemple)

OpenCV fournit un ensemble de plus de 2500 algorithmes de vision par ordinateur, accessibles au travers d’API. Ce qui permet d’effectuer tout un tas de traitements sur des images (extraction de couleurs, détection de visages, de formes, application de filtres,...). Ces algorithmes se basent principalement sur des calculs mathématiques complexes, concernant surtout les traitements sur les matrices (car une image peut être considérée comme une matrice de pixels).

Les traitements d’images

Les algorithmes d’OpenCV permettent d’appliquer divers traitements sur les images pour faciliter la détection d’éléments précis dans celles-ci. Voici quelques exemples :

  • Le Tresholding (seuillage) d’une image permet de définir une valeur de pixel (correspondant à une couleur) qui servira de seuil. Au-dessus ou en dessous de cette valeur (selon l’agorithme), tous les pixels se verront assigner une autre valeur. Il existe 4 algorithmes de Tresholding. 

    threshold.jpg

  • Les filtres de lissage, permettant de réduire le bruit (1) d’une image. Parmi eux, nous avons notamment les filtres par convolution, se basant sur les pixels voisins pour faire une moyenne. 

    image-denoising.jpg

  • Les filtres morphologiques permettant, sur une image binaire (uniquement noire et blanche avec le fond en noir et l’objet sur lequel on effectue le traitement en blanc) d’appliquer une érosion ou dilatation, c’est-à-dire affiner l’objet pour l’érosion et l’élargir pour la dilatation. | Image de base | Après application de l’érosion | Après application de la dilatation | | ------------ | ------------- | ------------- | | 

    morphological-1.png
    morphological-erosion.png
    morphological-dilatation.png
    |

Il est possible de combiner l’érosion et la dilatation pour la suppression de bruit dans une image. L’application de l’érosion puis dilatation est appelé Opening (Ouverture) et l’application de la dilatation puis de l’érosion est appelé Closing (Fermeture) 

morphological-opening.png

Opening (Erosion -> Dilatation)

Closing (Dilatation -> Erosion)

(1) : Le bruit (ou bruit numérique) d’une image définie toute information parasite ou dégradation que subit l’image de son acquisition jusqu’à son enregistrement, cela peut dépendre de plusieurs paramètres comme la luminosité, la qualité du capteur optique, etc

L’intelligence artificielle

Certains algorithmes d’OpenCV utilisent de l’intelligence artificielle pour faciliter le traitement des images. Dans les faits, cette IA sert à améliorer les algorithmes précédemment détaillés pour obtenir des résultats plus précis. 

denoising-ai.jpg

Ici, on utilise un filtre de convolution couplé à de l’intelligence artificielle pour obtenir un meilleur résultat que si nous n’avions utilisé que le filtre.

Exemple d’utilisation d’OpenCV

Dans le cadre d’un projet chez Axopen, nous utilisons OpenCV pour gérer un match de babyfoot en repérant les joueurs ainsi que la balle, avec pour objectif de déterminer les buts et qui les a marqués : 

atelier-babyfoot.png

De la même manière, les logiciels d’arbitrage vidéo se basent bien souvent sur OpenCV pour reconnaître les joueurs, déterminer leur équipe et détecter la balle sur le terrain, en se basant sur les couleurs de chaque élément.

Plus récemment, c’est aussi OpenCV qui est à la base du logiciel DeepFake, permettant de changer le visage d’une personne par une autre sur une vidéo, qui a fait beaucoup parler de lui ces derniers temps.

Ici, OpenCV est utilisé pour reconnaître un visage sur une vidéo et le remplacer. Via de nombreuses photos de Sylvester Stallone, on entraîne une IA qui sera capable de remplacer le visage (ici celui de Arnold Schwarzenegger) détecté par OpenCV par celui souhaité.

Les possibilités offertes par OpenCV sont nombreuses, si vous souhaitez allez plus loin et tester par vous-même, vous pouvez consulter nos tutos d’installation pour Windows et Mac !

Il est également possible de consulter la documentation de OpenCV ici : https://docs.opencv.org/master/