मेरे पास बाइट्स (बिटमैप-जैसे मैट्रिक्स) के मैट्रिक्स के माध्यम से एक चित्र है । उदाहरण चित्र पर दिखाया गया है Picture 1
।
लक्ष्य कुछ दिए गए चित्रा का सबसे अच्छा रोटेशन कोण खोजने के लिए है । जब चित्रा को सबसे अच्छे कोण से घुमाया जाता है, तो आयत जो X और Y अक्षों के समानांतर होती है और चित्र का सबसे छोटा क्षेत्र होता है।
चित्रों को अंकित करने वाले आयतों को चित्रों पर हल्के-भूरे रंग के रूप में दिखाया गया है। में Picture 2
, आप देख सकते हैं कि चित्र का आदर्श रोटेशन लगभग 30 डिग्री दक्षिणावर्त है।
अब, मैं एल्गोरिथ्म जानता हूं कि इस कोण को कैसे खोजना है, लेकिन यह मुझे लगता है कि बहुत अक्षम है। यह इस प्रकार चलता है:
- 0 से 45 तक कोणों के माध्यम से लूप।
- वर्तमान कोण के लिए, प्रत्येक आंकड़ा बिंदु के लिए नए, घुमाए गए, स्थान की गणना करें
- आयत की सीमा ज्ञात करें जिसमें आकृति (न्यूनतम और अधिकतम x, y) है और इसे पंजीकृत करें यदि अब तक का सबसे अच्छा मैच है
- अगला कोण
यह एक प्रकार का जानवर-बल विधि है और छोटे आंकड़ों के लिए अच्छी तरह से और उचित रूप से तेजी से काम करता है। हालांकि, मुझे उन आंकड़ों के साथ काम करने की आवश्यकता है जिनमें 10 मिलियन तक अंक हैं, और मेरा एल्गोरिथ्म धीमा हो जाता है।
इस समस्या के लिए अच्छा एल्गोरिदम क्या होगा?