📘 CodingMarble Learn

डेटा कंप्रेशन (Data Compression)

कंप्रेशन फ़ाइल को छोटा करता है, ताकि वह कम जगह ले और जल्दी भेजी जा सके। लॉसलेस कंप्रेशन (RLE, हफ़मैन, डिक्शनरी तरीके, ZIP, PNG) बिल्कुल वही मूल डेटा वापस देता है। लॉसी कंप्रेशन (JPEG, MP3, MP4) वह बारीकी हटाता है जो हमें मुश्किल से दिखती-सुनाई देती है; फ़ाइल बहुत छोटी होती है पर हटी बारीकी वापस नहीं आती। कंप्रेशन अनुपात = मूल साइज़ ÷ कंप्रेस्ड साइज़।

🎬 कदम-दर-कदम कहानी

  1. यह एक काले-सफ़ेद चित्र की एक पंक्ति है: 16 पिक्सेल, एक-एक करके रखे हुए। इनमें बहुत दोहराव है।
  2. रन-लेंथ एनकोडिंग हर दोहराव को गिनती और मान के रूप में रखती है: 6W 3B 7W। 16 मान घटकर 6 रह गए।
  3. हफ़मैन कोडिंग ज़्यादा आने वाले अक्षर को छोटा कोड और कम आने वाले को लंबा कोड देती है। ABRACADABRA 88 बिट से घटकर 23 बिट रह गया।
  4. लॉसलेस बिल्कुल वही डेटा लौटाता है। लॉसी छोटी बारीकी फेंक देता है: 16 स्लेटी शेड 4 बन जाते हैं।
  5. कंप्रेशन अनुपात = मूल साइज़ ÷ नया साइज़। 88 ÷ 23 लगभग 3.8 : 1, यानी लगभग 74% बचत।
  6. अब आपकी बारी: प्रति पिक्सेल बिट बदलो और देखो कितने शेड बचते हैं और फ़ोटो कितनी बड़ी होगी।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

अगर कंप्रेशन डेटा हटाता है तो लॉसलेस पूरा वापस कैसे लाता है?

लॉसलेस सिर्फ़ दोहराव हटाता है, जानकारी नहीं। 6W का मतलब अब भी छह सफ़ेद पिक्सेल है, इसलिए डिकोडर उन्हें बिल्कुल वैसे ही बना देता है।

क्या RLE फ़ाइल को बड़ा भी कर सकता है?

हाँ। अगर कोई मान दोहराता नहीं, तो हर पिक्सेल (1, मान) बन जाता है और डेटा दोगुना हो जाता है। RLE को लंबे रन चाहिए।

बिना स्पेस के हफ़मैन कोड आपस में मिलते क्यों नहीं?

कोई कोड किसी दूसरे कोड की शुरुआत नहीं है (प्रीफ़िक्स-फ़्री), इसलिए बिट जैसे ही किसी कोड से मिलते हैं, अक्षर तय हो जाता है।

डेटा खोता है फिर भी फ़ोटो लॉसी कंप्रेशन क्यों लेती हैं?

हमारी आँखें शेड के बहुत छोटे बदलाव नहीं पकड़तीं, इसलिए उन्हें हटाने से बहुत जगह बचती है और फ़र्क़ दिखता नहीं।

क्या बड़ा कंप्रेशन अनुपात हमेशा बेहतर है?

साइज़ के लिए हाँ, पर लॉसी में बहुत बड़ा अनुपात यानी ज़्यादा खोई बारीकी। संतुलन चुनो।

बार-बार शेयर होने पर फ़ोटो धुंधली-चौकोर क्यों दिखने लगती है?

हर लॉसी सेव थोड़ी और बारीकी फेंकता है। ये नुकसान जुड़ते जाते हैं, जैसे कम से कम शेड बचना।

डेटा कंप्रेशन क्या है और क्यों ज़रूरी है?

कंप्रेशन का मतलब है वही जानकारी कम बिट में रखना। एनकोडर नाम का प्रोग्राम फ़ाइल छोटी करता है और डिकोडर उसे फिर खोलता है।

