2011-01-22 18 views
8

वर्तमान में, अगर मैं कुत्ते के प्रत्येक पंजे के नीचे दबाव की तुलना करना चाहता हूं, तो मैं केवल प्रत्येक पैर की उंगलियों के नीचे दबाव की तुलना करता हूं। लेकिन मैं पूरे पंजा के नीचे दबावों की कोशिश करना और तुलना करना चाहता हूं।मैं 3 डी सरणी कैसे घुमा सकता हूं?

लेकिन ऐसा करने के लिए मुझे उन्हें घूमना है, इसलिए पैर की अंगुली ओवरलैप (बेहतर) है। चूंकि अधिकांश बार बाएं और दाएं पंजे बाहरी रूप से घुमाए जाते हैं, इसलिए यदि आप केवल दूसरे के शीर्ष पर प्रोजेक्ट नहीं कर सकते हैं। इसलिए, मैं पंजा को घुमाने के लिए चाहता हूं, इसलिए वे सभी एक ही तरीके से गठबंधन हैं।

alt text

वर्तमान में, मैं रोटेशन के कोण की गणना, तो दो मध्य पैर की उंगलियों और पीछे एक using the toe detection ऊपर देखकर भी मैं पीली लाइन के बीच कोण की गणना और (पैर की अंगुली हरे और लाल के बीच अक्ष) हरी रेखा (तटस्थ धुरी)।

अब मैं घुमाएगा कि सरणी पीछे की अंगूठी के चारों ओर घूमती है, जैसे कि पीले और हरे रंग की रेखाएं गठबंधन होती हैं। लेकिन मैं यह कैसे करूँ?

ध्यान दें कि यह छवि केवल 2 डी है (केवल प्रत्येक सेंसर के अधिकतम मान), मैं इसे 3 डी सरणी (औसत पर 10x10x50) पर गणना करना चाहता हूं। इसके अलावा मेरे कोण की गणना का नकारात्मक पक्ष यह है कि यह पैर की अंगुली का पता लगाने के प्रति बहुत संवेदनशील है, इसलिए अगर किसी के पास इसकी गणना करने के लिए गणितीय रूप से सही प्रस्ताव है, तो मैं सभी कान हूं।

I have seen one study with pressure measurements on humans, जहां उन्होंने स्थानीय ज्यामितीय जड़त्व अक्ष विधि का उपयोग किया, जो कम से कम बहुत विश्वसनीय था। लेकिन यह अभी भी मुझे सरणी को घुमाने के तरीके की व्याख्या करने में मदद नहीं करता है! किसी को प्रयोग करने के लिए की जरूरत महसूस करता है

alt text

हैं, तो यहाँ all the sliced arrays that contain the pressure data of each paw के साथ एक फ़ाइल है। स्पष्टीकरण के लिए: walk_sliced_data एक शब्दकोश है जिसमें ['ser_3', 'ser_2', 'sel_1', 'sel_2', 'ser_1', 'sel_3'] शामिल हैं, जो माप के नाम हैं। प्रत्येक माप में एक और शब्दकोश, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ('sel_1' से उदाहरण) होता है जो निकाले गए प्रभावों का प्रतिनिधित्व करता है।

उत्तर

2

Python Imaging Library उपयोग करके, आप उदाहरण के लिए के साथ एक सरणी घुमा सकते हैं।@IvoFlipse द्वारा

for x in range(<amount of layers>): 
    layer = <array>[i] 
    <array>[i] = (Image.fromarray(layer).rotate(<angle>, resample=Image.BICUBIC)) 

परिणाम, a conversation साथ सुझाव:

आप परतों के रूप में अपना पहला आयाम है, तो array[<layer>] एक 2D परत वापसी होगी, इस प्रकार

  • में सरणी लाना गहरे पृष्ठभूमि का समाधान करने के लिए एक बड़ा सरणी।
  • resampling में देखो, शायद पहले सरणी स्केल करें।
  • पीछे की पैर की अंगुली को बीच की ओर ले जाने से आप इसके बजाए घूमने की अनुमति देते हैं।
  • सीमाओं को ढूंढकर और उन्हें 15x15 में फिर से स्थापित करके एक छोटी छवि निर्धारित की जा सकती है।

alt text

alt text

+2

मुझे लगता है कि आपका समाधान लगभग सही है। पिछली पैर की अंगुली को केंद्र में ले जाने के अलावा इसकी जरूरत है, पीले रंग की रेखा (कोण) को पीछे की अंगूठी पर भी बनाना है। इस प्रकार, दिए गए उदाहरण में, छवि को बाएं घुमाया जाना चाहिए (counterclokwise)। वर्कस्पेस को बड़ा और रिक्रॉपिंग करना इवो चाहता है जो उत्पादन करेगा, जिसे मैं समझता हूं, पंजा के पीछे पैर की अंगूठी के साथ पंजा की विशेषताओं पर एक करीबी है। – Apalala

