Je cherche à construire une solution médicale à utiliser par les chirurgiens pour visualiser les images Dicom en 3D. En outre, le logiciel leur permettra d'effectuer une certaine segmentation et manipulation des images. Je vais probablement utiliser le paquet VTK www.vtk.org/ pour vous aider dans ce projet. Maintenant, je me demande s'il est plus facile et meilleur de faire ce projet en C#, en C++ ou en Python? J'apprécie toute aide pour trouver comment choisir entre ces trois options.Meilleur langage de programmation pour le traitement d'images médicales
Répondre
Personnellement, je suis un gars C++ et python, et j'irais probablement avec C++, parce que cela ressemble à un projet relativement intensif, et je fais la plupart de mon meilleur design en C++ (idéal pour construire rapidement, base de code flexible), alors que j'ai tendance à utiliser python pour des choses comme django, où il y a moins de logique d'application, mais être capable de régler la fonction, regarder et sentir rapidement est très important. Cependant, mon choix ne signifie pas que cela devrait être votre choix. Voici quelques points à considérer:
Principale 1) Connaissance. Si vous codez un code de production, vous voulez utiliser quelque chose que vous connaissez et qui fonctionne bien pour vous, sinon vous allez avoir du mal avec la langue et manquer des délais. Et même lorsque vous terminez le projet, vous êtes obligé d'avoir beaucoup de code désordonné pour les choses que vous étiez en train d'apprendre. Je suis tout pour apprendre de nouvelles langues, mais faites-en quelque chose que vous pouvez vous permettre de bousiller.
2) Bibliothèques de tiers; lesquels voulez-vous en plus de celui que vous avez mentionné? S'ils n'ont pas d'emballage, vous roulerez le vôtre. Ce que vous voulez écrire votre interface graphique serait un exemple.
3) Déploiement: Je suppose que ce sera un exécutable windows supposé. C# et C++ le font tous les deux facilement, mais vous devrez vous familiariser avec py2exe si vous envisagez de déployer un programme python sans un interpréteur python
Si vous pouvez vous en sortir avec python - en d'autres termes, si vous savez qu'il fonctionnera bien en python, je l'aurais certainement choisi en C#/C++.
Je suis sûr que quelle que soit la bibliothèque 3D que vous utilisez est construite en C ou C++ de toute façon, donc l'interfaçage avec un langage de haut niveau comme python ne devrait pas causer de ralentissement.
J'ai travaillé pour Sound Vet pendant un moment. Ils fournissent un logiciel d'imagerie par radiographie pour le domaine vétérinaire. Ils utilisent C# et winforms.
Je suis d'accord avec Todd Gardner que la familiarité est probablement le facteur le plus déterminant du succès d'un choix de langage de programmation. Donc, si vous êtes beaucoup plus familier avec l'une de ces trois langues que les deux autres (ou quelles que soient vos autres options), je vous recommanderais de choisir celle-là.
Cependant, si vous n'êtes pas familier avec tous, alors je ferais une seconde recommandation de Python de cloudhead. Je crois que c'est le plus facile des trois à apprendre et à devenir productif.
La plupart des images 3D médicales sont généralement très grandes (taille GB). Vous voulez choisir une langue qui peut facilement faire face à ceux-ci. À ma connaissance C# a une limite de mémoire de 2 Go (je ne suis pas sûr à 100%) ce qui peut causer des problèmes.
Je n'ai aucune expérience avec Python, donc je ne vais pas aller plus loin dans cette voie. Mais j'ai travaillé avec C# et C++ sur des données d'images médicales (reconstruction, filtrage, normalisation et autres calculs lourds). Dans notre cas, C++ est le seul choix en raison de la vitesse. Mais quand il s'agit de voir les images, cela ne pose probablement pas de problème.
Je vous souhaite la meilleure des chances. Une bonne visionneuse 3D stable et rapide serait géniale!
C#/.NET a et n'a pas de limite de mémoire de 2 Go. Si vous essayez d'allouer un seul morceau de mémoire continu (c'est-à-dire un nouvel octet [x]), vous êtes limité à 2 Go. C'est délibéré.Cependant, sur un système 64 bits, vous pouvez allouer autant de mémoire que le système le permet normalement, tant qu'aucun mandrin ne dépasse les 2 Go qui seraient possibles lorsque l'assemblage est exécuté sur un système 32 bits. Pour charger une grande image, vous pouvez créer un tableau à un octet [] pour chaque ligne de balayage, au lieu d'essayer de créer un tableau massif pour toute l'image. Vous pouvez également utiliser une classe d'abstraction générique pour créer le tableau en blocs – David
Python est devenu populaire pour la visualisation 3D - plusieurs laboratoires l'utilisent pour l'imagerie cérébrale, par exemple. Donc, il est certainement utilisable pour ce genre de problèmes. Au niveau de la bibliothèque, je suppose que vous êtes conscient que des choses comme vtk et co peuvent être utilisées à partir de python.
http://neuroimaging.scipy.org/site/doc/manual/html/faq/why.html
Bien sûr, le faire en C++, en théorie , se traduira par des programmes plus rapides, tout le reste étant égales par ailleurs (même algorithmes, programmeurs compétents dans la langue, etc ...) et données ' temps infini ». Mais python est certainement plus productif que C++: dans un laps de temps donné, vous aurez plus de choses à faire en python qu'en C++, sauf si vous êtes un meilleur programmeur en C++ qu'en python. De plus, s'il y a un besoin d'interagir avec des scientifiques qui ne sont pas des programmeurs, python sera plus lisible que C++. C++ produit par des chercheurs/scientifiques ont tendance à être vraiment horrible dans mon expérience (pire que Fortran :)).
Le plus gros problème que je peux prévoir est si python n'est pas assez rapide/mémoire assez efficace, de sorte qu'il implique beaucoup de contraintes d'un point de vue architectural. Je ne pense pas que ce sera le cas pour l'imagerie (Python, comme la plupart des langages de haut niveau, a des problèmes d'évolutivité lorsque vous avez besoin de dix mille objets avec beaucoup d'interactions). commencé à partir de zéro a encore du sens à mon humble avis de nos jours). Clause de non-responsabilité: Je dois mentionner que je suis très impliqué dans la communauté scientifique python, et que je ne suis pas un spécialiste en traitement d'image.
+1 Nous utilisons C++ et Python pour les tâches numériques. Les seules fois où nous avons rencontré des problèmes avec Python, c'était quand nous avions une tonne de petits objets. Python avait alors tendance à utiliser trop de mémoire. Et si c'est trop lent, vous ne pouvez pas simplement l'accélérer en appelant une bibliothèque car les E/S pour les petits objets sont trop lentes et vous avez toujours des problèmes de mémoire. Mais si vous avez un gros objet et que vous pouvez appeler une bibliothèque pour un travail lourd, Python a des temps d'aller-retour beaucoup plus rapides et je le ferais. – stephan
La plupart des sociétés d'imagerie médicale utilisent les bibliothèques Accusoft Pegasus PICTools. Ils offrent la compression et la décompression la plus rapide et la plus standard pour tous les formats DICOM sans perte et sans perte tels que JPEG 2000, JPEG sans perte, JPEG-LS et autres.
SI la vitesse est requise, rien ne se compare.
Si vous déployez sur Windows, ImageGear .NET ou ImageGear Pro vous offrira des environnements faciles à utiliser avec une prise en charge complète des fichiers dcm DICOM.
Vous pouvez également utiliser le développement ImagXpress pour Windows.
ITK est le genou de l'abeille de traitement d'image médicale, et c'est en C++. donc je suppose que je recommanderais C++ w/ITK.
- 1. Quel est le meilleur langage de programmation pour le développement de téléphones mobiles impliquant SMS?
- 2. Changer le langage de programmation
- 3. Quel est le meilleur langage de programmation pour écrire des parseurs et des compilateurs?
- 4. Quel est le meilleur langage pour la reconnaissance d'empreinte?
- 5. Langage de programmation NesC
- 6. bibliothèque d'algèbre linéaire pour le langage de programmation D
- 7. Meilleur langage de programmation pour écrire une application Gestionnaire de fichiers Windows
- 8. benchmarks de langage de programmation Web?
- 9. Langage alternatif pour faire de la programmation Cocoa
- 10. Langage de programmation pour travailler avec les axiomes
- 11. Traitement du langage naturel en Ruby
- 12. Le langage de programmation C 2. ed. question
- 13. Avez-vous l'intention d'utiliser le langage de programmation Factor?
- 14. Langage de programmation nommé "C Set 2"
- 15. Quel langage de programmation a cette syntaxe?
- 16. Quel est ce langage de programmation?
- 17. Quel langage de programmation est utilisé pour créer le logiciel Workday HRMS?
- 18. Quel est le langage de programmation idéal pour un robot d'exploration Web?
- 19. Référence du langage de programmation: remplacement de chaîne
- 20. Quel est le langage de programmation le plus courant/le plus dense actuellement disponible?
- 21. PHP comme un langage de programmation de bureau
- 22. Quel est le statut actuel de LOGO? (Le langage de programmation)
- 23. Existe-t-il un langage de programmation orienté aspect complet?
- 24. Vous cherchez ruby gem qui détermine le langage de programmation en lisant le code?
- 25. Fonctions de langage dynamique et méta-programmation utilisées dans Django
- 26. Utilisation du langage de programmation D dans un contexte .NET
- 27. Je suis un développeur Windows Forms \ WPF. Dois-je lire le livre de programmation de Petzold (le langage C)?
- 28. Meilleur cas pour le tri à bulles
- 29. Des idées pour un projet de traitement distribué?
- 30. Langage de balisage léger pour Python
Je me demandais pourquoi recommanderiez-vous Phython sur C# et C++ – Bekh
Python est un langage de plus haut niveau, et vous obtiendrez ainsi plus de travail, plus rapidement et avec moins de douleur. On peut affirmer que C# est aussi un langage de haut niveau, mais C++ ne l'est pas, et vous aurez beaucoup plus de mal si vous décidez de l'utiliser. – cloudhead
C++ est aussi haut niveau que le programmeur le code –