कंप्रेशन इसलिए काम करता है क्योंकि असली डेटा में फ़ालतू दोहराव (redundancy) होता है: बार-बार आने वाले मान, आम अक्षर, या ऐसी बारीकी जो आँख-कान पकड़ नहीं पाते। इसकी कीमत समय है: कंप्रेस और डीकंप्रेस करने में कंप्यूटर को मेहनत करनी पड़ती है।

लॉसलेस और लॉसी कंप्रेशन

लॉसलेस (Lossless) कंप्रेशन बिल्कुल वही मूल बिट लौटाता है। टेक्स्ट, प्रोग्राम फ़ाइल, स्प्रेडशीट जैसी चीज़ों में एक भी बिट गलत नहीं चल सकता, वहाँ यही चाहिए। उदाहरण: ZIP, PNG, GIF, FLAC।

लॉसी (Lossy) कंप्रेशन वह बारीकी हटाता है जो लोग शायद नोटिस न करें: फ़ोटो में रंग के बहुत छोटे बदलाव, संगीत में बहुत ऊँची या दबी हुई आवाज़ें। फ़ाइल बहुत छोटी हो जाती है, पर हटा डेटा हमेशा के लिए चला जाता है। उदाहरण: JPEG फ़ोटो, MP3 और AAC संगीत, MP4 वीडियो।

लॉसलेसलॉसी
मूल वापस?हाँ, बिल्कुलनहीं, मिलती-जुलती कॉपी
बचतकमबहुत ज़्यादा
किसके लिएटेक्स्ट, कोड, डेटाफ़ोटो, संगीत, वीडियो

रन-लेंथ एनकोडिंग (RLE)

रन यानी एक जैसे मानों का लगातार समूह। RLE हर रन को एक जोड़े के रूप में रखता है: (गिनती, मान)।

उदाहरण: WWWWWWBBBWWWWWWW बन जाता है 6W 3B 7W, या सफ़ेद = 0 और काला = 1 मानें तो 6 0 3 1 7 0।

RLE बड़े सपाट रंग वाले चित्रों (आइकन, कार्टून, स्कैन पेज) के लिए बढ़िया है। अगर मान कम दोहराते हैं तो डेटा बड़ा भी हो सकता है: ABCD बन जाता है 1A 1B 1C 1D, यानी दोगुना।

हफ़मैन कोडिंग और डिक्शनरी तरीके

साधारण ASCII हर अक्षर को 8 बिट देता है। हफ़मैन कोडिंग ज़्यादा आने वाले अक्षर को छोटा कोड और कम आने वाले को लंबा कोड देती है।

  1. गिनो कि हर अक्षर कितनी बार आता है।
  2. सबसे कम गिनती वाले दो को जोड़कर एक नोड बनाओ; उसकी गिनती दोनों का योग होगी।
  3. यह तब तक दोहराओ जब तक एक ही पेड़ (tree) न बचे।
  4. जड़ (root) से कोड पढ़ो: बाईं शाखा = 0, दाईं = 1।

ABRACADABRA में: A×5, B×2, R×2, C×1, D×1। एक हफ़मैन पेड़ से A = 0, R = 10, B = 110, C = 1110, D = 1111। कुल = 5×1 + 2×2 + 2×3 + 1×4 + 1×4 = 23 बिट, जबकि 11 × 8 = 88 बिट लगते।

हफ़मैन कोड प्रीफ़िक्स-फ़्री होते हैं: कोई कोड किसी दूसरे कोड की शुरुआत नहीं होता, इसलिए डिकोडर कभी उलझता नहीं। पेड़ (या कोड टेबल) फ़ाइल के साथ रखना पड़ता है।

डिक्शनरी तरीके

LZ जैसे तरीके (ZIP और PNG में) पहले देखे गए पैटर्न की एक डिक्शनरी रखते हैं। पैटर्न दोबारा आए तो पूरा पैटर्न लिखने की जगह छोटा-सा संदर्भ लिखते हैं ("12 जगह पीछे जाओ, 5 कॉपी करो")।

कंप्रेशन को नापना

कंप्रेशन अनुपात = मूल साइज़ ÷ कंप्रेस्ड साइज़। 10 MB की फ़ाइल 2 MB बन जाए तो अनुपात 5 : 1।

बची जगह = (मूल − कंप्रेस्ड) ÷ मूल × 100%। यहाँ (10 − 2) ÷ 10 = 80%।

