पॉइंट क्लाउड डेटा में सर्कुलर पैटर्न का पता लगाएं


10

कुछ वॉल्यूम पुनर्निर्माण एल्गोरिथम पर मैं काम कर रहा हूं, मुझे 3 डी बिंदु डेटा (एक एलआईडी डिवाइस से आने वाले) में परिपत्र पैटर्न की एक मनमानी संख्या का पता लगाने की आवश्यकता है। पैटर्न को अंतरिक्ष में मनमाने ढंग से उन्मुख किया जा सकता है, और पतले 2d विमानों में झूठ (हालांकि पूरी तरह से नहीं) माना जा सकता है। यहाँ एक ही विमान में दो वृत्त के साथ एक उदाहरण दिया गया है (हालाँकि यह एक 3 डी स्थान है याद रखें):

यहां छवि विवरण दर्ज करें

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

मैंने K- साधनों की कोशिश की, लेकिन यह अच्छा नहीं करता है: मुझे संदेह है कि परिपत्र बिंदु व्यवस्था इसके लिए अच्छी तरह से अनुकूल नहीं हो सकती है। साथ ही मुझे K के मूल्य को पहले से न जानने की अतिरिक्त समस्या है।

मैंने अधिक जटिल दृष्टिकोणों की कोशिश की, निकटतम पड़ोसी ग्राफ में चक्रों का पता लगाने के आधार पर, लेकिन मुझे जो मिला वह बहुत नाजुक था या कम्प्यूटेशनल रूप से महंगा था।

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


एक सरल प्रश्न: आप दो आयामी डेटा में लाइन सेगमेंट का पता लगाने के बारे में कैसे जानेंगे?
charles.y.zheng

".. उदाहरणों में लोगों की तरह"? क्या उदाहरण हैं? क्या आप एक लिंक जोड़ सकते हैं?
onestop

पर्याप्त परिवर्तन स्पष्ट विकल्प है। यह अच्छी तरह से काम करना चाहिए।
whuber

जिस छवि का मैं उल्लेख कर रहा था, उसे जोड़ने के लिए मुझे इस बीच पर्याप्त प्रतिष्ठा मिली।
cjauvin

3
यह एक क्लस्टरिंग समस्या नहीं है। आंकड़ों में, "क्लस्टर" में ऑब्जेक्ट्स के सेट होते हैं, जो अन्य ऑब्जेक्ट्स की तुलना में एक दूसरे के करीब होते हैं। क्लोजनेस सर्कुलरिटी को कैप्चर नहीं करता है: इसीलिए न तो K- का मतलब है और न ही कोई अन्य क्लस्टरिंग एल्गोरिदम काम करेगा। इस कारण से, यह सवाल संभवतः छवि प्रसंस्करण या जीआईएस साइटों में बेहतर बैठता है, जहां आपको इस मुद्दे पर कुछ विशेषज्ञ मिल सकते हैं।
whuber

जवाबों:


9

एक सामान्यीकृत पर्याप्त परिवर्तन वही है जो आप चाहते हैं। कठिनाई इसे कुशलता से करना है, क्योंकि 3 डी में सर्कल के स्थान में छह आयाम हैं (केंद्र के लिए तीन, विमान को उन्मुख करने के लिए दो, त्रिज्या के लिए एक)। यह एक सीधी गणना को नियंत्रित करता है।

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

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


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

3
इस उत्तरवर्ती विचार को RANSAC कहा जाता है और संभवतः इसका उपयोग स्वयं द्वारा किया जा सकता है, खासकर यदि प्रति छवि मंडलियों की संख्या छोटी है।
शेल्डनकॉपर

रोशन विचारों के लिए धन्यवाद! मल्टी-स्टेप हफ़ ट्रांसफ़ॉर्म मुझे सबसे शक्तिशाली और सामान्य समाधान लगता है, लेकिन RANSAC वास्तव में लागू करना आसान लगता है, और मेरे संदर्भ में बस पर्याप्त हो सकता है। एक समस्या मैंने तेजी से इसके साथ देखी हालांकि यह वह मामला है जहां आपके पास असंतुलित आकारों के पैटर्न हैं, जो स्पष्ट रूप से बड़ी वस्तुओं की ओर नमूने को बायपास करता है। इस समस्या के बारे में कोई विचार?
cjauvin

एक बार जब आप बड़े सर्कल का पता लगा लेते हैं, तो नमूने से संबंधित सभी बिंदुओं को हटा दें।
शेल्डनकोपर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.