एक 2D सरणी में चोटी का पता लगाना

| | | | | | | | | | | | | | | | | | | | | |

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

मैंने बनाया प्रत्येक पंजा की एक 2डी सरणी, जिसमें समय के साथ पंजा द्वारा लोड किए गए प्रत्येक सेंसर के लिए अधिकतम मान शामिल हैं। यहां एक पंजा का उदाहरण दिया गया है, जहां मैंने उन क्षेत्रों को खींचने के लिए एक्सेल का उपयोग किया है जिन्हें मैं "पता लगाना" चाहता हूं। ये स्थानीय मैक्सिमा वाले सेंसर के चारों ओर 2 बाय 2 बॉक्स हैं, जिनमें एक साथ सबसे बड़ा योग है।

alt text

इसलिए मैंने कुछ प्रयोग करने की कोशिश की और बस देखने का फैसला किया प्रत्येक स्तंभ और पंक्ति के अधिकतम (पंजे के आकार के कारण एक दिशा में नहीं देख सकते हैं)। ऐसा लगता है कि अलग-अलग पैर की उंगलियों के स्थान का "पता लगाना" है, लेकिन यह पड़ोसी सेंसर को भी चिह्नित करता है।

alt text

तो पाइथन को यह बताने का सबसे अच्छा तरीका क्या होगा कि इनमें से कौन सा मैक्सिमम वही हैं जो मुझे चाहिए?

नोट: 2x2 वर्ग ओवरलैप नहीं हो सकते, क्योंकि उन्हें अलग-अलग पैर की उंगलियां होनी चाहिए!

इसके अलावा मैंने 2x2 लिया एक सुविधा के रूप में, किसी भी अधिक उन्नत समाधान का स्वागत है, लेकिन मैं केवल एक मानव आंदोलन वैज्ञानिक हूं, इसलिए मैं न तो वास्तविक प्रोग्रामर हूं और न ही गणितज्ञ, इसलिए कृपया इसे "सरल" रखें।

यहां"sa संस्करण जिसे np.loadtxt


परिणाम

इसलिए मैंने @jextee के समाधान की कोशिश की (नीचे परिणाम देखें)। जैसा कि आप देख सकते हैं, यह सामने के पंजे पर बहुत काम करता है, लेकिन यह हिंद पैरों के लिए कम अच्छा काम करता है।

अधिक विशेष रूप से, यह उस छोटी चोटी को नहीं पहचान सकता जो चौथा पैर का अंगूठा है। यह स्पष्ट रूप से इस तथ्य के लिए अंतर्निहित है कि लूप सबसे कम मूल्य की ओर ऊपर दिखता है, यह ध्यान में रखे बिना कि यह कहां है।

क्या किसी को पता होगा कि @jextee" के एल्गोरिदम को कैसे बदलना है, ताकि वह चौथे पैर की अंगुली को भी ढूंढ सके?

alt text

चूंकि मैंने अभी तक कोई अन्य परीक्षण संसाधित नहीं किया है, मैं किसी अन्य नमूने की आपूर्ति नहीं कर सकता। लेकिन डेटा जो मैंने पहले दिया था प्रत्येक पंजा के औसत थे। यह फ़ाइल एक सरणी है जिसमें 9 पंजे के अधिकतम डेटा के साथ क्रम में वे प्लेट के साथ संपर्क बनाते हैं।

यह छवि दिखाती है कि वे प्लेट पर स्थानिक रूप से कैसे फैले हुए थे।

alt text

अपडेट:

मैंने रुचि रखने वालों के लिए एक ब्लॉग सेट किया है और मैंने सभी कच्चे मापों के साथ एक स्काईड्राइव सेटअप किया है। तो किसी के लिए भी अधिक डेटा का अनुरोध: आपको अधिक शक्ति!


नया अपडेट:

इसलिए मदद के बाद मुझे के बारे में अपने सवालों का जवाब मिला। पंजा पहचान और पंजा छँटाई, मैं अंत में प्रत्येक पंजा के लिए पैर की अंगुली का पता लगाने की जांच करने में सक्षम था! पता चला, यह "किसी भी चीज़ में इतनी अच्छी तरह से काम नहीं करता है, लेकिन पंजे मेरे अपने उदाहरण के आकार के समान हैं। निश्चित रूप से, 2x2 को मनमाने ढंग से चुनने के लिए यह मेरी अपनी गलती है।

यहाँ" यह कहां गलत है इसका एक अच्छा उदाहरण: एक नाखून को पैर की अंगुली के रूप में पहचाना जा रहा है और "एड़ी" इतनी चौड़ी है, इसे दो बार पहचाना जाता है!

alt text

पंजा बहुत बड़ा है, इसलिए बिना किसी ओवरलैप के 2x2 आकार लेने से कुछ पैर की उंगलियों का दो बार पता चलता है। दूसरी तरफ , छोटे कुत्तों में यह अक्सर 5वां पैर का अंगूठा खोजने में विफल रहता है, जिसके बारे में मुझे संदेह है कि यह 2x2 क्षेत्र के बहुत बड़े होने के कारण हो रहा है।

अपने सभी मापों पर वर्तमान समाधान की कोशिश कर रहा हूं मैं इस चौंकाने वाले निष्कर्ष पर पहुंचा कि मेरे लगभग सभी छोटे कुत्तों के लिए इसे 5वां स्थान नहीं मिला पैर की अंगुली और बड़े कुत्तों के लिए 50% से अधिक प्रभावों में यह अधिक मिलेगा!

तो स्पष्ट रूप से मुझे इसे बदलने की आवश्यकता है। मेरा अपना अनुमान था कि पड़ोस के आकार को छोटे कुत्तों के लिए कुछ छोटा और बड़े कुत्तों के लिए बड़ा कर दिया जाए। लेकिन generate_binary_structure मुझे सरणी के आकार को बदलने नहीं देगा।

इसलिए, मुझे उम्मीद है कि पैर की उंगलियों का पता लगाने के लिए किसी और के पास बेहतर सुझाव होगा, शायद पैर की अंगुली होने पर पंजा आकार के साथ क्षेत्र का पैमाना?