3

आप ऐसा क्यों करेंगे? क्यों न सिर्फ पूरे क्षेत्र को एकीकृत करें और तुलना करें? इस मामले में आपको बल की परिमाण मिल जाएगी और आप केवल स्केलर्स की तुलना कर सकते हैं जो अधिक आसान होगा।

यदि आपको किसी भी तरह से क्षेत्रों की तुलना करने की आवश्यकता है (और इसलिए आपको उन्हें संरेखित करने की आवश्यकता है) तो शायद एक सुविधा निष्कर्षण और संरेखण का प्रयास करें। लेकिन अगर दबाव नक्शे समान नहीं होते हैं तो यह असफल प्रतीत होता है (कहें कि कोई एक पैर पर ज्यादा इंतजार नहीं कर रहा है)।

मुझे लगता है कि आप वास्तव में जटिल हो सकते हैं, लेकिन ऐसा लगता है कि बल की गणना करना आप चाहते हैं कि आप क्या चाहते हैं?

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

ऐसा करने के लिए आप विभिन्न अनुवादों और घूर्णन के लिए दो अलग-अलग छवियों के बीच सहसंबंध की गणना करें।

array(Image.fromarray(<data>).rotate(<angle>, resample=Image.BICUBIC)) 

वहाँ से, आप सिर्फ एक पाश के लिए अपने 3 डी सरणी के विभिन्न परतों के ऊपर बना सकते हैं:

+0

मैं उन सभी गठबंधन प्राप्त करने के लिए, छवियों सहसंबंधी करने की कोशिश कर के बारे में अपने सुझाव पसंद है, लेकिन है कि मुझे स्पष्ट नहीं होता मैं छवियों कैसे घुमा सकते हैं। इसके अलावा, यदि आपके पास पंजे को सॉर्ट करने के बारे में मेरे प्रश्न पर एक नज़र है [http://stackoverflow.com/q/4502656/77595), तो आप देखेंगे कि मुझे पंजा को घुमाने के लिए उन्हें उचित रूप से मानकीकृत करने की आवश्यकता है। चूंकि वर्तमान में आबादी के भीतर बड़ी भिन्नता एक पंजा को सॉर्ट करना मुश्किल बनाती है जो प्रशिक्षण सेट –

+0

में अलग-अलग घुमाए गए हैं, आपके पंजे "छवियां" हैं। आप उन्हें किसी भी अन्य छवि की तरह घूमते हैं। अगर आपकी छवि f (x, y) द्वारा दी गई है तो आपकी घुमावदार छवि f (x * cos (t) - y * sin (t), y * cos (t) + x * sin (t)) है। इस विधि के साथ एकमात्र समस्या यह है कि यह अलियासिंग के कारण अलग-अलग कार्यों पर अच्छी तरह से काम नहीं करता है। मुझे यकीन है कि आप छवि (2 डी सरणी) घुमाने के लिए कुछ कोड या लाइब्रेरी पा सकते हैं। यह ऐसा कुछ है जो काफी आम है। यदि आप किसी बिंदु के बारे में घूमना चाहते हैं तो आप पहले छवि का अनुवाद करें, घुमाएं, फिर वापस अनुवाद करें। – AbstractDissonance

+0

मुझे सच में यकीन नहीं है कि आपको 3 डी सरणी मिल रही है। मैंने जो कुछ देखा है वह घनत्व वाले भूखंड हैं जो दबाव मानचित्रों के अनुरूप हैं। गणितीय रूप से एक समारोह पी (एक्स, वाई) जो एक 2 डी समारोह है। यदि आपको वास्तव में एक 3 डी सरणी घुमाने की आवश्यकता है तो आपके पास 3 कोण होंगे जिन्हें आप घूम सकते हैं। अनिवार्य रूप से समारोह पी (एक्स, वाई, जेड)। आप किसी भी गेम प्रोग्रामिंग साइट से मैट्रिक्स ट्रांसफॉर्म पा सकते हैं। इस मामले में आपको प्रत्येक बिंदु का अनुवाद करना होगा। अनिवार्य रूप से, आपके मैट्रिक्स में बिंदु (x, y, z) बन जाता है (x ', y', z ') और (x', y ', z') मैट्रिक्स रोटेशन – AbstractDissonance

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