फ़ाइल संपीड़न कैसे काम करता है?


19

इसलिए, मैंने महसूस किया कि आज मैं फाइल कंप्रेशन को मान लेता हूं। एक साथ कुछ फ़ाइलों को एक साथ बंडल करने की क्षमता है, और क्या यह उनमें से किसी से भी छोटा है, क्या मैं सिर्फ एक तथ्य के रूप में स्वीकार करता हूं, लेकिन यह वास्तव में कैसे काम करता है?

मुझे इसका एक सीमित ज्ञान है, जिसमें पॉइंटर्स के साथ सभी डुप्लिकेट प्रविष्टियों को बदलने के लिए कुछ करना शामिल है, इस तरह से हटना है, लेकिन इससे परे मैं काफी स्पष्ट हूँ!

जैसा कि मैं हमेशा नए ज्ञान के लिए खुला हूं, जैसा कि मैं कल्पना करता हूं कि हम में से अधिकांश यहां हैं, मैंने सोचा था कि मैं पूछूंगा। तो, SuperUser, संपीड़न वास्तव में कैसे काम करता है ?


1
विकिपीडिया लेख एक अच्छी शुरुआत है, लेकिन यह अधिक विशिष्ट स्पष्टीकरण के लिए अच्छा होगा। अच्छा सवाल (हालांकि मुझे यकीन था कि हमारे पास पहले से ही ऐसा सवाल था, लेकिन ऐसा लगता है कि नहीं)।
Gnoupi

2
@Gnoupi: वास्तव में, पहली चीज़ जो मैंने की थी वह थी खोज, क्योंकि मुझे यकीन था कि यहाँ एक था। जाहिरा तौर पर नहीं, इसलिए मैंने उसे ठीक करने की कोशिश की: P
Phoshi

2
जब आप तस्वीरें पोस्ट करते हैं और "wot izzit ??" जाते हैं, तो हमें "क्या-क्या" टैग मिला है; मैं एक "कैसे करता है यह काम" टैग के लिए एक की जरूरत देख रहा है, लेकिन यह बहुत लंबा है और "कैसे काम" गूंगा लगता है। "समझा" यह हो सकता है।
क्विक क्वोटोटे

@ क्वैक क्विक्सोट: आह, धन्यवाद। मैं "plz-send-the-स्पष्टीकरण" प्रकार टैग के लिए स्वत: पूर्ण में देख रहा था, लेकिन एक नहीं मिला।
फ़ॉसी

2
मैं कई बार "कैसे" टैग बनाने के करीब आया हूं ... लेकिन "समझाना" शायद बेहतर है। "ट्यूटोरियल" और "हाउटो" और "शुरुआती" सभी अर्ध-लागू हैं, लेकिन काफी फिट नहीं हैं।
क्विकोट

जवाबों:


18

दोषरहित संपीड़न

दोषरहित संपीड़न वह जगह है जहां कोई डेटा गुम नहीं होता है। जो कुछ भी दर्ज किया गया है वह पूरी तरह से पुनर्प्राप्त किया जा सकता है। यह पाठ या बाइनरी फ़ाइलों के लिए अच्छी तरह से काम करता है जहां सबसे छोटी त्रुटि दिखाई देगी।

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

उदाहरण के लिए "AAAAAAAA" को "8A" में बदल दिया जा सकता है।

दी कि यह कैसे काम करता है क्योंकि तब आपको समस्या होती है कि अगर "8A" प्लेनटेक्स्ट में होता। आप फ़ाइल को अनलॉक्ड कर देंगे और यह गलत होगा। शुरू करने के लिए एक अच्छी जगह विकिपीडिया या LZW डेटा संपीड़न एल्गोरिथम है

इस प्रतिलिपि के लिए कुछ सरल रूप से नीचे दिए गए कॉपी-कोड हैं:

STRING = get input character
WHILE there are still input characters DO
    CHARACTER = get input character
    IF STRING+CHARACTER is in the string table then
        STRING = STRING+character
    ELSE
        output the code for STRING
        add STRING+CHARACTER to the string table
        STRING = CHARACTER
    END of IF
END of WHILE
output the code for STRING

सभी संपीड़न एक लुकअप डिक्शनरी का उपयोग करते हैं जो फ़ाइल को संपीड़ित और विघटित करने के लिए उपयोग किया जाता है। शब्दकोश जितना बड़ा होगा, उतना ही आप इसे संपीड़ित कर सकते हैं, हालांकि आप लॉ ऑफ डिमिनिशिंग रिटर्न्स में भाग लेते हैं ।

यह भी ध्यान देने योग्य है कि संपीड़न हमेशा एक छोटी फ़ाइल नहीं देता है। ऐसी स्थितियां हैं (छोटी फ़ाइलों के साथ, या यादृच्छिक डेटा को संपीड़ित करते समय ) कि आपको संपीड़न के बाद एक छोटी फ़ाइल नहीं मिलेगी। यादृच्छिक डेटा को संपीड़ित करने की क्षमता से संबंधित कुछ मजेदार चुनौतियां हैं

"हानिपूर्ण संपीड़न

