मेरे पास 2 डी माध्य फ़िल्टर (3x3 विंडो) में एक बाधा है जिसका उपयोग मैं छवियों के एक बहुत बड़े सेट पर करता हूं, और मैं इसे आजमाने और अनुकूलित करना चाहता हूं। मैंने scipy.ndimage
median_filter, साथ ही PIL
, scipy.signal
और scikits-image
का परीक्षण किया है। हालांकि, एसओ में ब्राउजिंग में मैंने सीखा है कि सी में एक तेज़ ओ (एन) औसत फिल्टर है (कॉन्सटेंट टाइम में मेडियन फ़िल्टरिंग Rolling median algorithm in C देखें), और मुझे आश्चर्य हुआ कि क्या मैं इसे scipy.weave.inline का उपयोग करके पायथन में कार्यान्वित कर सकता हूं? वैकल्पिक मार्ग पर कोई सुझाव?तेजी से 2 डी औसत फ़िल्टरिंग के लिए scipy.weave.inline का उपयोग
उत्तर
मुझे अंतर्निहित एल्गोरिदम नहीं पता है, लेकिन scikits-image में rolling median filter है।
अन्यथा, मैं इसे Cython (सी/पायथन पिजिन भाषा) में लिखने की अनुशंसा करता हूं। Numpy arrays के साथ काम करने के लिए convolution example/tutorial जांचना सुनिश्चित करें।
धन्यवाद, मैं इसे देख लूंगा। इसके अलावा, 3x3 लिखकर मेरा मतलब था कि औसत विंडो आकार 3x3 है, वास्तविक छवि का उपयोग मेगापिक्सेल बड़ा है। – bla
अच्छा, ऐसा लगता है कि विज्ञान और पीआईएल और scipy.ndimage से भी धीमी है। दुर्भाग्यवश, जिन छवियों पर मैं काम करता हूं वे 16 बिट हैं इसलिए 0..255 विकल्प प्रासंगिक नहीं है। अगला साइथन ... – bla
यदि आपका अभी भी रुचि मैं कोशिश करता हूँ numpy के आकृति बदलें और मंझला:
a= some big array
a.reshape(N,3,3) #N being specific to your array
[numpy.median(m) for m in a]
मैं कैसे इस तराजू अपने testet तरीकों की तुलना में पता नहीं है, लेकिन आप के लिए जकड़ना सकता है अगर आप सी के साथ अनुकूलित करना चाहते हैं सूची समझ में पाश ...
यह सुरुचिपूर्ण है, लेकिन दुर्भाग्य से यह प्रत्येक गैर-ओवरलैपिंग 3x3 के औसत की गणना करता है, न कि प्रत्येक संभावित 3x3 के औसत। –
इस प्रयास करें: Rolling median in C - Turlach implementation
उपयोग:
Mediator* m = MediatorNew(9);
for (...)
{
MediatorInsert(m, value);
median = MediatorMedian(m);
}
मेरा मानना है कि इस आर algo के रूप में ही है, लेकिन क्लीनर (आश्चर्यजनक तो, वास्तव में)।
आप या तो इसे लपेट सकते हैं, या इसे बंद कर सकते हैं और नुंबा (या साइथन) का उपयोग कर सकते हैं। मुझे लगता है कि मैं सिथॉन पर नुंबा की सिफारिश करता हूं, अगर कुछ और नहीं क्योंकि सादा पुराना पायथन कोड है।
मैं scikits को यह जोड़ने का सुझाव है, अगर यह तेजी से पहले से ही scikits में एक :)
धन्यवाद एलेक्स, मैंने अभी तक कोशिश नहीं की है, लेकिन यह आशाजनक लग रहा है। – bla
- 1. 2 डी से 3 डी
- 2. तेजी से फैंसी इंडेक्सिंग के लिए numpy.take का उपयोग
- 3. डी 2
- 4. डी 2: डी साइड
- 5. 3 डी से 2 डी प्रक्षेपण मैट्रिक्स
- 6. क्या गणितीय तरीकों इंटरपोलेशन 2 डी से 2 डी कार्यों के लिए काम करते हैं?
- 7. 2 डी/3 डी गेम विकास के लिए क्यूटी लाइब्रेरी
- 8. जावा 2 डी: ग्राफिक्स 2 डी
- 9. 2 डी ड्राइंग के लिए हास्केल लाइब्रेरी
- 10. 2 डी डेटा/स्कैटरप्लॉट्स
- 11. मौजूदा सी पुस्तकालयों के लिए बाध्यकारी डी (डी 2)
- 12. 2 डी जाल को 2 डी नेट
- 13. डी 2
- 14. तेजी से ज्यामितीय निकटता
- 15. जेएस 2 डी सरणी
- 16. लाइन 2 डी के लिए एंड्रॉइड विकल्प?
- 17. 2 डी सरणी के साथ LINQ का उपयोग कर,
- 18. डी 2
- 19. 2 डी
- 20. 2 डी सरणी से डेटा के मनमाने ढंग से घुमाए गए विमान को 2 डी सरणी
- 21. 2 डी टकराव का पता लगाने के लिए क्वाड्री
- 22. 2 डी numpy.power बहुपद विस्तार के लिए
- 23. 2 डी सरणी के लिए एक सूचक
- 24. 2 डी टकराव का पता लगाने के लिए क्वाड्री
- 25. 2 डी
- 26. 2 डी निरंतर टकराव का पता लगाने
- 27. 2 डी
- 28. गेम प्रोग्रामिंग - 2 डी
- 29. मैं बाहरी सी पुस्तकालयों के साथ scipy.weave.inline का उपयोग कैसे करूं?
- 30. 2 2 डी के क्रॉस उत्पाद
मैं Perreault + हेबर्ट, लगातार समय में माध्य छनन, किसी ऐसे स्थान के लिए एक cython आवरण की तुलना में चलाता है - लेकिन यह है कि हो जाएगा 3x3 के लिए ओवरकिल, एक सॉर्टिंग नेटवर्क बेहतर करें, 25 तुलनाओं में 9 इनपुट। इनपुट 0..255 या क्या हैं? – denis
क्या आप बस अपनी छवि सेट को संसाधित करना चाहते हैं? क्या [ओपनसीवी] (http://opencv.org/) एक वैकल्पिक मार्ग है? [medianBlure] (http://docs.opencv.org/modules/imgproc/doc/filtering.html#medianblur) शायद? आपके पास सीयूडीए और ओपनसीएल कार्यान्वयन भी हैं। – mfrellum
अधिकांश कोड ढांचे पहले से ही पाइथन में हैं, छोटे भाग matlab में हैं, किसी भी तरह से पाइथन में कोड के इस हिस्से को लागू करना सबसे अच्छा होगा। – bla