2012-10-15 26 views
8

मैं बनाने के लिए कोशिश कर रहा हूँ में सांकेतिक शब्दों में बदलना/एक QR कोड प्रारूप से/में एक bmp छवि डिकोड करने के लिए एक एल्गोरिथ्म एक बीएमपी छवि भंडारण (अगर मैं किसी भी तरह अपना शोध में यह नहीं छूटा है या,, लगता है)। मैं QR कोड की मूल बातें समझने की कोशिश के लिए एक गाइड (Thonky) का उपयोग किया गया है और मैं अभी भी यकीन है कि इस समस्या के बारे में जाने के लिए कैसे, विशेष रूप से नहीं कर रहा हूँ:एक QR कोड

  • मैं बाइनरी या के रूप में डेटा सांकेतिक शब्दों में बदलना चाहिए संख्यात्मक अधिक उचित होगा (माना जाता है कि प्रत्येक पिक्सेल का अधिकतम मूल्य 255 होगा)?

  • मैंने क्यूआर कोड की संरचित परिशिष्ट क्षमताओं पर जानकारी की खोज की है लेकिन इस तथ्य से परे अधिक जानकारी नहीं मिली है कि यह क्यूआर कोड द्वारा समर्थित है - मैं इस कार्यक्षमता को कैसे कार्यान्वित/उपयोग कर सकता हूं?

और, ज़ाहिर है, अगर कोई सुझाव दिए गए हैं/सुझाव बेहतर बाइनरी डेटा के रूप में एक छवि को स्टोर करने, मैं सुझाव के लिए बहुत खुले रहा हूँ!

अपने समय के लिए धन्यवाद,

शॉन

+0

मैं पूछूंगा कि आप वास्तव में ऐसा करना चाहते हैं। ructured append केवल किसी भी पाठक द्वारा समर्थित नहीं है, और अधिकतम आकार क्यूआर कोड अभ्यास में अधिकांश उपकरणों द्वारा अपठनीय है। छवि को एक साधारण हाइपरलिंक एन्कोड करें। –

उत्तर

9

मुझे यकीन है कि आप जानकारी एक QR कोड धारण कर सकते हैं काफी सीमित है की राशि के रूप में, कि प्राप्त करने के लिए सक्षम हो जाएगा नहीं कर रहा हूँ।

सबसे पहले, आप शायद अपनी छवि को कच्चे बाइट्स के रूप में स्टोर करना चाहते हैं, क्योंकि अन्य प्रारूप (संख्यात्मक और अल्फान्यूमेरिक) टेक्स्ट/संख्याओं को रखने के लिए डिज़ाइन किए गए हैं और आपकी छवि को स्टोर करने के लिए कम स्थान प्रदान करेंगे। आइए मान लें कि आप त्रुटि सुधार के सबसे छोटे स्तर के साथ सबसे बड़ा संभव क्यूआर कोड (संस्करण 40) चुनते हैं, जो बाइनरी सूचना (see here) के 2 9 53 बाइट तक हो सकता है।

पहले विकल्प में, आप का सुझाव के रूप में, आप छवि एक बिटमैप के रूप में संग्रहीत करते हैं। यह प्रारूप बिल्कुल संपीड़न की अनुमति नहीं देता है और इसके लिए आवश्यक है (अल्फा चैनल के बिना आरजीबी छवि के मामले में) 3 बाइट प्रति पिक्सेल। यदि हम फ़ाइल हेडर आकार (14 से 54 बाइट्स) को ध्यान में रखते हैं, और पैडिंग को अनदेखा करते हैं (छवि डेटा की प्रत्येक पंक्ति को 4 के एकाधिक होने के लिए पैड किया जाना चाहिए), जो आपको लगभग 2 9 00/3 = 9 66 स्टोर करने की अनुमति देता है पिक्सल। यदि हम एक स्क्वायर छवि पर विचार करते हैं, तो यह 31x31 बिटमैप का प्रतिनिधित्व करता है, जो थंबनेल छवि के लिए भी छोटा है (उदाहरण के लिए, इस पोस्ट के अंत में मेरा अवतार 32x32 पिक्सल है)।

दूसरा विकल्प, आप अपनी छवि को एन्कोड करने के लिए जेपीईजी का उपयोग करते हैं। इस प्रारूप में संपीड़न एल्गोरिदम का उपयोग करने का लाभ है जो फ़ाइल आकार को कम कर सकता है। इस बार 2.9 केबी में एक छवि फिटिंग के आकार को प्राप्त करने के लिए कोई सटीक सूत्र नहीं है, लेकिन मैंने कुछ वर्ग छवियों का उपयोग करने की कोशिश की और उन्हें एक अच्छा (9 3) गुणवत्ता कारक रखने के बाद, इस आकार में फिट होने तक उन्हें डाउनसाइज करना: यह औसत देता है लगभग 60x60 पिक्सेल छवियों में से। (ऐसी छोटी छवियों पर, जेपीईजी और बीएमपी के बीच एक अविश्वसनीय संपीड़न कारक नहीं देखना सामान्य है, क्योंकि एक जेपीईजी फ़ाइल में फ़ाइल हेडर बीएमपी फ़ाइल से कहीं बड़ा है: लगभग 500 बाइट्स)। यह बिटमैप से बेहतर है, लेकिन काफी छोटा रहता है।

