2009-06-12 13 views
7

मैं 3 डी में डिकॉम छवियों को देखने के लिए सर्जन द्वारा उपयोग किए जाने वाले चिकित्सा समाधान का निर्माण करना चाहता हूं। साथ ही, सॉफ्टवेयर उन्हें छवियों में कुछ सेगमेंटेशन और हेरफेर करने की अनुमति देगा।चिकित्सा छवि प्रसंस्करण के लिए सर्वश्रेष्ठ प्रोग्रामिंग भाषा

मैं इस परियोजना के साथ सहायता के लिए शायद वीटीके पैकेज www.vtk.org/ का उपयोग करूंगा।

अब, मुझे आश्चर्य है कि यह प्रोजेक्ट सी #, सी ++ या पायथन में करना आसान है या बेहतर है? मैं इन तीन विकल्पों के बीच चयन करने के तरीके में किसी भी मदद की सराहना करता हूं।

उत्तर

4

व्यक्तिगत रूप से, मैं एक सी ++ और पायथन लड़का हूं, और शायद मैं सी ++ के साथ जाऊंगा, क्योंकि यह अपेक्षाकृत गहन परियोजना की तरह लगता है, और मैं सी ++ में अपना सबसे अच्छा उच्च स्तरीय डिज़ाइन करता हूं (तेजी से निर्माण के लिए बढ़िया, लचीला कोड आधार), जबकि मैं django जैसी चीजों के लिए अजगर का उपयोग करता हूं, जहां कम अनुप्रयोग तर्क होता है, लेकिन फ़ंक्शन को ट्यून करने में सक्षम होने के कारण, जल्दी लग रहा है और महसूस करना बहुत महत्वपूर्ण है। हालांकि, मेरी पसंद का मतलब यह नहीं है कि यह आपकी पसंद होनी चाहिए। विचार करने के लिए यहां कुछ बातें दी गई हैं:

सबसे पहले 1) Familiarity। यदि आप उत्पादन कोड कोडिंग कर रहे हैं, तो आप जो कुछ जानते हैं उसके साथ जाना चाहते हैं, और आपके लिए अच्छा काम करता है, या आप भाषा के साथ संघर्ष करेंगे और समय सीमा खो देंगे। और जब भी आप परियोजना को पूरा करते हैं, तब भी आप जो चीजें सीख रहे थे, उसके लिए आपको बहुत गन्दा कोड होना चाहिए। मैं सभी नई भाषाओं को सीखने के लिए हूं, लेकिन इसे उस चीज़ पर बनाओ जिसे आप खराब कर सकते हैं।

2) तृतीय पक्ष पुस्तकालय; आपने जो भी बताया है उसके अलावा आप कौन सा चाहते हैं? अगर उनके पास रैपर नहीं हैं, तो आप अपना खुद का रोलिंग करेंगे। आप जो अपना जीयूआई लिखना चाहते हैं वह एक उदाहरण होगा।

3) परिनियोजन: मुझे लगता है कि यह एक अनुमानित विंडोज निष्पादन योग्य होगा। सी # और सी ++ दोनों इसे आसानी से करते हैं, लेकिन यदि आप पाइथन दुभाषिया

2

यदि आप पाइथन से दूर हो सकते हैं - दूसरे शब्दों में, यदि आपको पता है कि यह पाइथन में ठीक होगा, तो मैं निश्चित रूप से इसे सी #/सी ++ पर चुना होगा।

मुझे यकीन है कि आप जो भी 3 डी लाइब्रेरी का उपयोग करते हैं वह सी या सी ++ में बनाया गया है, इसलिए इसे उच्च स्तर की भाषा जैसे पाइथन के साथ इंटरफेसिंग करना मंदी का कारण नहीं बनना चाहिए।

+0

मैं सोच रहा था कि आप सी # और सी ++ – Bekh

+3

पर फीथन की सिफारिश क्यों करेंगे, पाइथन उच्च स्तर की भाषा है, और इस प्रकार आपको अधिक काम, तेज और कम दर्द मिलेगा। यह तर्क दिया जा सकता है कि सी # एक उच्च स्तरीय भाषा भी है, लेकिन सी ++ नहीं है, और यदि आप इसका उपयोग करने का निर्णय लेते हैं तो आप अधिक परेशानी में भाग लेंगे। – cloudhead