चित्र के लिए: कच्चा साइज़ (बिट) = चौड़ाई × ऊँचाई × कलर डेप्थ। प्रति पिक्सेल कम बिट या कम पिक्सेल = छोटी फ़ाइल, पर कम क्वालिटी। अच्छा चुनाव क्वालिटी, साइज़ और गति में संतुलन रखता है।

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. AAAABBBCCD को RLE से लिखो।

रन: AAAA, BBB, CC, D। RLE: 4A 3B 2C 1D। 10 अक्षर 8 चिह्न (4 जोड़े) बन गए।

2. 12 MB का वीडियो 3 MB में कंप्रेस होता है। अनुपात और बची जगह निकालो।

अनुपात = 12 ÷ 3 = 4 : 1। बचत = (12 − 3) ÷ 12 × 100 = 75%।

3. (a) वर्ड प्रोसेसर में स्कूल रिपोर्ट, (b) सोशल मीडिया के लिए छुट्टियों की फ़ोटो — किसमें कौन-सा कंप्रेशन?

(a) लॉसलेस — हर अक्षर बिल्कुल सही रहना चाहिए। (b) लॉसी (JPEG) — रंग की थोड़ी बारीकी जाए तो चलेगा, फ़ाइल बहुत छोटी हो जाएगी।

4. अक्षर: E×6, T×3, A×2, Z×1। हफ़मैन कोड E = 0, T = 10, A = 110, Z = 111। कुल कितने बिट? 8-बिट ASCII में कितने?

हफ़मैन: 6×1 + 3×2 + 2×3 + 1×3 = 6 + 6 + 6 + 3 = 21 बिट। ASCII: 12 अक्षर × 8 = 96 बिट। अनुपात ≈ 4.6 : 1।

5. A = 0, R = 10, B = 110 से 0101100 को डिकोड करो।

बाएँ से पढ़ो, कोई कोड मिलते ही रुको: 0 → A, 10 → R, 110 → B, 0 → A। उत्तर: ARBA।

6. 1000 × 800 का चित्र 24-बिट रंग में है। कच्चा साइज़ kB में? लॉसी कंप्रेशन से 120 kB फ़ाइल बनी, अनुपात क्या?

बिट = 1000 × 800 × 24 = 19 200 000। बाइट = 2 400 000 = 2400 kB। अनुपात = 2400 ÷ 120 = 20 : 1।

आम गलतियाँ

अभ्यास क्विज़

1. कौन-सा कंप्रेशन बिल्कुल मूल फ़ाइल वापस देता है?
2. WWWBBW का RLE है:
3. हफ़मैन कोडिंग में सबसे ज़्यादा आने वाले अक्षर को मिलता है:
4. कौन-सा फ़ॉर्मेट आमतौर पर लॉसी कंप्रेशन लेता है?
5. 20 MB की फ़ाइल 5 MB बन गई। कंप्रेशन अनुपात:

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

डेटा कंप्रेशन आसान शब्दों में क्या है?

यह फ़ाइल को छोटा करने का तरीका है: वही जानकारी कम बिट में रखो, ताकि कम जगह लगे और फ़ाइल जल्दी पहुँचे।

लॉसी और लॉसलेस कंप्रेशन में क्या अंतर है?

लॉसलेस बिल्कुल मूल फ़ाइल वापस देता है (ZIP, PNG)। लॉसी छोटी बारीकियाँ हटाकर बहुत छोटी फ़ाइल बनाता है और पूरा उल्टा नहीं हो सकता (JPEG, MP3)।

हफ़मैन कोडिंग कहाँ इस्तेमाल होती है?

ZIP (DEFLATE), JPEG और MP3 जैसे कई फ़ॉर्मेट के अंदर, जहाँ यह आख़िरी चिह्नों की धारा को बिना नुकसान छोटा करती है।

यह कहाँ पढ़ाया जाता है

पोलैंडLiceum ogólnokształcące, klasa IVUsing computers, digital devices and networks
यूक्रेन8 класInformation and information literacy: models and data structures
दक्षिण कोरिया고등학교 2학년Data
रूस11 классTheoretical foundations

पहले यह पढ़ें

आगे पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