अंत में, भले ही आप इस QR कोड में अपनी छवि एन्कोडिंग में सफल होने के लिए, आप एक अन्य समस्या का सामना करेंगे: एक QR कोड इस बड़े बहुत, बहुत सफलतापूर्वक स्कैन करने के लिए कठिन है। वास्तव में, इस क्यूआर कोड में 177x177 मॉड्यूल का आकार होगा (एक "मॉड्यूल" एक छोटा सफेद या काला वर्ग होता है)। मान लीजिए कि आप इसे "एचडी" फ्रेम (1280x720 पिक्सल) प्रदान करने वाले स्मार्टफ़ोन का उपयोग करके स्कैन करते हैं, प्रत्येक मॉड्यूल के पास लगभग 4 पिक्सल के फ्रेम पर अधिकतम आकार होगा। यदि आप कैमरे के शोर, एलियासिंग और धुंध को ध्यान में रखते हैं, तो इस तथ्य के कारण उपयोगकर्ता स्कैनिंग के दौरान पूरी तरह से निष्क्रिय नहीं होता है, इनपुट फ्रेम की गुणवत्ता किसी भी क्यूआर कोड डिकोडिंग एल्गोरिदम के लिए सफलतापूर्वक क्यूआर प्राप्त करने के लिए बहुत कठिन हो जाएगी कोड (भूलें कि हम इसकी शुरुआत में कम त्रुटि पर अपना त्रुटि सुधार स्तर सेट करें!)।

हालांकि यह बहुत अच्छी खबर नहीं है, मुझे आशा है कि इससे आपकी मदद मिलती है!

+0

एमबीरेन, प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। मुझे एहसास नहीं हुआ कि मैं किस आकार की बाधा के साथ काम कर रहा हूं - मुझे लगता है कि स्कैन करने योग्यता के मामले में मेरे पास कुछ काम है (मैं स्मार्ट फोन के साथ काम नहीं कर रहा हूं इसलिए सबसे बड़ी समस्या इनपुट फ्रेम गुणवत्ता होगी इस्तेमाल किए जाने वाले माध्यम के लिए) संग्रहीत डेटा बनाम राशि। इस बात को ध्यान में रखते हुए, मुझे अभी भी क्यूआर कोड की संरचित एपेंड सुविधा के बारे में कोई जानकारी नहीं मिल रही है - क्या आपके पास कोई संसाधन है जो समझाता है कि क्यूआर कोड को 'लिंक' कैसे करें? फिर, इस इनपुट के लिए धन्यवाद, यह निश्चित रूप से मुझे जिस मुद्दे का सामना कर रहा है उसे समझने में मदद करता है! -सियन – user1748532

2

"संरचित परिशिष्ट" नामक आपके क्यूआर कोडों में एक विशेष शीर्षलेख का उपयोग करके, कई (16 तक) क्यूआर कोडों पर जानकारी को एन्कोड करने का एक तरीका है। आपके द्वारा उपयोग की जा सकने वाली जानकारी का सबसे अच्छा स्रोत क्यूआर कोड (आईएसओ 18004: 2006) के बारे में मानक है; वेब पर इसे मुफ्त में ढूंढना संभव है (लेकिन जरूरी नहीं है)।

प्रासंगिक हिस्सा (धारा 9) इस नियम का कहना है:

"ऊपर से 16 QR कोड प्रतीकों एक संरचित प्रारूप में संलग्न किया जा सकता है एक प्रतीक एक संरचित संलग्न संदेश का एक भाग है, तो इसे से मिलता है। पहले तीन प्रतीक चरित्र पदों में एक हेडर ब्लॉक। संरचित परिशिष्ट मोड संकेतक 0011 को पहले प्रतीक चरित्र में चार सबसे महत्वपूर्ण बिट स्थितियों में रखा गया है। यह तुरंत दो संरचित परिशिष्ट कोडवार्डों द्वारा पीछा किया जाता है, जो चार कम से कम महत्वपूर्ण पहले प्रतीक चरित्र के बिट्स, दूसरा प्रतीक चरित्र और तीसरे प्रतीक चरित्र के चार सबसे महत्वपूर्ण बिट्स। पहला कोडवार्ड प्रतीक अनुक्रम संकेतक है। दूसरा कोडवर्ड पारी है ty डेटा और संदेश में सभी प्रतीकों में समान है, इसे सत्यापित करने में सक्षम बनाता है कि सभी प्रतीकों एक ही संरचित परिशिष्ट संदेश के रूप भाग को पढ़ते हैं। इस शीर्ष लेख तुरंत प्रतीक पहली मोड संकेतक के साथ शुरू करने के लिए डेटा कूटशब्द द्वारा पीछा किया। "

फिर भी, मैं सबसे QR कोड स्कैनर के रूप में यह एक काफी उन्नत सुविधा है इस संभाल कर सकते हैं, यकीन नहीं है।

1

आप एक निश्चित छवि आकार को परिभाषित कर सकते हैं, जेपीजी हेडर भागों को कम कर सकते हैं और इसके बारे में केवल महत्वपूर्ण जानकारी का उपयोग कर सकते हैं, ताकि आप ~ 500bytes सामान्य हेडर के 480bytes तक बचा सकें।

मैं लोगों को फ़ोटो को छोटे से स्टोर करने के लिए इस विधि का उपयोग कर रहा था -क्लब आईडी कार्ड, 64x64 पिक्सल के बारे में छवियां पर्याप्त हैं।