Codage de traitement d'image

12

Je me demandais quelle est la meilleure langue pour le traitement d'image? Je sais que MATLAB a une bonne bibliothèque et une bonne communauté d'utilisateurs pour cela. Je ne l'ai pas vérifié, il y a aussi du python.

Quelle est la langue la plus efficace pour cela?

phénix
la source

Réponses:

12

Il ne s'agit pas seulement du langage de programmation mais de la bibliothèque que vous utilisez. Je peux penser à ce qui suit:

MATLAB - les capacités de traitement d'image sont tout à fait correctes, mais pour un traitement plus avancé et en temps réel, vous auriez besoin de choses de bas niveau. De plus, il n'offre pas une très bonne portabilité.

Mathematica - bon pour le prototypage et la visualisation rapide, mais c'est tout à mon humble avis.

OpenCV - Je pense que c'est la bibliothèque la plus populaire de la communauté IP. Grandes capacités ( GPU computing, module Machine Learning, GUI - de quoi d'autre avez-vous besoin? ), Rapides et toujours en cours de développement (donc les bugs mineurs sont supprimés très rapidement). Concernant la communauté - c'est grand! Principalement pour la programmation C / C ++, mais aussi Python (vous convient probablement).

JAI - Java Advanced Imaging - uniquement si vous aimez Java. Personnellement, je n'aime pas ça.

ImageMagick - vous pouvez l'utiliser avec de nombreux langages de programmation, vérifiez l' API .

CxImage - bon si vous voulez créer quelque chose de mieux que MS Paint et avec certaines fonctionnalités de Photoshop.

CImg - évidemment à utiliser avec C ++, mais OpenCV est toujours meilleur.

PIL - Bibliothèque spécifique à Python avec beaucoup de fonctionnalités. Si vous l'aimez, vous pouvez y regarder de plus près.

SimpleCV - fondamentalement, il s'agit d'une liaison python OpenCV avec quelques ajustements. Très facile à utiliser et assez efficace.

scikit-image - également bibliothèque Python, mais à mon avis pire que SimpleCV (bien que mon ami ne soit pas d'accord avec cela). Un avantage est qu'ils comprenaient un extracteur de fonctionnalités DAISY - très utile si vous avez besoin de fonctionnalités denses.

GIL - fait partie de Boost , mais moins fonctionnel que OpenCV. Bien que si vous aimez et utilisez Boost, pour certaines fonctionnalités de base, cela devrait aller.

ResIL - poursuite duprojet DevIL . Un avantage majeur est de fonctionner sur de nombreux formats de fichiers, y compris certains fichiers de jeu.

PINK - écrit à l'origine en C ++. J'ai récemment essayé et c'était très agréable de travailler avec. Excellente intégration avec Python et rapide dans le C. embarqué En dehors de cela, ils ont beaucoup d'algorithmes sympas.

Évidemment, il y a beaucoup plus de bibliothèques de traitement d'image, mais ce sont celles avec lesquelles j'ai eu contact. Donc, si vous voulez commencer avec quelque chose, choisissez OpenCV (de préférence avec le framework C ++) - vous ne le regretterez pas! D'un autre côté, si vos compétences en programmation ne sont pas solides, vous voudrez peut-être penser à utiliser des bibliothèques basées sur Python - très faciles à apprendre et à configurer.

jojek
la source
2

MATLAB est le meilleur langage pour l'apprentissage du traitement d'image. (c'est mon avis)

Il est simple à apprendre, indépendant du matériel, plus flexible que tout langage compilé, peut-être plus efficace que les langages de script (en raison de ses DLL inhérentes optimisées pour le traitement du signal au niveau de la machine), il a un bon support académique et technique.

C / C ++ est le meilleur langage pour créer des applications autonomes de traitement d'image. Sous votre suite d'IDE, vous pouvez générer du code natif qui est le plus efficace. Et les IDE pour C ++ offrent de meilleures fonctionnalités de débogage au niveau de la machine.

Certains langages de script sont également utilisés. Ils sont en effet flexibles, portables, voire considérablement efficaces, mais le débogage peut ne pas être facile à bas niveau.

De plus, les nouvelles capacités de traitement GPU de CUDA, OpenCL etc. augmentent considérablement les débits de calcul. (Cependant, ils sont plus difficiles à apprendre car vous devez être conscient de l'architecture matérielle du pipeline GPU sous-jacent pour utiliser les gains d'efficacité)

Fat32
la source
-1

Si vous souhaitez faire rouler vos propres algorithmes ou code, incluez OpenCL, car de nombreux noyaux de traitement d'image sont "parallèlement embarrassants".

Ou, sur Big Iron, Fortran bat toujours la plupart des autres langues en termes de performances vectorielles numériques.

hotpaw2
la source