मैट्रिक्स के पीछे की इंजीनियरिंग
औसत उपयोगकर्ता के लिए, क्यूआर कोड काले और सफेद पिक्सेल का एक गन्दा वर्ग मात्र है। लेकिन इंजीनियरिंग के दृष्टिकोण से, डेंसो वेव का 1994 का आविष्कार ज्यामिति, सिग्नल प्रोसेसिंग और त्रुटि-सुधार गणित में एक मास्टरक्लास है।
मानक रैखिक बारकोड के विपरीत, जो केवल एक ही अक्ष के साथ संख्याओं की एक स्ट्रिंग का प्रतिनिधित्व करता है, एक क्यूआर कोड एक गतिशील, स्व-सुधारित समन्वय प्रणाली है। वे कैसे कार्य करते हैं, उनके संरचनात्मक मार्कर कैमरों को कैसे संरेखित करते हैं, और उन्नत गणित जो उन्हें भयानक परिस्थितियों में पढ़ने योग्य रखता है, इसके पीछे सटीक तकनीकी तर्क यहां दिया गया है।
1. अभिविन्यास की ज्यामिति: खोजक और संरेखण पैटर्न
क्यूआर कोड के सबसे पहचानने योग्य हिस्से कोनों में तीन बड़े नेस्टेड वर्ग हैं। इन्हें तकनीकी रूप से फाइंडर पैटर्न कहा जाता है।
\पाठ खोजक पैटर्न अनुपात (किसी भी कोण पर): [काला] [सफ़ेद] [काला] [सफ़ेद] [काला] 1:1:3:1:1 \
वास्तव में तीन खोजक पैटर्न क्यों हैं?
द्वि-आयामी समन्वय ज्यामिति में, एक समतल विमान के पैमाने, घूर्णन और अंतरिक्ष में तिरछापन को परिभाषित करने के लिए बिल्कुल तीन अलग-अलग बिंदुओं की आवश्यकता होती है:
- रोटेशन (कौन सा रास्ता ऊपर है): क्योंकि चौथे कोने (नीचे-दाएं) में कोई पैटर्न नहीं है, स्कैनर को तुरंत पता चल जाता है कि छवि उल्टी है या बग़ल में है और डेटा ग्रिड को डिजिटल रूप से घुमाता है।
- स्केल (दूरी): तीन बिंदुओं के बीच की भौतिक दूरी कैमरा सेंसर को बताती है कि कोड कितनी दूर है, जिससे सॉफ्टवेयर मिलान के लिए डिजिटल ग्रिड को स्केल कर सकता है।
- परिप्रेक्ष्य/तिरछा (कोण): यदि आप एक क्यूआर कोड को तीव्र पार्श्व कोण से स्कैन करते हैं, तो तीन बिंदु एक पूर्ण समकोण त्रिभुज के बजाय एक असमान त्रिभुज बनाते हैं। स्कैनर गणितीय रूप से "डेस्क्यू" करने के लिए विकृत कोणों का उपयोग करता है और डेटा पढ़ने से पहले छवि को समतल करता है।
1:1:3:1:1 स्कैनिंग अनुपात
खोजक पैटर्न एक नेस्टेड $7\times7$ मॉड्यूल वर्ग के रूप में निर्मित होते हैं। इससे कोई फर्क नहीं पड़ता कि लेजर या कैमरा सेंसर इन वर्गों के केंद्र में किस कोण से घूमता है, काले, सफेद और काले मॉड्यूल का अनुपात हमेशा गणितीय रूप से स्थिर होता है: 1 भाग काला, 1 भाग सफेद, 3 भाग काला, 1 भाग सफेद, 1 भाग काला।
क्योंकि यह विशिष्ट ज्यामितीय अनुपात लगभग कभी भी पाठ या ग्राफिक्स में स्वाभाविक रूप से नहीं होता है, कैमरा एक जटिल दृश्य पृष्ठभूमि से तीन कोनों को मिलीसेकंड में अलग कर सकता है।
छोटे आंतरिक वर्ग किस लिए हैं?
जैसे-जैसे क्यूआर कोड संस्करण आकार में बढ़ते हैं (संस्करण 2 से संस्करण 40 तक), वे छोटे, एकल नेस्टेड वर्गों को शामिल करते हैं जिन्हें संरेखण पैटर्न कहा जाता है।
जब एक क्यूआर कोड एक घुमावदार सतह (सोडा कैन की तरह) पर मुद्रित होता है या झुर्रीदार पेपर फ़्लायर पर भौतिक रूप से विकृत होता है, तो समग्र ग्रिड विकृत हो जाता है। संरेखण पैटर्न स्थानीयकृत एंकर के रूप में कार्य करते हैं। स्कैनर उनका उपयोग विकृत सतह पर समन्वय ग्रिड को गतिशील रूप से पुन: कैलिब्रेट करने के लिए करता है, यह सुनिश्चित करते हुए कि एक कोने में विकृति बाकी कोड की पठनीयता को बर्बाद नहीं करती है।
2. डेटा को कैसे एनकोड किया जाता है: बाइनरी को सिलिकॉन में मैप करना
इसके मूल में, एक क्यूआर कोड बाइनरी कोड का भौतिक अनुवाद है। कैमरे का छवि सेंसर प्रकाश-अवशोषित डार्क मॉड्यूल को बाइनरी 1 s के रूप में और प्रकाश-प्रतिबिंबित प्रकाश मॉड्यूल को बाइनरी 0 s के रूप में पंजीकृत करता है।
रेंडर करने से पहले, इनपुट डेटा (जैसे कि यूआरएल) को चार एन्कोडिंग मोड में से एक के माध्यम से संसाधित किया जाता है:
- संख्यात्मक: कच्ची संख्याओं के लिए सर्वोत्तम (3 अंकों को 10 बिट्स में मैप करता है)।
- अल्फ़ान्यूमेरिक: बड़े अक्षरों, संख्याओं और मूल प्रतीकों का समर्थन करता है (2 अक्षरों को 11 बिट्स में मैप करता है)।
- बाइट: मानक यूटीएफ-8 एन्कोडिंग (प्रत्येक वर्ण को उसके मानक 8-बिट बाइनरी प्रतिनिधित्व में परिवर्तित किया जाता है)।
- कांजी: डबल-बाइट जापानी अक्षरों के लिए अनुकूलित।
https://ez-qr-generator.com जैसे मानक URL के लिए, जनरेटर बाइट मोड का उपयोग करता है। स्ट्रिंग को 8-बिट बाइट्स के अनुक्रम में परिवर्तित किया जाता है, जिसे फिर नीचे-दाएं कोने से शुरू करके ग्रिड पर भौतिक रूप से मैप किया जाता है, संरचनात्मक पैटर्न को छोड़ते हुए ऊपर और नीचे की ओर ज़िगज़ैग किया जाता है।
3. रीड-सोलोमन त्रुटि सुधार: टूटे हुए डेटा का पुनर्निर्माण
क्यूआर कोड की परिभाषित विशेषता आंशिक रूप से फटे, गंदे या अस्पष्ट होने पर भी स्कैन करने की इसकी क्षमता है। यह विश्वसनीयता रीड-सोलोमन त्रुटि सुधार द्वारा संचालित होती है - ठीक उसी बहुपद-आधारित गणित का उपयोग गहरे अंतरिक्ष जांच (जैसे वोयाजर) से डेटा संचारित करने और स्क्रैच किए गए ऑडियो सीडी पर संगीत चालू रखने के लिए किया जाता है।
जब एक क्यूआर कोड उत्पन्न होता है, तो सिस्टम सिर्फ आपका यूआरएल नहीं लिखता है। यह आपके बाइनरी डेटा बाइट्स को एक जटिल गणितीय बहुपद समीकरण के गुणांक के रूप में मानता है। इन गुणांकों का उपयोग करके, जनरेटर अतिरिक्त, अनावश्यक "समता बाइट्स" की गणना करता है और उन्हें डेटा के अंत में जोड़ता है।
चयनित त्रुटि सुधार स्तर के आधार पर, ये समता बाइट्स ग्रिड के विभिन्न प्रतिशत पर कब्जा कर लेते हैं:
- स्तर एल (निम्न): खोए हुए डेटा का 7% तक पुनर्प्राप्त करता है।
- स्तर एम (मध्यम): खोए हुए डेटा का 15% तक पुनर्प्राप्त करता है।
- स्तर क्यू (चतुर्थक): खोए हुए डेटा का 25% तक पुनर्प्राप्त करता है।
- स्तर एच (उच्च): खोए हुए डेटा का 30% तक पुनर्प्राप्त करता है (केंद्रित लोगो के साथ कस्टम स्टाइल कोड के लिए अत्यधिक अनुशंसित)।
जब कोई फ़ोन किसी क्षतिग्रस्त कोड को स्कैन करता है, तो रीडिंग सॉफ़्टवेयर बचे हुए पिक्सेल को बहुपद सूत्रों में इनपुट कर देता है। रीड-सोलोमन कोड के गणितीय गुणों के कारण, स्कैनर लापता वेरिएबल्स को हल कर सकता है, दूषित पिक्सेल के सटीक निर्देशांक का पता लगा सकता है, और एक साफ दृश्य छवि की आवश्यकता के बिना गणितीय रूप से मूल यूआरएल का पुनर्निर्माण कर सकता है।
4. छिपा हुआ कदम: गणितीय मास्किंग पैटर्न
यदि एक क्यूआर कोड में स्वाभाविक रूप से सभी काले या सभी सफेद मॉड्यूल का एक बड़ा, निर्बाध ब्लॉक होता है, तो ऑप्टिकल स्कैनर आसानी से ग्रिड पर अपनी स्थिति का ट्रैक खो सकते हैं। स्कैनर्स को अपनी आंतरिक रीडिंग घड़ियों को सिंक्रनाइज़ रखने के लिए अंधेरे और प्रकाश मॉड्यूल के बीच लगातार संक्रमण की आवश्यकता होती है।
एकल रंगों के बड़े ब्लॉकों को रोकने के लिए, क्यूआर कोड विनिर्देश आठ गणितीय मास्किंग पैटर्न को नियोजित करता है।
\पाठ
उदाहरण मास्किंग फॉर्मूला (मास्क 0):
पिक्सेल पर XOR लागू करें यदि: (पंक्ति + स्तंभ) % 2 == 0
जनरेटर एक एक्सओआर ऑपरेशन (जो गणितीय ग्रिड फॉर्मूला के आधार पर निर्दिष्ट पिक्सल को उलट देता है) का उपयोग करके सभी आठ मास्किंग सूत्रों के माध्यम से आपके कच्चे क्यूआर कोड को चलाता है।
यह तय करने के लिए कि किस मास्क का उपयोग करना है, जनरेटर एक सख्त पेनल्टी-पॉइंट स्कोरिंग प्रणाली के विरुद्ध आठ परिणामों का मूल्यांकन करता है:
- जुर्माना 1: एक पंक्ति या स्तंभ में एक ही रंग के पांच या अधिक लगातार मॉड्यूल के लिए अंक काटें।
- जुर्माना 2: एक ही रंग के किसी भी $2\times2$ ब्लॉक के लिए अंक काटें।
- जुर्माना 3: 1:1:3:1:1 खोजक पैटर्न से मिलते-जुलते पैटर्न के लिए अंक काटें (स्कैनर को भ्रमित करने से बचने के लिए)।
- जुर्माना 4: यदि काले-से-सफेद मॉड्यूल का समग्र अनुपात पूर्ण 50/50 विभाजन से महत्वपूर्ण रूप से विचलित होता है, तो अंक काट लें।
सबसे कम पेनल्टी स्कोर वाला मास्क स्थायी रूप से ग्रिड पर लगाया जाता है। उस विशिष्ट मास्क (0 से 7) के लिए पहचानकर्ता को सीधे खोजक पैटर्न के बगल में मेटाडेटा मॉड्यूल में लिखा जाता है, जो स्कैनिंग ऐप को बताता है कि मास्क को उलटने और अंतर्निहित डेटा को पढ़ने के लिए किस गणितीय सूत्र का उपयोग करना है।'