2012-11-28 19 views
10

तो मेरे पास iterative closest point (आईसीपी) एल्गोरिदम है जो एक बिंदु क्लाउड में एक मॉडल लिखा गया है और फिट होगा। उन लोगों के लिए एक त्वरित ट्यूटोरियल के रूप में जिन्हें आईसीपी पता नहीं है, एक साधारण एल्गोरिदम है जो मॉडल और बिंदुओं के बीच अंततः एक सजातीय ट्रांसफॉर्म मैट्रिक्स प्रदान करने वाले मॉडल को इंगित करता है।आईसीपी का आश्वासन, आंतरिक मेट्रिक्स

यहां एक त्वरित तस्वीर ट्यूटोरियल है।

चरण 2:: मज़ा गणित (कभी कभी gradiant वंश या SVD के आधार पर) का एक समूह का उपयोग करते हुए बादल एक साथ करीब खींच और तक दोहराने

चरण 1. मॉडल अपने डेटा सेट करने के लिए सेट में निकटतम बिंदु का पता लगाएं एक मुद्रा बनाई है:

[चित्र 2] [2]

अब जब कि बिट सरल और काम कर रहा है, मैं मदद करना चाहते हैं क्या है के साथ: मैं कैसे बता अगर मुद्रा मेरे पास है वह यह है कि एक अच्छी पहल?

तो वर्तमान में मैं दो विचार है, लेकिन किसी तरह का hacky हैं:

  1. कितने अंक आईसीपी एल्गोरिथ्म में हैं। हां, अगर मैं लगभग कोई अंक नहीं लगा रहा हूं, तो मुझे लगता है कि मुद्रा खराब होगी:

    लेकिन क्या होगा यदि मुद्रा वास्तव में अच्छा है? यह कुछ बिंदुओं के साथ भी हो सकता है। मैं अच्छा बना हुआ अस्वीकार करना चाहते हैं न:

Figure 5

तो क्या हम यहाँ देख कम अंक वास्तव में एक बहुत ही अच्छी स्थिति बना सकते हैं कि अगर वे सही जगह में हो रहा है।

तो अन्य मेट्रिक जांच किए गए बिंदुओं का उपयोग किए गए बिंदुओं का अनुपात था। यहाँ एक उदाहरण

Figure 6

अब हम अंक कि बहुत दूर हैं exlude क्योंकि वे बाहरी कारकों के कारण होगा, अब यह हम आईसीपी काम करने के लिए एक अच्छा प्रारंभिक स्थिति की जरूरत का मतलब है, लेकिन मैं उस के साथ ठीक हूँ। अब ऊपर के उदाहरण में आश्वासन नहीं कहेंगे, यह एक बुरा मुद्रा है, और यह सही होगा क्योंकि अंक के अनुपात शामिल अंक बनाम है:

2/11 < SOME_THRESHOLD 

तो अच्छा thats, लेकिन यह इस मामले में असफल हो जायेगी ऊपर दिखाया गया है कि त्रिकोण उल्टा है। यह कहेंगे कि ऊपर की ओर त्रिकोण अच्छा है क्योंकि सभी बिंदुओं का उपयोग आईसीपी द्वारा किया जाता है।

आप इस प्रश्न का उत्तर देने के लिए आईसीपी पर एक विशेषज्ञ होने की आवश्यकता नहीं है, मैं अच्छे विचारों की तलाश में हूं। अंक के ज्ञान का उपयोग करके हम कैसे वर्गीकृत कर सकते हैं कि यह एक अच्छा मुद्रा समाधान है या नहीं?

इन दोनों समाधानों का उपयोग एक साथ एक अच्छा सुझाव है, लेकिन अगर आप मुझसे पूछें तो यह एक सुंदर लंगड़ा समाधान है, जो इसे केवल थ्रेसहोल्ड करने के लिए बहुत मूर्ख है।

ऐसा करने के लिए कुछ अच्छे विचार क्या हैं?

पीएस। अगर आप कुछ कोड जोड़ना चाहते हैं, तो कृपया इसके लिए जाएं। मैं सी ++ में काम कर रहा हूं।

पीपीएस। कोई मुझे इस प्रश्न को टैग करने में मदद करता है, मुझे यकीन नहीं है कि यह कहां गिरना चाहिए।

+0

एक मुद्रा परिभाषित कैसे किया जाता है? रेखा खंड? – FoolishSeth

+0

एक समरूप परिवर्तन मैट्रिक्स के रूप में। –

+0

जिज्ञासा से, क्या आपको कोई समाधान मिला है? क्या आपने उत्तर में कुछ पेशकश की है, या अपने आप से कुछ आया है? – Andrei

उत्तर

3

एक संभव दृष्टिकोण उनके आकार और उनके उन्मुखीकरण से बना हुआ की तुलना की जा सकती है।

आकृतियाँ तुलना Hausdorff distance up to isometry साथ किया जा सकता है कि बना हुआ एक ही आकार जहां d_threshold प्रयोगों से पाया जाना चाहिए

d(I(actual_pose), calculated_pose) < d_threshold 

के हैं। एक्स I के आइसोमेट्रिक संशोधनों के रूप में विभिन्न कोणों द्वारा घूर्णन पर विचार किया जाएगा - इस मामले में पर्याप्त प्रतीत होता है।

