2012-03-06 13 views
7

कोई टेक्स्ट छवि पर Hough transform को कैसे कार्यान्वित करता है? मैं छद्म कोड की तलाश में हूं (अंततः यह जावा में होगा)।हाफ ट्रांसफॉर्म को कैसे कार्यान्वित करें?

एक छवि को देखते हुए, एक लाइन y = mx + b के लिए समीकरण का निर्धारण:

यहाँ कुछ पृष्ठभूमि जानकारी है। आम तौर पर हफ़ ट्रांसफॉर्म को ध्रुवीय समन्वय में दर्शाया जाता है जैसे Rho = y*sin(theta) + x*cos(theta)। (मुझे सच में यकीन नहीं है कि X और Y मान छवि के अनुरूप हैं)।

हम केवल Rho और theta मूल्यों में रुचि रखते हैं और उन्हें प्लॉट करते हैं। जमाकर्ताओं में कई बिंदुओं वाले स्थान (मुझे कुछ कार्यान्वयन पता है, निष्पादन नहीं) को एक रेखा माना जाता है।

जिस मुद्दे को मैं समझ नहीं पा रहा हूं वह है कि rho और theta को कैसे खोजें, जिससे आप संचयक को अपडेट करेंगे।

+0

मुझे बताएं कि इस सवाल का जवाब उपयोगी था चलो हो सकता है! ;) – Matteo

उत्तर

5

Hough के सबसे सामान्य स्थिति को बदलने रैखिक सीधी रेखाएं पता लगाने के लिए बदलना है। छवि अंतरिक्ष में, सीधी रेखा y = mx + b के रूप में वर्णित किया जा सकता है और रेखांकन छवि अंक (एक्स, वाई)

तो यह आपको बताता है की प्रत्येक जोड़ी क्या x और y मिलान रखने की साजिश रची जा सकती है छवि में वापस करने के लिए।

में Hough को बदलने, एक मुख्य विचार विशेषताओं छवि अंक (x1, y1), (x2, y2), ... के रूप में नहीं सीधी रेखा की , लेकिन पर विचार करने के बजाय, संदर्भ में है इसके पैरामीटर, जैसे ढलान पैरामीटर एम और अवरोध पैरामीटर बी।

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

पैरामीटर rho रेखा और उत्पत्ति के बीच की दूरी का प्रतिनिधित्व करता है, जबकि थेटा उत्पत्ति से वेक्टर का कोण निकटतम बिंदु तक है।

यह आपको बताता है क्या rho और theta अनुरूप करने के लिए: वे ढलान और लाइन आप अपनी छवि में वर्णन करने के लिए कोशिश कर रहे हैं के अवरोधन के ध्रुवीय निर्देशांक में प्रतिनिधित्व कर रहे हैं।


SourceForge पर आप को बदलने hough के C++ कार्यान्वयन पा सकते हैं।

वर्णन है जिसमें से आप कोड जो मैं पिछले लिंक में बताया व्याख्या करने के लिए सक्षम होना चाहिए हो सकता है निम्नलिखित:

Hough बदलने एल्गोरिथ्म एक सरणी का उपयोग करता है, एक संचायक कहा जाता है, करने का पता लगाने के एक लाइन वाई = एमएक्स + बी का अस्तित्व।

उदाहरण के लिए, रैखिक हफ़ ट्रांसफॉर्म समस्या में दो अज्ञात पैरामीटर हैं: एम और बी।

प्रत्येक पिक्सेल और उसके पड़ोस के लिए, हफ़ ट्रांसफॉर्म एल्गोरिदम निर्धारित करता है कि उस पिक्सेल पर किनारे के पर्याप्त सबूत हैं या नहीं। यदि तो, यह उस पंक्ति के पैरामीटर की गणना करेगा, और फिर संचयक के बिन को देखें, जिसमें पैरामीटर आते हैं, और उस बिन के मान को बढ़ाएं।

उच्चतम मूल्यों के साथ डिब्बे खोज कर, आम तौर पर संचायक अंतरिक्ष में स्थानीय मॅक्सिमा की तलाश द्वारा, सबसे अधिक संभावना लाइनों निकाले