2010-11-30 20 views
6

क्या किसी को ओपनसीवी के कार्यान्वयन में संभाव्य हफ़ ट्रांसफॉर्म के लिए विशेष एल्गोरिदम पता है? मेरा मतलब है, क्या एल्गोरिदम के बारे में एक संदर्भ पत्र या दस्तावेज है?ओपनसीवी में संभाव्यता हफ़ ट्रांसफॉर्म का विशेष कार्यान्वयन क्या है?

विचार प्राप्त करने के लिए, मैं निश्चित रूप से स्रोत कोड देख सकता हूं, लेकिन मुझे आश्चर्य है कि इसके बारे में कोई दस्तावेज है या नहीं। - यह स्रोत कोड की टिप्पणियों में नहीं है (ओपनसीवी 1.0)।

धन्यवाद!

-Jin

उत्तर

0

यहाँ यादृच्छिक Hough बारे में एक लेख रूपांतरण जो मैं आप के लिए संचायक को भरने के न "संभाव्य Hough को बदलने" http://en.wikipedia.org/wiki/Randomized_Hough_Transform

मूल रूप से OpenCV में प्रयोग किया जाता के रूप में ही विश्वास करते हैं, है सभी बिंदुओं लेकिन हफ़ ट्रांसफॉर्म को भरने के लिए एक निश्चित मानदंड के साथ बिंदुओं का एक सेट चुनें।

परिणाम यह है कि कभी-कभी, यदि वास्तविक शुरुआत नहीं होती है तो आप वास्तविक रेखा को याद कर सकते हैं। मुझे लगता है कि यदि आप कुछ हद तक रैखिक संरचनाएं हैं तो आप इसका उपयोग करना चाहेंगे ताकि अधिकांश बिंदु अनावश्यक हो जाएं। संदर्भ संख्या 2: एल। जू, ई। ओजा, और पी। कुल्तान, "एक नया वक्र पहचान विधि: यादृच्छिक हफ़ ट्रांसफॉर्म (आरएचटी)", पैटर्न रिकोग। लेट्ट। 11, 1 99 0, 331-338।

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

+0

बहुत उपयोगी टिप्पणियां! धन्यवाद! मैंने यादृच्छिक दृष्टिकोण की रेखाओं को नहीं देखा, बल्कि, मैंने सोचा कि यह "संभाव्य हफ ट्रांसफॉर्म" या ऐसा कुछ होना चाहिए। – galactica

+3

यादृच्छिक हफ़ ट्रांसफॉर्म प्रोग्रेसिव प्रोबैबिस्टिक हफ़ ट्रांसफॉर्म से अलग है। पूर्व यादृच्छिक बिंदुओं के tuples लेता है जो हौ अंतरिक्ष में एकल कोशिकाओं में नक्शा। यह यह क्रमशः करता है, और जैसे ही एक संचयक सेल एक दहलीज पार करता है, लाइनों/विमानों का पता लगाया जाता है। उत्तरार्द्ध में सेल के लिए वोट देने वाले वोटों की कुल संख्या के वोटों के प्रतिशत पर विचार करके शोर से छुटकारा पाने के लिए एक फ़िल्टरिंग तंत्र है। देखें: "पॉर क्लाउड में प्लेन डिटेक्शन के लिए 3 डी हफ़ ट्रांसफॉर्म: बोरमान एट अल द्वारा एक समीक्षा और एक नया संचयक डिजाइन"। (2011) –

+1

समझ में नहीं आता कि यह स्वीकार्य उत्तर क्यों है? ओपनसीवी कार्यान्वयन के साथ ऐसा करने के लिए कुछ भी कम है, जो ऊपर वर्णित है, यादृच्छिक हौफ ट्रांसफॉर्म की बजाय प्रोग्रेसिव प्रोबैबिस्टिक हफ़ ट्रांसफॉर्म लागू करता है। –

6

ओपनसीवी दस्तावेज बताता है कि अलगोथम जे माटास एट अल द्वारा "प्रगतिशील संभाव्यता आटा परिवर्तन का उपयोग करके लाइनों का मजबूत पता लगाने" पर आधारित है। विकिपीडिया पर वर्णित आरएचटी से यह काफी अलग है।

कागज इंटरनेट पर आसानी से उपलब्ध हो प्रतीत नहीं होता है, लेकिन आप धारा 6 में Elsevier

से
1

लेख Line Detection by Hough transformation यह purcahse कर सकते हैं उपयोगी हो सकता है।

+0

इस पेपर के लिए धन्यवाद। मैंने इसे बहुत उपयोगी पाया। –

2

ओपनसीवी 2.4.4 में HoughLinesProbabilistic के लिए स्रोत कोड में इनलाइन टिप्पणियां शामिल हैं जो शामिल विभिन्न चरणों की व्याख्या करती हैं।

https://github.com/Itseez/opencv/blob/master/modules/imgproc/src/hough.cpp

+0

जब आप गिटहब से लिंक करते हैं तो कृपया परमालिंक का उपयोग करें। उस फ़ाइल को बदलने के बाद से वह फ़ाइल बदल गई है और इस प्रकार लाइन नंबर अब अप्रासंगिक है। गिटहब इसे आसान नहीं बनाता है; आप परमालिंक प्राप्त करने के लिए फ़ाइल दृश्य पर "y" दबा सकते हैं। – bfontaine

1

यहाँ Matas et.al. द्वारा एक काफी संक्षिप्त कागज है कि दृष्टिकोण का वर्णन करता है, और के रूप में दूसरों उल्लेख किया है, यह वास्तव में काफी रूपांतरण यादृच्छिक Hough से अलग है:।

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.40.2186&rep=rep1&type=pdf

(कब तक इस लिंक हालांकि वैध होने जा रहा है यह citeseer से/पर है के लिए सुनिश्चित नहीं हैं, यह कल से गायब होने की उम्मीद नहीं करेगा, लेकिन कौन जानता है ...)

मैंने hough.cpp में कार्यान्वयन icvHoughLinesProbabilistic() को तुरंत देखा था, क्योंकि मैं इसका उपयोग करूँगा :-) यह काफी सरल लगता है , वैसे भी, मेरी प्राथमिक रुचि यह थी कि क्या यह अंत में कुछ कम वर्ग लाइन-फिटिंग करता है - यह नहीं है, जो ठीक है। इसका मतलब यह है कि, यदि यह सटीक रेखा-सेगमेंट प्राप्त करना चाहता है, तो कोई भी अंतिम बिंदु-सेट से संबंधित बिंदुओं का चयन करने के लिए ओपनसीवी द्वारा लौटाए गए स्टार्ट/एंड-पॉइंट और अंतर्निहित लाइन-पैरामीटर का उपयोग करना चाह सकता है।मैं पहली जगह में काफी रूढ़िवादी दूरी-थ्रेसहोल्ड का उपयोग कर रहा हूं, और इन बिंदुओं पर एक छोटी दहलीज के साथ RANSAC/MSAC चलाता हूं। अंत में, सामान्य रूप से सामान्य-सेट के लिए एक पंक्ति फिट करें, उदा। OpenCV की cvFitLine() का उपयोग करना।

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