बना हुआ एक ही आकार है, हम उनकी उन्मुखीकरण तुलना करनी चाहिए। अभिविन्यास की तुलना करने के लिए हम कुछ हद तक सरलीकृत Freksa model का उपयोग कर सकते हैं। प्रत्येक के लिए मुद्रा हम मूल्यों

{x_y min, x_y max, x_z min, x_z max, y_z min, y_z max} 

गणना और उसके बाद यह सुनिश्चित करें कि बना हुआ के लिए संबंधित मानों के बीच प्रत्येक अंतर another_threshold, साथ ही प्रयोगों से प्राप्त नहीं तोड़ता है बनाना चाहिए।

उम्मीद है कि यह कुछ समझ में आता है, या कम से कम आप इससे अपने उद्देश्य के लिए कुछ उपयोगी बना सकते हैं।

+0

मैंने वास्तव में इसे अभी तक ठीक से नहीं पढ़ा था । दूसरे सुझाव के लिए, क्या आपको तुलना करने के लिए वास्तविक मुद्रा की आवश्यकता है। हमारे पास वास्तविक मुद्रा नहीं है, इसलिए यह काम नहीं करेगा। –

1

आईसीपी, अपनी बात-बादल और एक मॉडल के बीच की दूरी कम करने के लिए प्रयास करता है हाँ? क्या यह वास्तव में निष्पादन के बाद की दूरी के आधार पर इसका मूल्यांकन करने का सबसे अधिक अर्थ नहीं उठाएगा?

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

ऐसा लगता है कि आप जिस भी गणना के साथ आ सकते हैं, उससे अधिक अंतर्दृष्टि प्रदान करता है जो कि आईसीपी कम से कम अंतर्दृष्टि प्रदान करता है, एल्गोरिदम में ही अधिक उपयोगी होगा, इसलिए यह भी इसे कम कर सकता है। =)

अद्यतन

मुझे लगता है कि मैं काफी एल्गोरिथ्म समझ में नहीं आया। ऐसा लगता है कि यह अंक के उप-समूह का चयन करता है, उन्हें त्रुटि को कम करने के लिए बदलता है, और फिर उन दो चरणों को दोहराता है? उस स्थिति में आपका आदर्श समाधान यथासंभव छोटे से त्रुटि रखते हुए जितना संभव हो उतना अंक चुनता है।

आपने कहा कि दोनों शब्दों को संयोजित करना एक कमजोर समाधान की तरह लग रहा था, लेकिन यह मुझे लगता है कि आप जो चाहते हैं उसके सटीक वर्णन की तरह मुझे लगता है, और यह एल्गोरिदम (हाँ?) की दो प्रमुख विशेषताओं को कैप्चर करता है। error + B * (selected/total) जैसे कुछ का उपयोग करके मूल्यांकन करना आध्यात्मिक रूप से समान होता है कि ग्रेडियेंट वंश (और इसी तरह) एमएल एल्गोरिदम के साथ ओवरफिटिंग समस्या को हल करने के लिए नियमितकरण का उपयोग कैसे किया जाता है। बी के लिए एक अच्छा मूल्य चुनना कुछ प्रयोग करेगा।

+0

दुर्भाग्यवश आपके आश्वासन को आधार देना कि जिस मूल्य को आप कम करने की कोशिश कर रहे हैं उसके आधार पर मुद्रा सही है, यह एक बहुत अच्छा विचार नहीं है। किसी भी समय जब मुद्रा स्थानीय मिनिमा में पड़ता है तो यह एक अच्छी मुद्रा दिखाएगा। वास्तव में यह हमेशा एक अच्छी मुद्रा दिखाएगा यदि आईसीपी ने सही तरीके से काम किया है जो बहुत अच्छा नहीं है। हालांकि अच्छा जवाब। –

+0

यह काफी समझ में नहीं आता है। बेशक एल्गोरिदम स्थानीय मिनीमा तक पहुंच सकता है लेकिन वह मूल्य जो अभी भी कम करने की कोशिश कर रहा है उतना छोटा नहीं होगा जितना कि यह वैश्विक इष्टतम पाया जाएगा। – FoolishSeth

+0

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

1

अपने उदाहरणों को देखते हुए, ऐसा लगता है कि यह निर्धारित करता है कि मैच अच्छा है या नहीं, अंक की गुणवत्ता है। क्या आप अपने मीट्रिक की गणना में भारोत्तोलन कारक का उपयोग/गणना कर सकते हैं?

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

वैकल्पिक रूप से, हो सकता है कि वज़न इस बात पर होनी चाहिए कि अंक कितने वितरित होते हैं, फिर यह सुनिश्चित करने की कोशिश कर रहे हैं कि आपके पास छोटे अस्पष्ट सुविधाओं से मेल खाने के बजाय अच्छा कवरेज हो।

+0

अच्छा सुझाव, क्या आपके पास कोई कागजात या संदर्भ हैं जहां यह किया जाता है। कम्प्यूटेशनल तीव्रता के बारे में भी चिंतित हूं, क्या आपको लगता है कि यह बहुत गहन होगा? एक ट्रक या विमान कहें तो मॉडल आकार के कवरेज की जांच करने के बारे में कैसे जाते हैं जब मॉडल एक जटिल होता है तो एक त्रिकोण होता है? –

+0

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

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