2011-02-08 11 views
6

मैंने सुना है कि जेपीजी हफमैन कोड का उपयोग करता है। हफमैन कोड क्या है?जेपीईजी एन्कोडिंग तकनीक

+3

यह हैफमैन ** कोडिंग ** है। यदि आप इसे गुगल करते हैं, तो पहला जवाब आपको [विकिपीडिया के पृष्ठ] (http://en.wikipedia.org/wiki/Huffman_coding) पर ले जाएगा। – darioo

उत्तर

8

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

एक जेपीईजी फ़ाइल में 4 हफमैन टेबल होते हैं जो इन परिवर्तनीय-लंबाई कोड (जो 1 और 16 बिट्स के बीच लेते हैं) और कोड मान (जो 8-बिट बाइट है) के बीच मैपिंग को परिभाषित करते हैं। इन तालिकाओं को बनाना आम तौर पर एक छवि में प्रत्येक प्रतीक (डीसीटी कोड शब्द) कितनी बार प्रकट होता है, और तदनुसार बिट स्ट्रिंग आवंटित करता है। लेकिन, अधिकांश जेपीईजी एन्कोडर्स बस जेपीईजी मानक में प्रस्तुत हफमैन टेबल का उपयोग करते हैं। कुछ एन्कोडर्स इन तालिकाओं को अनुकूलित करने की अनुमति देते हैं, जिसका अर्थ है कि एक इष्टतम बाइनरी पेड़ बनाया जाता है जो एक अधिक कुशल हफमैन टेबल उत्पन्न करने की अनुमति देता है।

Huffman कोडिंग सिर्फ JPEG संपीड़न में एक अंतिम कदम है:

बस जवाब david99world द्वारा दिए गए पूरा करने के लिए एक बहुत गहरे स्पष्टीकरण

+1

बहुत बहुत धन्यवाद, एक और सवाल, डीसीटी गुणांक क्या आपने उल्लेख किया है? –

7

के लिए http://www.cs.duke.edu/csed/poop/huff/info/ पर एक नज़र डालें। महत्वपूर्ण संपीड़न क्वांटिज़ेशन मैट्रिक्स से आता है जो डीसीटी पर लागू होता है। यह क्या है? खैर, डीसीटी परिवर्तन आवृत्तियों द्वारा छवि जानकारी दिखाने का एक तरीका है।

enter image description here

आप डीसीटी गुणांक के साथ एक मैट्रिक्स है, आवृत्ति जानकारी दिखा रहा है, छोड़ दिया बेहतर कोने में सबसे जानकारी ध्यान दे:

enter image description here

इस प्रकार की पिक्सेल मूल्यों के साथ एक मैट्रिक्स होने के

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

enter image description here

क्यों इस चरण संपीड़न के लिए महत्वपूर्ण है? क्योंकि अब आपके पास बहुत सारे शून्य हैं, हफमैन कोडिंग छोटे कोड-शब्दों में ज़ीरो की बड़ी मात्रा को समूहित करेगा, इसलिए आप स्टोरेज मेमोरी को सहेज रहे हैं।

enter image description here

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

मुझे आशा है कि यह आपके लिए चीजों को स्पष्ट करे।