38

समझाओ मैं सिर्फ साहसी हूं और कंप्यूटर दृष्टि की ओर अपना पहला बच्चा कदम उठा रहा हूं। मैंने अपने आप में हफ़ ट्रांसफॉर्मेशन को लागू करने की कोशिश की लेकिन मुझे पूरी तस्वीर नहीं मिली। मैंने रिचर्ड डुडा और पीटर हार्ट द्वारा विकिपीडिया एंट्री और यहां तक ​​कि मूल "चित्रों में रेखाओं और वक्रों का पता लगाने के लिए आटा परिवर्तन का उपयोग" पढ़ा, लेकिन मदद नहीं की।हफ़ ट्रांसफॉर्मेशन

क्या कोई और अधिक दोस्ताना भाषा में मुझे समझा सकता है?

उत्तर

32

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

हफ़ ट्रांसफॉर्म में पहला कदम छवि को किनारों के एक सेट में कम करना है। कैनी एज-डिटेक्टर एक लगातार पसंद है। परिणामस्वरूप एज छवि हफ़ प्रक्रिया में इनपुट के रूप में कार्य करती है।

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

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

यह एन सबसे अक्सर मापदंडों के लिए देखने के लिए आम है - या सीमा मापदंडों ऐसी है कि तुलना में कुछ n अनदेखी कर रहे हैं छोटे गिना जाता है।

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

+0

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

+3

मतदान स्थान देखने के लिए एक शानदार जावास्क्रिप्ट टूल है [http://gmarty.github.io/hough-transform-js/](http://gmarty.github.io/hough-transform-js/) – user1311069

15

हफ़ ट्रांसफॉर्म एक संभावित रेखा (या एक सर्कल, या कई अन्य चीजों) का प्रतिनिधित्व करने वाले सबसे संभावित मूल्यों को खोजने का एक तरीका है।

आप हौ को इनपुट के रूप में एक रेखा की एक तस्वीर को बदल देते हैं। इस तस्वीर में दो प्रकार के पिक्सल होंगे: वे जो रेखा का हिस्सा हैं, और जो पृष्ठभूमि का हिस्सा हैं।

प्रत्येक पिक्सेल के लिए जो रेखा का हिस्सा है, पैरामीटर के सभी संभावित संयोजनों की गणना की जाती है। उदाहरण के लिए, यदि समन्वय (1, 100) पर पिक्सेल लाइन का हिस्सा है, तो वह उस रेखा का हिस्सा हो सकता है जहां ढाल (एम) = 0 और वाई-अवरोध (सी) = 100. यह भी हो सकता है एम = 1, सी = 99 का हिस्सा बनें; या एम = 2, सी = 98; या एम = 3, सी = 9 7; और इसी तरह। आप सभी संभावित संयोजनों को खोजने के लिए लाइन समीकरण y = mx + c को हल कर सकते हैं।

प्रत्येक पिक्सेल प्रत्येक पैरामीटर (एम और सी) को एक वोट देता है जो इसे समझा सकता है। तो आप कल्पना कर सकते हैं, अगर आपकी रेखा में 1000 पिक्सल हैं, तो एम और सी के सही संयोजन में 1000 वोट होंगे।

एम और सी का संयोजन जो सबसे अधिक वोट है, लाइन के पैरामीटर के रूप में वापस किया जाता है।

+0

बहुत उपयोगी, धन्यवाद। – Haoest

102

यहाँ एक बहुत ही बुनियादी, कैसे एक Hough एक छवि में लाइनों का पता लगाने के लिए काम करता है रूपांतरण के दृश्य व्याख्या दी गई है:

enter image description here

+0

आपके अद्भुत चित्रमय स्पष्टीकरण के लिए धन्यवाद! बहुत अच्छा! –

+1

महान उदाहरण! थोड़ी सी आवश्यकता हो सकती है, आपने किनारों के साथ ड्राइंग लाइनों का उल्लेख किया है और उन किनारों को बिंदु के रूप में दिखाया है कि यह ठीक है लेकिन असल में ये रेखाएं केवल किनारों के स्पर्शक हैं। – SIslam

+0

@mlai, क्या आपने यह छवि बनाई है? यदि ऐसा है तो मैं इसे अपने मास्टर्स थेसिस के लिए उपयोग कर सकता हूं, अगर आप मुझे यह नहीं दिखा सकते कि आपको यह कहां मिला, तो मुझे यह पसंद है?!? धन्यवाद –

1

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

(उदाहरण) लाइन पहचान के लिए आवेदन समान है। छवि में प्रत्येक बिंदु मूल बूंदों में से एक है; जब यह एक स्प्रिंकलर के रूप में कार्य करता है तो वह अपनी बूंदों को उन सभी रेखाओं को चिह्नित करता है जो उस बिंदु से गुजर सकते हैं। ऐसे स्थान जहां पूरी तरह से माध्यमिक बूंदों की भूमि एक रेखा के पैरामीटर का प्रतिनिधित्व करती है जो पूरी तरह से छवि बिंदुओं से गुज़रती है - वोला! रेखा का पता चला!

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