जेपीईजी फाइल क्या है?
जेपीईजी एक प्रकार का छवि प्रारूप है जिसे हानिकारक संपीड़न की विधि का उपयोग करके सहेजा जाता है। संपीड़न के परिणामस्वरूप आउटपुट छवि, भंडारण आकार और छवि गुणवत्ता के बीच एक व्यापार-बंद है। उपयोगकर्ता वांछित गुणवत्ता स्तर प्राप्त करने के लिए संपीड़न स्तर को समायोजित कर सकते हैं जबकि एक ही समय में भंडारण आकार को कम कर सकते हैं। यदि छवि पर 10:1 संपीड़न लागू किया जाता है, तो छवि गुणवत्ता नगण्य रूप से प्रभावित होती है। संपीड़न मान जितना अधिक होगा, छवि गुणवत्ता में गिरावट उतनी ही अधिक होगी।
फ़ाइल प्रारूप निर्दिष्टीकरण
जेपीईजी छवि फ़ाइल प्रारूप संयुक्त फोटोग्राफिक विशेषज्ञ समूह द्वारा मानकीकृत किया गया था और इसलिए, जेपीईजी नाम। प्रारूप वेब पर फोटोग्राफिक छवियों को संग्रहीत करने और प्रसारित करने का विकल्प रहा है। लगभग सभी ऑपरेटिंग सिस्टम में अब दर्शक हैं जो जेपीईजी छवियों के विज़ुअलाइज़ेशन का समर्थन करते हैं, जिन्हें अक्सर जेपीजी एक्सटेंशन के साथ भी संग्रहीत किया जाता है। यहां तक कि वेब ब्राउज़र JPEG छवियों के विज़ुअलाइज़ेशन का समर्थन करते हैं। जेपीईजी फ़ाइल प्रारूप विनिर्देशों में जाने से पहले, जेपीईजी निर्माण में शामिल चरणों की समग्र प्रक्रिया का उल्लेख करने की आवश्यकता है।
जेपीईजी संपीड़न कदम
रूपांतरण: रंगीन छवियों को आरजीबी से ल्यूमिनेंस/क्रोमिनेंस छवि में रूपांतरित किया जाता है (आंख ल्यूमिनेंस के प्रति संवेदनशील होती है, क्रोमिनेंस के लिए नहीं, ताकि क्रोमिनेंस भाग बहुत अधिक डेटा खो सके और इस प्रकार अत्यधिक संपीड़ित हो सके।
डाउन सैंपलिंग: डाउन सैंपलिंग रंगीन कंपोनेंट के लिए किया जाता है न कि ल्यूमिनेंस कंपोनेंट के लिए। डाउन सैंपलिंग या तो 2:1 क्षैतिज और 1:1 लंबवत (2h 1 V) के अनुपात में किया जाता है। इस प्रकार छवि आकार में कम हो जाती है क्योंकि ‘y’ घटक को छुआ नहीं जाता है, छवि गुणवत्ता का कोई ध्यान देने योग्य नुकसान नहीं होता है।
समूहों में व्यवस्थित करना: प्रत्येक रंग घटक के पिक्सेल को 8×2 पिक्सेल के समूहों में व्यवस्थित किया जाता है, जिन्हें “डेटा इकाइयां” कहा जाता है, यदि पंक्तियों या स्तंभों की संख्या 8 से अधिक नहीं है, तो सबसे नीचे की पंक्ति और सबसे दाएं स्तंभों को डुप्लिकेट किया जाता है।
असतत कोसाइन परिवर्तन: असतत कोसाइन रूपांतरण (DCT) तब रूपांतरित घटकों के 8×8 मानचित्र बनाने के लिए प्रत्येक डेटा इकाई पर लागू किया जाता है। कंप्यूटर अंकगणित की सीमित सटीकता के कारण DCT में जानकारी का कुछ नुकसान होता है। इसका अर्थ है कि मानचित्र के बिना भी छवि गुणवत्ता में कुछ कमी होगी लेकिन यह सामान्य रूप से छोटी होती है।
परिमाणीकरण: डेटा इकाई में 64 परिवर्तित घटकों में से प्रत्येक को एक अलग संख्या से विभाजित किया जाता है जिसे इसका ‘परिमाणीकरण गुणांक (QC)’ कहा जाता है और फिर एक पूर्णांक तक गोल किया जाता है। यह वह जगह है जहां सूचना अपरिवर्तनीय रूप से खो जाती है, बड़े क्यूसी अधिक नुकसान का कारण बनते हैं। सामान्य तौर पर, अधिकांश JPEG उपकरण JPEG मानक द्वारा अनुशंसित QC तालिकाओं के उपयोग की अनुमति देते हैं।
एन्कोडिंग: प्रत्येक डेटा इकाई के 64 क्वांटाइज़्ड रूपांतरित गुणांक (जो अब पूर्णांक हैं) को RLE और हफ़मैन कोडिंग के संयोजन का उपयोग करके एन्कोड किया गया है.
हेडर जोड़ना: अंतिम चरण हेडर और उपयोग किए गए सभी जेपीईजी पैरामीटर जोड़ता है और परिणाम आउटपुट करता है।
जेपीईजी डिकोडर संपीड़ित एक से मूल छवि उत्पन्न करने के लिए रिवर्स में चरणों का उपयोग करता है।
फ़ाइल संरचना
एक जेपीईजी छवि को सेगमेंट के अनुक्रम के रूप में दर्शाया जाता है जहां प्रत्येक सेगमेंट मार्कर से शुरू होता है। मार्कर के प्रकार का प्रतिनिधित्व करने के लिए प्रत्येक मार्कर 0xFF बाइट से शुरू होता है और उसके बाद मार्कर फ्लैग होता है। मार्कर प्रकार के अनुसार पेलोड के बाद मार्कर भिन्न होता है। सामान्य जेपीईजी मार्कर प्रकार नीचे सूचीबद्ध हैं:
संक्षिप्त नाम | बाइट्स | पेलोड | नाम | टिप्पणियां |
---|---|---|---|---|
SOI | 0xFF, 0xD8 | कोई नहीं | छवि की शुरुआत | |
S0F0 | 0xFF, 0xC0 | परिवर्तनीय आकार | फ़्रेम की शुरुआत | |
S0F2 | 0xFF, 0xC2 | परिवर्तनीय आकार | फ़्रेम के लिए प्रारंभ करें | |
DHT | 0xFF, 0xC4 | परिवर्तनीय आकार | हफमैन टेबल परिभाषित करें | |
DQT | 0xFF, 0xDB | परिवर्तनीय आकार | परिमाणीकरण सारणी परिभाषित करें | |
DRI | 0xFF, 0xDD | 4 बाइट्स | रिस्टार्ट इंटरवल को परिभाषित करें | |
SOS | 0xFF, 0xDA | परिवर्तनीय आकार | स्कैन की शुरुआत | |
RSTn | 0xFF, 0xD//n//(/hi//n//#0..7) | कोई नहीं | पुनरारंभ करें | |
APPn | 0xFF, 0xE//n// | परिवर्तनीय आकार | आवेदन विशिष्ट | |
COM | 0xFF, 0xFE | परिवर्तनीय आकार | टिप्पणी | |
ईओआई | 0xFF, 0xD9 | कोई नहीं | छवि का अंत |
एन्ट्रॉपी-कोडेड डेटा के भीतर, किसी भी 0xFF बाइट के बाद, अगली बाइट से पहले एनकोडर द्वारा 0x00 बाइट डाली जाती है, ताकि फ्रेमिंग त्रुटियों को रोकने के लिए कोई मार्कर नहीं दिखाई दे। डिकोडर्स को इस 0x00 बाइट को छोड़ना होगा। यह तकनीक, जिसे बाइट स्टफिंग कहा जाता है (JPEG विनिर्देश अनुभाग F.1.2.3 देखें), केवल एंट्रॉपी-कोडेड डेटा पर लागू होता है, पेलोड डेटा को चिह्नित करने के लिए नहीं . हालांकि ध्यान दें कि एंट्रॉपी-कोडेड डेटा के अपने कुछ मार्कर होते हैं; विशेष रूप से रीसेट मार्कर (0xD0 से 0xD7), जो समानांतर डिकोडिंग की अनुमति देने के लिए एंट्रॉपी-कोडित डेटा के स्वतंत्र हिस्सों को अलग करने के लिए उपयोग किए जाते हैं, और एन्कोडर नियमित अंतराल पर इन रीसेट मार्करों को सम्मिलित करने के लिए स्वतंत्र होते हैं (हालांकि सभी एन्कोडर ऐसा नहीं करते हैं)।