मेरे पास ध्रुवीय ग्रिड पर एक छवि है। इस छवि को एक कार्टेशियन ग्रिड में परिवर्तित किया जाना चाहिए, लेकिन मुझे पता है कि केवल एल्गोरिदम वास्तव में धीमा है। अब मैं कार्टेसियन ग्रिड का उपयोग करता हूं, प्रत्येक बिंदु के लिए मुझे आर और थेटा मान मिलते हैं, और फिर मैं दो वैक्टरों को देखता हूं:ध्रुवीय के लिए फास्ट एल्गोरिदम -> कार्टेशियन रूपांतरण
मिनट {(th_vec - theta)^2 + (रेंज - आर)^2}
यह बाहरी नेस्टेड फॉर-लूप के अंदर एक नेस्टेड फॉर-लूप देता है, इसलिए मेरे पास ओ (एन^4) की जटिलता है। एक 512x512 छवि पूर्ण करने के लिए पूरे मिनट का उपयोग करती है। बेशक, इस तरह की जटिलता का उपयोग नहीं किया जा सकता है, इसलिए मुझे आश्चर्य है कि अगर कोई ऐसा करने के लिए किसी भी तेजी से एल्गोरिदम के बारे में जानता है?
मेरे पास छवि है, और दो वैक्टर हैं। छवि का एक्स-अक्ष कोण है, जबकि छवि का वाई-अक्ष केंद्र से लंबाई है। कोण 0-2pi से हमेशा होता है, और सीमा 0 से r_max तक जाती है।
अग्रिम धन्यवाद।
संपादित करें: सीमा 0 से r_max तक जाती है, नहीं -r_max से r_max जैसा कि यह पहले खड़ा था। मैं देखता हूं कि कुछ गलतफहमी हैं। मैंने सामान्य, व्यस्त, रूपांतरण का उपयोग किया है;
r=sqrt(x^2 + y^2);
theta=atan2(y,x);
समस्या मैं पहली बार, एक्स और एक्स के लिए y मान 'और वाई' मान परिवर्तित करने के लिए के बाद से ग्रिड जिसके परिणामस्वरूप छवि में r_max को -r_max से है कि है, लेकिन डेटा में पिक्सेल में। तो मेरे पास 512x512 छवि है, लेकिन r_max 3.512 की तरह कुछ हो सकता है। इसलिए मुझे प्रत्येक पिक्सेल मान को ग्रिड मान में परिवर्तित करना है, फिर आर और थेटा मान खोजें। जब मुझे आर और थेटा मान मिलते हैं तो मुझे दो छवियों, रेंज और th_vec को चलाने के लिए, मूल छवि में पिक्सेल खोजने के लिए,
मिनट {(रेंज - आर)^2 + (th_vec - theta)^2}
यह मैं हूँ, O (n^4) की एक जटिलता देता है के बाद से th_vec और सीमा वैक्टर छवि के रूप में एक ही आकार के होते हैं। तो अगर मेरे पास 512x512 तत्वों का स्क्वायर मैट्रिक्स है, तो मुझे 68 6819196 636 तत्वों को चलाने की ज़रूरत है, जो कि धीमा है। तो मैं सोच रहा हूं कि एक तेज एल्गोरिदम है या नहीं? मैं इनपुट डेटा को बदल सकते हैं नहीं है, इसलिए जहाँ तक मुझे पता है, यह यह करने के लिए यदि आप ट्राईऐन्ग्युलेशंस और सामान के साथ शुरू नहीं करते हैं एक ही रास्ता है, लेकिन इस स्मृति के समय में महंगा है।
इसके लिए क्या है? इसके अलावा, आपके पास 0 से pi या 0 से r_max तक की कोण क्यों नहीं है? 2 * पीआई एक पूर्ण सर्कल देता है, तो आपको नकारात्मक दूरी की आवश्यकता क्यों होगी? –
क्या आपका ध्रुवीय ग्रिड ध्रुवीय निर्देशांक के संबंध में समान रूप से विभाजित है? –
यदि आपको अपने एक्स, वाई से कुछ फ़्लोटिंग पॉइंट मान के रूप में r_0 और th_0 मिलते हैं तो आपको केवल अपनी ध्रुवीय छवि में चार जोड़े (आर, वें) को देखना होगा, यानी चार निकटतम पड़ोसियों (r_0, th_0), ताकि मंजिल के चार संयोजन (आरएफए), छत (आरएफए) और मंजिल (th_0), छत (th_0) जहां मंजिल() और छत() आपके ध्रुवीय ग्रिड के लिए गोलाकार कुछ उत्पन्न करते हैं। –