Bibliothèques De Traitement D'Images C/C++ Multiplateformes Rapides
Quelles sont les bibliothèques d'images multi-plateformes et hautes performances pour le traitement d'image (redimensionnement et recherche des histogrammes couleur / teinte). Aucune interface graphique nécessaire. C'est pour le C/C++.
Jusqu'à présent j'ai regardé dans
- OpenCV
- GIL dans le cadre de Boost
- diable
- CImg
Mes questions
- Comment est la performance de ceux que j'ai énumérés ci-dessus
- Quelles sont les autres bibliothèques
Votre entrée très appréciée.
11 réponses
OpenCV a de très bonnes performances. Cela devrait être suffisant pour la plupart des cas.
Pour améliorer les performances, vous pouvez également utiliser OpenCV avec Intel IPP , qui est cependant un produit commercial non gratuit. Si OpenCV détecte que IPP est installé, il l'utilisera si possible.
Comme troisième option, vous pouvez utiliser IPP directement. IPP a été conçu avec des performances élevées (sur les architectures Intel) comme objectif. Il est optimisé pour utiliser les instructions intel SIMD.
N'oubliez pas de regarder CxImage - Je l'ai utilisé professionnellement dans des applications de téléphonie mobile à forte intensité graphique déployées à l'échelle mondiale, où il a parfaitement fonctionné et il est si plein de fonctionnalités. Faire vérifier!
Il existe une bibliothèque de traitement d'image multiplateforme open source simple et gratuite Simd . Comme suit de sa description:
Il fournit de nombreux algorithmes de haute performance utiles pour le traitement d'image tels que: la conversion de format de pixel, la mise à l'échelle et la filtration de l'image, l'extraction d'informations statistiques à partir d'images, la détection de mouvement.
Les algorithmes sont optimisés avec l'utilisation de différentes extensions de CPU SIMD: SSE, SSE2, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 et AVX-512 pour x86 / x64, VMX (Altivec) et VSX(Power7) pour PowerPC, néon pour ARM.
Vous voudrez peut-être regarder IM. Il s'appuie sur plusieurs plates-formes et prend en charge les formats de fichiers image (modulaires), une variété de représentations d'images et un large éventail de transformations et d'opérateurs. Un outil graphique, IMLab , pour démontrer les opérateurs de traitement d'image basés sur la bibliothèque IM est également disponible.
Je ne pense pas avoir vu quelque chose de mieux dans les fonctionnalités et les performances que HALCON de MVTec . Il fournit toutes sortes d'algorithmes de vision par ordinateur et de traitement d'image prêts à l'emploi et de nombreux exemples de la vie réelle. La bibliothèque utilise le multithreading autant que les algorithmes pourraient le permettre et le GPU lorsqu'il est disponible. Il est très multi-plateforme et fournit un IDE fantastique qui vous permettra d'exporter votre code prototype (algorithme) vers de nombreux langages, y compris C, C++, C# et plus.
L'une des meilleures caractéristiques de cette bibliothèque est la façon dont ils traitent les objets de région. Il est juste incroyablement intelligent et efficace à la fois pour le stockage et le traitement des masques. Malheureusement, OpenCV a beaucoup à apprendre.
Le principal problème avec ce paquet est le prix (bêtement élevé) mais si vous travaillez sur un projet où vous n'avez pas besoin de déployer des licences d'exécution (par exemple SaaS), alors c'est la voie à suivre, ne cherchez pas plus loin si vous avez besoin d'un traitement d'image sérieux et d'une vision par ordinateur.
Il y a aussi:
- Framewave basé sur AMD Performance Library {[5] } qui fournit des fonctionnalités de traitement de signal et d'image
- GraphicsMagick dérivé multi-thread de ImageMagick
Je maintiens vips, une bibliothèque de traitement d'images scientifique gratuite et multi-plateforme C/c++. Il est rapide et fonctionne bien sur de très grandes images.
J'ai fait un benchmark très simple : charger un tif RVB de 5 000 x 5 000 pixels, recadrer 100 pixels de chaque bord, réduire de 10%, aiguiser et enregistrer à nouveau. Sur ce test trivial au moins, vips est plus de trois fois plus rapide que tout ce que j'ai essayé.
Nous avons utilisé Accusoftpendant un certain temps, mais pour des raisons très spécifiques, nous sommes passés à LeadTools, qui existe uniquement pour windows. Accusoft a une interface très claire et beaucoup plus bien définie que leadtools. Les deux bibliothèques sont très robustes et les deux prétendent lire plus ou moins tous les types de fichiers existants. Les deux ont également un soutien très réactif.