2012-02-16 24 views
22

मैं छवि प्रसंस्करण के लिए नया हूं और मैं दस्तावेज़ छवि में रेखाओं का पता लगाने पर काम कर रहा हूं। मैंने हफ़ लाइन ट्रांसफॉर्म के सिद्धांत को पढ़ा लेकिन मैं नहीं देख सकता कि मुझे ट्यूटोरियल में ओपनसीवी में उस समारोह को कॉल करने से पहले कैनी का उपयोग क्यों करना चाहिए। इस मामले में किनारों को खोजने का क्या मतलब है? तथ्य यह है कि अगर मैं हौलीलाइन() से पहले कैनी या थ्रेसहोल्ड का उपयोग नहीं करता तो परिणाम बहुत गन्दा हो जाएंगे। मुझे आशा है कि कोई मेरे लिए कारण बताएगा।HoughLines (opencv) से पहले कैनी का उपयोग क्या है?

ट्यूटोरियल के 2 मैं पढ़ा है:

  1. Imgproc Feature Detection
  2. Hough Line Transform
+0

कृपया एक न्यूनतम कार्य उदाहरण प्रदान करें और "कई ट्यूटोरियल" में से किसी एक को लिंक करें जिसका आप उल्लेख करते हैं। – Unapiedra

+1

लिंक के लिए धन्यवाद! – Unapiedra

उत्तर

9

लघु उत्तर

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

लांग उत्तर

Hough Transform की सीमाएं विकिपीडिया के बारे में अधिक विस्तार से वर्णन किया गया है।

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

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

किनारों को हफ़ ट्रांसफॉर्म चलाने से पहले किनारों को अच्छी तरह से पता होना चाहिए अन्यथा इसकी दक्षता आगे बढ़ती है। इसके अलावा शोर छवियां हाथ से पहले शोर हटा दिए जाने तक हफ़ ट्रांसफॉर्म के साथ अच्छी तरह से काम नहीं करती हैं।

+0

मैं देखता हूं। मुझे मेरी बुरी अंग्रेजी के बारे में खेद है जो दस्तावेजों को पढ़ने में मेरी मदद नहीं कर सका। आपके बहुत समझदार उत्तर के लिए धन्यवाद। – Risa

9

सबसे पहले, लाइनों का पता लगाने के आप एक boolean मैट्रिक्स छवि (या बाइनरी) पर काम करने की जरूरत , मेरा मतलब है: रंग काला या सफेद है, कोई ग्रेस्केल नहीं है।

HoughLines() उचित रूप से काम करने की आवश्यकता इस तरह की छवि इनपुट के रूप में है। रंग छवि मैट्रिक्स को बूलियन एक में कनवर्ट करने के लिए Canny या Treshold का उपयोग करने का यही कारण है।

Hough परिवर्तन

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

+0

मुझे अब मिल गया है। बहुत बहुत धन्यवाद:> – Risa

-2
सभी

, बाइनरी डेटा प्रसंस्करण के बारे में है

जटिल डेटा -> (एक बाइनरी डेटा, ख बाइनरी डेटा, बाइनरी डेटा ग, ..) (का उपयोग कर चालाक(), सोबेल(), आदि)

एक बाइनरी डेटा -> function1() (houghlines का उपयोग कर())

बाइनरी डेटा ख -> function2()

बाइनरी डेटा ग -> function3() ..

एक बाइनरी डेटा -X -> functi On2() ..

जटिल डेटा -X-> function1() ..

HTH

1

सैद्धांतिक रूप से, आप सही हैं। काम करने के लिए हफ़ लाइन एल्गोरिदम के लिए किनारों को ढूंढना बिल्कुल जरूरी नहीं है।

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

हफ़ भी इसकी रेखाओं या बिंदुओं को भार नहीं देता है। हफ़ में, एक छवि द्विआधारी है - या तो 1 या 0, अंक या अंक से बना है। ग्रेस्केल की कोई ज़रूरत नहीं है, और कैनी आसानी से बाइनरी छवियां लौटाती है।

इस प्रकार कैनी हमेशा हफ़ का हिस्सा है।

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

  • कोई संबंधित समस्या नहीं^_^