+3

सी ++ प्रोग्रामर कोड के रूप में उच्च स्तर के रूप में है –

0

मैंने थोड़ी देर के लिए ध्वनि वीट के लिए काम किया। वे पशु चिकित्सा क्षेत्र के लिए xray इमेजिंग सॉफ्टवेयर प्रदान करते हैं। वे सी # और विनफॉर्म का उपयोग करते हैं।

0

के साथ एक पायथन प्रोग्राम को तैनात करने की योजना बना रहे हैं, तो आपको py2exe से परिचित होना होगा। मैं टोड गार्डनर से सहमत हूं कि परिचितता शायद सफलता का निर्धारण करने वाला सबसे बड़ा कारक है एक प्रोग्रामिंग भाषा पसंद का। इसलिए यदि आप उन तीन भाषाओं में से किसी एक से अधिक परिचित हैं (या जो भी आपके अन्य विकल्प हैं), तो मैं उसे चुनने की सलाह दूंगा।

हालांकि, यदि आप उन सभी के साथ समान रूप से अपरिचित हैं, तो मैं पाइथन की दूसरी क्लाउडहेड की सिफारिश करता हूं। मेरा मानना ​​है कि यह सीखने और उत्पादक बनने के लिए तीनों में से सबसे आसान है।

1

अधिकांश चिकित्सा 3 डी-छवियां आमतौर पर बहुत बड़ी (जीबी आकार) होती हैं। आप एक ऐसी भाषा चुनना चाहते हैं जो आसानी से इनका सामना कर सके। मेरे ज्ञान के लिए सी # में 2 जीबी मेमोरी सीमा है (मुझे 100% निश्चित नहीं है) जो कुछ समस्याएं पैदा कर सकता है।

मुझे पाइथन के साथ कोई अनुभव नहीं है इसलिए मैं उस रास्ते से आगे नहीं जा रहा हूं। लेकिन मैंने चिकित्सा छवि डेटा (पुनर्निर्माण, फ़िल्टरिंग, सामान्यीकरण और अन्य भारी गणनाओं) पर सी # और सी ++ दोनों के साथ काम किया है। हमारे मामले में सी ++ गति की वजह से एकमात्र विकल्प है। लेकिन जब छवियों को देखने की बात आती है, तो शायद यह कोई मुद्दा नहीं हो सकता है।

मैं आपको शुभकामनाएं देता हूं। एक अच्छा स्थिर और त्वरित 3 डी दर्शक बहुत अच्छा होगा!

+1

सी #/.NET करता है और इसमें 2 जीबी मेमोरी सीमा नहीं है। यदि आप स्मृति के एक निरंतर खंड आवंटित करने की कोशिश कर रहे हैं (यानी नया बाइट [x]), तो आप 2 जीबी तक सीमित हैं। यह जानबूझकर है।हालांकि 64 बिट सिस्टम पर आप सामान्य रूप से सिस्टम को जितनी मेमोरी आवंटित कर सकते हैं, तब तक कोई भी चक 2 जीबी से अधिक नहीं हो सकता है जब असेंबली 32 बिट सिस्टम पर चलती है। एक बड़ी छवि लोड करने के लिए, आप संपूर्ण छवि के लिए एक विशाल सरणी बनाने की कोशिश करने के बजाय, प्रत्येक स्कैनलाइन के लिए एक बाइट [] सरणी बना सकते हैं। आप ब्लॉक को – David

6

पायथन 3 डी विज़ुअलाइज़ेशन के लिए लोकप्रिय हो रहा है - उदाहरण के लिए, कई प्रयोगशालाएं मस्तिष्क इमेजरी के लिए इसका उपयोग करती हैं। तो यह निश्चित रूप से इस तरह की समस्याओं के लिए प्रयोग योग्य है। लाइब्रेरी के अनुसार, मुझे लगता है कि आप vtk जैसी चीजों से अवगत हैं और सह पाइथन से इस्तेमाल किया जा सकता है।

http://neuroimaging.scipy.org/site/doc/manual/html/faq/why.html

बेशक

