Java ou C pour le traitement d'images


Je cherche à apprendre un langage de programmation (suivre un cours) pour une utilisation dans l'analyse et le traitement d'images. Peut-être bioinformatique aussi. Quelle langue dois-je aller pour? Le C ou le Java? Les autres langues ne sont pas une option pour moi. Veuillez également expliquer pourquoi l'une des langues est une meilleure option pour mon application.

Author: its-me, 2010-06-14

7 answers

Vous devez équilibrer la puissance de traitement brute et le temps de développement. Java devient assez rapide aussi et si vous avez terminé quelques jours plus tôt, vous avez plus de temps pour traiter les données.

Tout dépend du volume.

Plus important encore, je vous suggère de rechercher les bibliothèques et les frameworks qui existent déjà, de voir ce qui correspond le plus à ce qui doit être fait et de choisir le langage dans lequel la bibliothèque a été écrite, que ce soit C, Java ou Fortran.

Pour Java j'ai trouvé BioJava.org comme point de départ.

 4
Author: Peter Tillemans, 2010-06-14 16:47:49

Java n'est pas trop mauvais pour le traitement d'image. Si vous gérez vos objets source de manière appropriée, vous aurez une chance d'obtenir des performances raisonnables. Certaines des choses que j'aime avec Java qui concerne l'imagerie:

  1. Imagerie avancée Java
  2. Utilitaires graphiques 2D (jetez un oeil à BufferedImages)
  3. ImageJ, etc
  4. Faites-le fonctionner avec JAMA
 4
Author: monksy, 2010-06-14 16:51:35

Demandez à quelqu'un dans le domaine dans lequel vous travaillez (c'est-à-dire, bioinformatique)

Pour les images solaires, la majorité du travail se fait en IDL, Fortran, Matlab, Python, C ou Perl (PDL). (À peu près dans cet ordre ... IDL est certainement le premier, car la majorité des logiciels d'étalonnage des instruments est écrite en IDL)

Pour cette raison, il y a beaucoup de boîtes à outils déjà écrites dans ces langues pour notre domaine. Fréquemment, avec de grands ensembles de données de référence, le PI libère un certain progiciel comme un exemple de la façon d'interpréter interagir avec le format de données. Je ne peux que supposer que la Bioinformatique serait similaire.

Si vous finissez par suivre une voie différente du reste du domaine, vous aurez beaucoup plus de mal à travailler avec d'autres scientifiques car vous ne pouvez pas partager le code aussi facilement.

Remarque Note Il y a un certain nombre d'outils de visualisation qui ont été publiés dans notre domaine qui ont été écrits en Java, mais ils supposent que les images ont déjà été préparées par certains d'autres processus.

 3
Author: Joe, 2010-06-14 17:03:45

La bibliothèque de vision par ordinateur (traitement d'image, analyse d'image) la plus populaire est OpenCVqui est écrite en C++, mais peut également être utilisée avec Python, et Java (officiel OpenCV4Androidet non officiel JavaCV).

Il existe des applications bioinformatiques qui sont essentiellement un traitement d'image, donc OpenCV s'en chargera. Mais il y en a aussi qui ne le sont pas, ils sont, par exemple, basés sur l'apprentissage automatique, donc si vous avez besoin de quelque chose d'autre que l'image / vidéo connexes vous aurez besoin d'une autre bibliothèque orientée bioinformatique. Opencv dispose également d'un module d'apprentissage automatique, mais il est plus axé sur la vision par ordinateur.

A propos des langages C vs Java, la plupart a été dit dans les autres réponses. Je dois ajouter que ces bibliothèques sont maintenant basées sur C++ et non sur C. Si vos applications ont des besoins de traitement en temps réel, C++ sera probablement meilleur pour cela, sinon, Java sera plus que suffisant car il est plus convivial.

 1
Author: Rui Marques, 2012-06-12 13:49:59

Idéalement, vous utiliseriez quelque chose comme Java ou (encore mieux) Python pour des choses "de haut niveau", et compileriez en C les routines qui nécessitent beaucoup de puissance de traitement (par exemple en utilisant Cython, etc.).

Certaines bibliothèques scientifiques existent pour Python (SciPy et NumPy), et elles sont un bon début, bien qu'il ne soit pas encore simple de combiner Python et C (vous devez modifier un peu les choses).

 0
Author: oulipo, 2010-06-15 14:16:19

Juste mes deux pence: java n'autorise pas l'utilisation de pointeurs par opposition à C/C++ ou C#. Donc, si vous allez manipuler des pixels directement, c'est-à-dire écrire vos propres fonctions de traitement d'image, elles seront beaucoup plus lentes que l'équivalent en C++. D'autre part, C++ est un cauchemar total d'un langage comparé à java. il vous faudra au moins deux fois plus de temps pour écrire le bit de code équivalent en c++. donc avec tout le gain de productivité vous pouvez probablement vous permettre d'acheter un ordinateur qui compense la différence d'exécution ; -)

Je sais que d'autres langages ne sont pas une option pour vous, mais personnellement, je peux fortement recommander c# pour le traitement d'image ou la vision par ordinateur: il permet des pointeurs et donc les fonctions IP en c# ne sont que moitié moins lentes qu'en C++ (un compromis acceptable je pense) et il a une excellente intégration

 0
Author: morishuz, 2011-06-30 10:56:32

Avertissement: Je travaille pour TunaCode.

Si vous devez faire un choix entre différents langages pour commencer le traitement d'image, je recommanderais de commencer avec C++. Vous pouvez accéder au pointeur brut, ce qui est indispensable si vous souhaitez utiliser des pixels individuels.

Ensuite, quel type d'imagerie vous intéresse? Juste pour des filtres d'image amusants ou des trucs lourds comme l'estimation de mouvement, le suivi et la détection, etc.? Pour cela je vous recommande de jeter un oeil à CUVILib puisque plus tôt que tard, vous aurez besoin de performances sur la fonctionnalité d'imagerie et c'est ce que CUVI fournit. Vous pouvez l'utiliser comme autonome s'il sert vos objectifs ou vous pouvez le brancher avec d'autres bibliothèques comme Intel IPP, ITK, OpenCV etc.

 0
Author: Salman Ul Haq, 2012-06-12 09:04:34