ग्रिड जैसी संरचना का पता लगाने के लिए Hough के विकल्प


16

मेरी एक छवि है जो कई 'कोणों' से बनी है, जो एक ग्रिड आकृति बनाती है:

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

कुछ खोज के बाद, Hough एक अच्छी फिट की तरह लग रहा था, क्योंकि यह लाइनों में ब्रेक से परेशान नहीं है। हालाँकि, मुझे जो समस्या है वह यह है कि मेरी रेखाएँ 'मोटी' हैं, और किसी भी किनारे का पता लगाने के लिए जो मैं चलाती हूँ (इस मामले में कैनी), लाइन के किनारों को चुनती हूँ, और बीच में नहीं:

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

इसका मतलब यह है कि मेरी ट्रांसफ़ॉर्म लाइनों के 'पक्षों' में से एक (या दोनों) को बाहर निकालने के लिए हफ़ ट्रांसफ़ॉर्म समाप्त होता है, न कि बीच का।

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

यह देखते हुए कि मुझे पता है कि मैं क्या देख रहा हूं (यह ग्रिड जैसी आकृति, हमेशा लगभग एक ही अभिविन्यास में), क्या मुझे केंद्र लाइनों को देने के लिए 'एज डिटेक्शन' भाग करने का एक बेहतर तरीका है, या मुझे दिखना चाहिए बिलकुल अलग तरीके से?


संदर्भ के लिए, इस ग्रिड को त्साई कैमरा अंशांकन करने के लिए नाममात्र ग्रिड से तुलना की जाएगी।
बेंजोल

"एज डिटेक्शन I रन, लाइन के किनारों को उठाता है" हां, क्योंकि एज डिटेक्शन किनारों को लकीरें में बदल देता है, और आपकी छवि पहले से ही लकीरें है। एक किनारा प्रकाश और अंधेरे के बीच की सीमा है।
एंडोलिथ

जवाबों:


10

Hough Transform वास्तव में इस मामले में ग्रिड को चुनने में मदद करेगा। लाइनों को "पतला" करने के लिए, आप कंकाल के संचालन पर विचार करना चाह सकते हैं

यह इस तरह की एक छवि का उत्पादन करेगा: कंकाल उत्पादन

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

यदि आप MATLAB का उपयोग कर रहे हैं, तो आप इस सहायता पृष्ठ को देखना चाहेंगे


धन्यवाद! इससे बहुत मदद मिलती है। अभी तक मेरा MATLAB लाइसेंस नहीं मिला है, लेकिन मैंने इसे AForge के SimpleSkeletonization का उपयोग करके आज़माया, और यह बेहतर काम करता है ... हालांकि अभी भी सही नहीं है। मैं बाद में इस विषय पर फिर से विचार करूंगा जब मुझे इस पर परीक्षण करने के लिए कुछ वास्तविक आंकड़े मिलेंगे।
बेंजोल

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

हां, जैसा कि मैंने कहा, जब मेरे पास खेलने के लिए वास्तविक डेटा होगा, तो यह सिस्टम को ठीक करने के लिए मेरे समय के लायक होगा। सामान्य रूप से Hough के बारे में मेरे पास एक बड़ा संदेह यह है कि थीटा का विवेकाधिकार हमें उप-पिक्सेल परिशुद्धता के खिलाफ काम करने जा रहा है जिसकी हमें आवश्यकता है। (वह, और मुझे पूरी तरह से यकीन नहीं है कि लेंस विपथन का मतलब यह नहीं होगा कि लाइनों को घुमावदार किया जा सकता है, कोई सीधा नहीं ...)
बेंजोल

11

होफ ट्रांसफॉर्म का एक विकल्प रेडॉन ट्रांसफॉर्म ( 1 , 2 ) होगा। एक ग्रिड जैसी संरचना का पता लगाने के लिए एक एल्गोरिथ्म का एक मोटा विवरण इस तरह दिख सकता है:

1. Perform Radon Transform from 0 to 180 degrees.
2. Find the two highest maxima in the angle bins.
3. For the two angles with maximal amplitude find the local maxima within the bin.
4. You can use the constraint that the maxima should have even spacing to deal with outliers.

संपादित करें :

यहाँ एक छोटा सा matlab स्निपेट है जिसका वर्णन चरण 1-3 है:

im = imread('grid.png');
[R, xp] = radon(im, 0:180);
imagesc(0:180, xp, R)

रैडॉन ट्रांसफ़ॉर्म का परिणाम

plot(max(R)) % the two maxima are at 65 & 117 degrees

सभी कोणों पर मैक्सिमा

plot(R(:, 65))

मैक्सिमा 65 डिग्री पर

plot(R(:,117))

मैक्सिमा 117 डिग्री पर

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


धन्यवाद, क्या आप मुझे कुछ शब्दों में बता सकते हैं कि हड ट्रांसफ़ॉर्म की तुलना में रेडॉन ट्रांसफॉर्म से आपको क्या फायदा होगा?
बेंजोल

@benjol, मैंने अपना उत्तर अपडेट किया।
बर्नर्नज़

बहुत अच्छा, बहुत बहुत धन्यवाद। एक बार जब मैं मुझे मतलूब तक पहुँच देता हूँ तो मैं इसे आज़माता हूँ!
बेंजोल

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