धीरे-धीरे आधारित परिवर्तन को कैसे लागू किया जाए


9

मैं एज डिटेक्शन के लिए ह्यूफ ट्रांसफॉर्म का उपयोग करने की कोशिश कर रहा हूं, और आधार के रूप में ढाल छवियों का उपयोग करना चाहूंगा।

मैं अब तक क्या किया, छवि को देखते हुए Iआकार के [M,N]और उसके आंशिक डेरिवेटिव gx, gy, के रूप में प्रत्येक पिक्सेल में ढाल कोण की गणना करने के लिए है thetas = atan(gy(x,y) ./ gx। इसी तरह मैं ग्रेडिएंट परिमाण की गणना करता हूं magnitudes = sqrt(gx.^2+gy.^2)

Hough ट्रांसफ़ॉर्म बनाने के लिए, मैं निम्नलिखित MATLAB कोड का उपयोग करता हूं:

max_rho = ceil(sqrt(M^2 + N^2));
hough = zeros(2*max_rho, 101);
for x=1:M
    for y=1:N
        theta = thetas(x,y);
        rho = x*cos(theta) + y*sin(theta);

        rho_idx = round(rho)+max_rho;
        theta_idx = floor((theta + pi/2) / pi * 100) + 1;
        hough(rho_idx, theta_idx) = hough(rho_idx, theta_idx) + magnitudes(x,y);
    end
end

परिणामी हूप रूपांतर देखने योग्य लगता है (देखें http://i.stack.imgur.com/hC9mP.png ), लेकिन जब मैं मूल छवि में किनारे के मापदंडों के रूप में इसकी मैक्सिमा का उपयोग करने का प्रयास करता हूं, तो परिणाम अधिक या कम यादृच्छिक लगते हैं। क्या मैंने पर्याप्त परिवर्तन के निर्माण में कुछ गलत किया है?

अद्यतन : मेरे पास अपने कोड में एक बेवकूफ गलती rhoथी : के x*cos(theta)+y*cos(theta)बजाय के रूप में गणना की गई थी x*cos(theta)+y*sin(theta)। यही है, मैं एक कोसाइन और एक साइन के बजाय दो कोसाइन का उपयोग कर रहा था। मैंने ऊपर कोड को संपादित किया है और नई परिणामी छवि नीचे है। इसने हालांकि ज्यादा बेहतर किनारों को नहीं दिया।

@endolith: बढ़त प्लॉट करने के लिए एक अधिक से अधिक मूल्य दिया, houghपर मैट्रिक्स rho_idx, theta_idx, मैं करने के लिए सूचकांक का अनुवाद rho,thetaमान:

theta = (theta_idx -1) / 100 * pi - pi / 2;
rho = rho_idx - max_rho;

अंत में मैं किनारे की साजिश के रूप में y= (rho - x*cos(theta)) / sin(theta)

नया परिणाम


"जब मैं मूल छवि में किनारे के मापदंडों के रूप में इसकी मैक्सिमा का उपयोग करने की कोशिश करता हूं" तो आप यह कैसे कर रहे हैं?
एंडोलिथ

? @Jonas कारण Vesterheden बस सोच रहा है कि यह एक समय वी.एस. डॉपलर आवृत्ति छवि ... है
स्पेसी

@ मोहम्मद: ऐसा नहीं है कि मुझे पता है। मूल छवि कुछ सर्किट बोर्ड की है। "वी.एस." से आपका क्या तात्पर्य है?
जोनास ड्यू विस्टेहेडेन

@JonasDueVesterheden 'VS' का मतलब सिर्फ 'बनाम' है। (समय बनाम डॉपलर आवृत्ति ’) :-)
स्पेसी

आप इसे करने के लिए गैर अधिकतम दमन लागू करने से पहले अपने hough नक्शे को चिकना करना चाहिए।

जवाबों:


2

मैं आपके प्रश्न से थोड़ा भ्रमित हूं। पंक्तियों का पता लगाने के लिए कठोर रूपांतर का उपयोग किया जाता है, किनारों का नहीं।

यदि आप चाहते हैं कि सभी एक किनारे का नक्शा है, तो आपको बस ढाल परिमाण को कम करना चाहिए, या कैनी किनारे डिटेक्टर जैसे कुछ और फैंसी का उपयोग करना चाहिए।

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

आपके कार्यान्वयन के रूप में, मुझे लगता है कि समस्या यह है कि आपके ह्यू मैट्रिक्स में डिब्बे बहुत छोटे हैं। आरएच आयाम में अनिवार्य रूप से बिन आकार 1 है, और थीटा आयाम में बिन आकार 2 डिग्री से कम है। इसका मतलब है कि ढाल वाली झुकावों को एक पंक्ति बनाने के लिए बहुत सटीक रूप से फिट होना चाहिए, जो कि शायद ही कभी अभ्यास में होता है। यदि आप rho_idx और theta_idx को कैश करते हैं ताकि डिब्बे बड़े हों, तो यह आपके लाइन डिटेक्टर को त्रुटियों के प्रति अधिक सहिष्णु बना देगा, और आपको बेहतर लाइनें मिल सकती हैं।


1

मुझे पता नहीं है कि क्या यह एक मुद्दा है, लेकिन एटैन () केवल आपको क्वांटंट अस्पष्टता के कारण -90 से +90 डिग्री तक कोण देता है। पूर्ण ढाल कोण (-180 से 180 तक) प्राप्त करने के लिए आपको atan2 () का उपयोग करने की आवश्यकता है।


सलाह के लिये धन्यवाद! जैसा कि मैं इसे समझता हूं, यह कोण -90 से +90 डिग्री तक का उपयोग करने के लिए पर्याप्त होना चाहिए, क्योंकि किनारों की "दिशाएं" मायने नहीं रखती हैं। मैंने उपयोग करने की कोशिश की atan2, लेकिन यह समस्याओं को ठीक करने के लिए प्रतीत नहीं हुआ।
जोनास ड्यू विस्टरहेडेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.