, सिद्धांत में सी ++, में यह कर रही है, तेजी से कार्यक्रमों, बाकी सब एक समान हों (समान एल्गोरिदम, भाषा में कुशल प्रोग्रामर, आदि ...) और दिए गए 'में परिणाम होगा अनंत समय '। लेकिन पाइथन निश्चित रूप से सी ++ की तुलना में अधिक उत्पादक है: एक निश्चित समय में, आपको सी ++ की तुलना में अजगर में अधिक चीजें मिलेंगी, जब तक कि आप पाइथन की तुलना में सी ++ में बेहतर प्रोग्रामर न हों। इसके अलावा, यदि वैज्ञानिक लोगों के साथ बातचीत करने की आवश्यकता है जो प्रोग्रामर नहीं हैं, तो पाइथन सी ++ से अधिक पठनीय होगा। शोधकर्ताओं/वैज्ञानिक लोगों द्वारा उत्पादित सी ++ मेरे अनुभव में वास्तव में भयानक होता है (फोरट्रान से भी बदतर :))।

सबसे बड़ी समस्या जिसे मैं पूर्ववत कर सकता हूं वह यह है कि अगर पाइथन तेजी से/स्मृति कुशल नहीं है, तो इसमें एक वास्तुकला के दृष्टिकोण से बहुत सी बाधाएं शामिल हैं। मुझे नहीं लगता कि यह इमेजरी का मामला होगा (पायथन, उच्चस्तरीय भाषाओं के रूप में, स्केलेबिलिटी समस्याएं होती हैं जब आपको कई इंटरैक्शन के साथ दस हजार वस्तुओं की आवश्यकता होती है - यह उन कुछ क्षेत्रों में से एक है जहां एक परियोजना के लिए सी ++ का उपयोग करना है स्क्रैच से शुरू हुआ अभी भी आईएमएचओ आजकल समझ में आता है)।

अस्वीकरण: मुझे यह उल्लेख करना चाहिए कि मैं वैज्ञानिक पायथन समुदाय में काफी शामिल हूं, और मैं एक छवि प्रसंस्करण विशेषज्ञ नहीं हूं।

+3

+1 में सरणी बनाने के लिए जेनेरिक एब्स्ट्रक्शन क्लास का भी उपयोग कर सकते हैं हम संख्यात्मक कार्यों के लिए सी ++ और पायथन दोनों का उपयोग करते हैं। पाइथन के साथ मुद्दों में हम एकमात्र बार भाग गए थे जब हमारे पास छोटी वस्तुओं का एक टन था। पाइथन तब बहुत अधिक स्मृति का उपयोग करने के लिए प्रतिबद्ध था। और यदि यह बहुत धीमा है, तो आप लाइब्रेरी को कॉल करके इसे तेज नहीं कर सकते हैं क्योंकि छोटी वस्तुओं के लिए I/O बहुत धीमा है और आपके पास अभी भी स्मृति समस्याएं हैं। लेकिन अगर आपके पास एक बड़ी वस्तु है और आप कुछ भारी काम के लिए लाइब्रेरी को कॉल कर सकते हैं, तो पाइथन के पास बहुत तेज दौर-यात्रा के समय हैं और मैं इसके लिए जाऊंगा। – stephan

0

अधिकांश पेशेवर चिकित्सा इमेजिंग कंपनियां Accusoft Pegasus PICTools पुस्तकालयों का उपयोग करती हैं। वे जेपीईजी 2000, लॉसलेस जेपीईजी, जेपीईजी-एलएस, और अन्य सभी डीआईसीओएम हानिकारक और हानि रहित प्रारूपों के लिए सबसे तेज़, और सबसे मानक संपीड़न और डिकंप्रेशन प्रदान करते हैं।

यदि गति की आवश्यकता है, तो कुछ भी तुलना नहीं करेगा।

यदि आप विंडोज़ पर तैनात हैं, तो ImageGear .NET या ImageGear Pro आपको DICOM डीसीएम फ़ाइलों के लिए पूर्ण समर्थन के साथ उपयोग में आसान वातावरण प्रदान करेगा।

आप विंडोज विकास के लिए इमेगएक्सप्रेस का भी उपयोग कर सकते हैं।

2

ITK चिकित्सा छवि प्रसंस्करण के मधुमक्खी के घुटने हैं, और यह सी ++ में है। तो मुझे लगता है कि मैं सी ++ डब्ल्यू/आईटीके की सिफारिश करता हूं।

संबंधित मुद्दे