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

मैंने माना कि रंग चार्ट स्क्रीन के काफी बड़े हिस्से को लेता है, इसलिए यह संभवतः छवि का सबसे बड़ा निरंतर क्षेत्र है। कई ब्लैक एंड व्हाइट लेबलिंग फ़ंक्शन मौजूद हैं (MATLABs bwlabel, IPPs LabelMarkers, OpenCV में एक्सटर्नल लाइब्रेरी cvblob है) जो प्रत्येक अलग-अलग जुड़े क्षेत्र को अपना खुद का इंडेक्स देगा। लेबलिंग के बाद आप हिस्टोग्राम का उपयोग करके जुड़े घटकों के क्षेत्रों की गणना कर सकते हैं और फिर सबसे बड़े क्षेत्र के साथ घटक का चयन कर सकते हैं।

आमतौर पर घटकों को भरने के लिए यह अच्छा विचार है कि घटक में छेद नहीं हैं, इससे किनारे पिक्सेल की संख्या कम हो जाती है।

अब हम एज फाइंडिंग ऑपरेटर्स का उपयोग कर सकते हैं (मैंने ग्रेडिएंट बेस्ड विधि का उपयोग किया है, लेकिन बोर्डर से संबंधित पिक्सल प्राप्त करने के लिए आप सफेद पिक्सेल का अनुसरण करके किनारे का पता लगा सकते हैं जो कि काले पिक्सेल से जुड़े हैं)।

जैसा कि हम जिस वस्तु में रुचि रखते हैं वह आयत है, मैंने मजबूत रेखा फिटिंग (आरएएनएसएसी) का उपयोग करके किनारे के पिक्सल को चार लाइनें फिट कीं। नई लाइन खोजने के बाद, मैंने उन सभी बिंदुओं को हटा दिया, जो मिली हुई रेखा के करीब थे, इसने बाद के ऑपरेशन को ऑब्जेक्ट के अन्य किनारों को वापस करने के लिए बाध्य किया। अंत में जब सभी किनारों को मिला, मैंने लाइनों के सेट के बीच सभी संभावित चौराहों की गणना की। परिणामी बिंदुओं के सेट से मैंने छवि के बाहर सभी बिंदुओं को हटा दिया।
अब हमारे पास रंग चार्ट के कोने हैं और जैसा कि हम चार्ट के आयामों को जानते हैं, हम परिवर्तन मैट्रिक्स (होमोग्राफी, दो विमानों के बीच प्रक्षेपण) की गणना कर सकते हैं । मिलीमीटर निर्देशांक के बीच को हल करने के लिए प्रत्यक्ष रैखिक परिवर्तन (डीएलटी) का उपयोग करें और पिक्सेल निर्देशांक।HH
x=HX
इस परिवर्तन मैट्रिक्स का उपयोग तब मूल छवि को बदलने के लिए किया जा सकता है जैसे कि रंग चार्ट को सतह की सामान्य दिशा से सीधे imaged किया जाता है।

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