उपरोक्त दोषरहित संपीड़न से संबंधित है । वीडियो / ऑडियो अनुप्रयोगों जैसे एमपी 3, जेपीजी और एच .264 में उपयोग किए जाने वाले अन्य प्रकार के संपीड़न उदाहरण हैं हानिरहित संपीड़न

हानिपूर्ण संपीड़न डेटा को छोड़ने से काम करता है जिसे कम से कम देखा जा सकता है। ऑडियो में यह 30,000 हर्ट्ज और 100 हर्ट्ज से नीचे की ध्वनियों के साथ-साथ अन्य विभिन्न चीजों के साथ है। चित्र (स्थैतिक) में यह विभिन्न चीजों को हटा देता है और डेटा को त्यागने के साथ-साथ पिक्सल्स को एक साथ मिला देता है।

हानिपूर्ण संपीड़न परिवर्तन कोडिंग का एक रूप है । यह समग्र आकार को कम करने के लिए डेटा औसत करता है। उदाहरण के लिए एक छवि में 10 पिक्सल का एक ब्लॉक, थोड़ा अलग रंगों के सभी को एक साथ एक रंग में विलय किया जा सकता है और इस प्रकार संकुचित किया जा सकता है।

वीडियो कम्प्रेशन में अक्सर निर्देशों को केवल redraw पिक्सेल पर रखा जाएगा जो कि अंतिम फ्रेम या कीफ़्रेम के बाद बदल गए हैं ।


ध्यान दें कि यह केवल दोषरहित संपीड़न के लिए स्पष्टीकरण है, जिस तरह से आप सटीक प्रारंभिक डेटा (सबसे अधिक संभावना संग्रह कार्यक्रमों द्वारा उपयोग किए जाने वाले) को पुनर्प्राप्त कर सकते हैं। संपीड़न के अन्य प्रकार हैं, जिसमें आप छोटे आकार के लिए गुणवत्ता खो देते हैं, उदाहरण के लिए JPG, MP3, आदि में उपयोग किया जाता है
Gnoupi

जोश का पहला उदाहरण रन-लंबाई एन्कोडिंग नामक एक वास्तविक संपीड़न विधि का एक रूप है, और "8 ए" को "181 मिलियन" तक संकुचित किया जाएगा। जाहिर है कि उसका अंतिम पैराग्राफ यहां लागू होता है; RLE कई डुप्लिकेट के साथ डेटा पर सबसे अच्छा काम करता है।
डोर हाई आर्च

3
मैंने दोषरहित / दोषपूर्ण शीर्षकों को जोड़ा और इसे थोड़ा और गोल किया। यह नोट करना अच्छा है कि इसे समझने का सबसे अच्छा तरीका यह है कि आप केवल विकिपीडिया लेख को पढ़ें।
जोश के

5

संपीड़न डेटा में पैटर्न ढूंढकर काम करता है, फिर इन पैटर्नों को एक विशेष छोटे पैटर्न के साथ बदल देता है। Decompression व्युत्क्रम है: विशेष पैटर्न ढूंढें, और उन्हें बड़े पैटर्न के साथ बदलें जो वे प्रतिनिधित्व करते हैं। यह जानना कि कौन से पैटर्न संभावित हैं महत्वपूर्ण हैं; उदाहरण के लिए, पाठ में पाए जाने वाले पैटर्न छवियों में पाए जाने वाले की तुलना में काफी भिन्न हो सकते हैं। कुछ संपीड़न तकनीक हानिरहित हैं; वे विस्तार की गारंटी नहीं देते कि इनपुट ठीक हो जाएगा। यह आमतौर पर एनालॉग डेटा के लिए ठीक है, जैसे कि संगीत और चित्र, यदि नुकसान काफी छोटा है। लेकिन पाठ जैसे डेटा को दोषरहित तकनीकों के साथ संकुचित किया जाना चाहिए।

यह महसूस करना महत्वपूर्ण है कि बिना किसी नुकसान के, यादृच्छिक डेटा को एक बिट से संपीड़ित करना असंभव है। द्विआधारी डेटा के एन बिट्स के साथ एक फ़ाइल पर विचार करें। 2 ^ N संभव फाइलें हैं। यदि आप इनमें से किसी भी फ़ाइल को एक बिट से संपीड़ित करते हैं, तो संकुचित फ़ाइल N-1 बिट्स आकार में है, केवल 2 ^ (N-1) संभव संपीड़ित प्रतिनिधित्व हैं। दूसरे शब्दों में, प्रत्येक संभव संपीड़ित फ़ाइल को एक से अधिक असम्पीडित फ़ाइल का प्रतिनिधित्व करना चाहिए। एक अद्वितीय संपीड़ित प्रतिनिधित्व के बिना, विघटन एल्गोरिथ्म दोषरहित विघटन की गारंटी नहीं दे सकता है।


3
एक फ़ाइल असम्पीडित (विशेषण) हो सकती है लेकिन असम्पीडित नहीं हो सकती (क्रिया)। इसके बजाय यह विघटित है
क्विक कोटेकोट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.