एन्कोड | डिकोड | संपीड़ित

> rice | अनुकूली | संपीड़न <

// राइस कोडिंग – समायोज्य पैरामीटर के साथ अनुकूली पूर्णांक संपीड़न

0 अक्षर
0 अक्षर

>> फ़ीचर्स

[अनुकूली]

समायोज्य पैरामीटर

विभिन्न डेटा वितरणों के लिए k को समायोजित कर संपीड़न को अनुकूलित करें।

[कुशल]

ज्यामितीय डेटा

ज्यामितीय या घातीय वितरण वाले डेटा के लिए विशेष रूप से उपयुक्त।

[सरल]

तेज़ कोडिंग

उच्च प्रदर्शन के लिए सरल भागफल और शेष ऑपरेशन।

>> तकनीकी जानकारी

राइस कोडिंग कैसे काम करती है:

राइस कोडिंग प्रत्येक पूर्णांक n को 2^k से भाग देकर भागफल q और शेष r प्राप्त करती है। भागफल को यूनरी में (q बार 1, फिर 0) और शेष को k बाइनरी बिटों में एन्कोड किया जाता है। इससे एक चर‑लंबाई कोड बनता है जो k पैरामीटर के माध्यम से डेटा वितरण के अनुसार अनुकूल होता है।

राइस कोडिंग उदाहरण (k=2):

k=2, M=2^2=4

0 → q=0, r=0 → 0|00 → 000
1 → q=0, r=1 → 0|01 → 001
2 → q=0, r=2 → 0|10 → 010
3 → q=0, r=3 → 0|11 → 011
4 → q=1, r=0 → 10|00 → 1000
5 → q=1, r=1 → 10|01 → 1001
6 → q=1, r=2 → 10|10 → 1010
7 → q=1, r=3 → 10|11 → 1011
8 → q=2, r=0 → 110|00 → 11000

बड़ा k: कम यूनरी बिट, ज़्यादा बाइनरी बिट
छोटा k: ज़्यादा यूनरी बिट, कम बाइनरी बिट

राइस कोडिंग क्यों उपयोग करें?:

  • ▸डेटा वितरण के अनुसार अनुकूल
  • ▸इम्प्लीमेंट करना आसान
  • ▸तेज़ एन्कोड और डिकोड
  • ▸सेंसर डेटा के लिए उपयुक्त
  • ▸छोटे पूर्णांकों के लिए कुशल

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

राइस कोडिंग क्या है?

राइस कोडिंग एक एंट्रॉपी कोडिंग विधि है जिसकी लंबाई बदलती रहती है और यह विशेष रूप से ज्यामितीय वितरणों के लिए कुशल है। यह गोलोम्ब कोडिंग का एक विशेष मामला है जहाँ हर M को 2 की घात (M = 2^k) तक सीमित रखा जाता है, जिससे बिट‑शिफ्ट ऑपरेशनों के जरिए तेज़ इम्प्लीमेंटेशन संभव होता है।

k पैरामीटर कैसे चुनें?

k का इष्टतम मान आपके डेटा वितरण पर निर्भर करता है। औसत μ वाले डेटा के लिए, लगभग k ≈ log₂(μ × ln(2)) लिया जा सकता है। छोटे k (0–2) बहुत छोटे अंकों के लिए अच्छे हैं, जबकि बड़े k (4–8) बड़े मानों वाले डेटा के लिए बेहतर होते हैं। अपने डेटा के लिए सही k खोजने के लिए विश्लेषण फ़ंक्शन का उपयोग करें।

राइस बनाम गोलोम्ब कोडिंग?

राइस कोडिंग गोलोम्ब कोडिंग का उपसमुच्चय है जहाँ M = 2^k होता है। यह प्रतिबंध राइस को तेज़ बनाता है (भाग के बजाय बिट‑शिफ्ट), लेकिन कभी‑कभी थोड़ा कम इष्टतम हो सकता है। गोलोम्ब बेहतर संपीड़न के लिए किसी भी M मान का चुनाव कर सकता है, जबकि राइस गति के बदले थोड़ी दक्षता का त्याग करता है।

राइस कोडिंग कहाँ उपयोग होती है?

राइस कोडिंग का व्यापक उपयोग बिना हानि वाले ऑडियो संपीड़न (FLAC, ALAC), इमेज संपीड़न (JPEG-LS) और ज्यामितीय वितरण वाले सेंसर डेटा में होता है। यह विशेष रूप से छोटे, गैर‑ऋणात्मक पूर्णांकों के लिए प्रभावी है जिनकी प्रायिकता घातीय रूप से घटती है।

// हल किया गया उदाहरण

nqrk=2
0000000
1001001
2010010
3011011
41001000
51011001
61101010
71111011
820011000

// कोड उदाहरण

Rice code with parameter k  (Golomb code with M = 2^k)
  q = n >> k            quotient, written as q ones followed by a zero
  r = n & (2^k - 1)     remainder, written as k plain bits
  code = unary(q) + r

k = 2, n = 9  ->  q = 2, r = 01  ->  110 01
Decode: count the leading 1s (q), skip the 0, read k bits (r), n = (q << k) | r
Choose k about log2(mean value): small values -> small k

>> और प्रश्न

प्र: राइस कोड और गोलोम्ब कोड में क्या अंतर है?

उ: राइस कोड गोलोम्ब कोड का वह विशेष रूप है जिसमें प्राचल M दो की घात (M = 2^k) होता है। तब भाग की जगह बिट शिफ़्ट और मास्क काम आते हैं, जो बहुत तेज़ है।

प्र: प्राचल k कैसे चुनें?

उ: k लगभग मानों के औसत का log2 होना चाहिए। बहुत छोटा k लंबे यूनरी अंश बनाता है, बहुत बड़ा k शेषफल में बिट बर्बाद करता है। FLAC जैसे कोडेक हर ब्लॉक के लिए k चुनते हैं।

प्र: राइस कोड किसके लिए उपयुक्त है?

उ: ज्यामितीय वितरण वाले अऋणात्मक पूर्णांकों के लिए, जहाँ छोटे मान कहीं अधिक आते हैं। विशिष्ट उदाहरण: लॉसलेस ऑडियो (FLAC) और इमेज (JPEG-LS) के पूर्वानुमान अवशेष।