कॉन्टेक्स्ट-एडेप्टिव वेरिएबल-लेन्थ कोडिंग

From Vigyanwiki
Revision as of 11:31, 12 August 2023 by Manidh (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

कॉन्टेक्स्ट-एडेप्टिव वेरिएबल-लेन्थ कोडिंग (सीएवीएलसी) H.264/MPEG-4 AVC वीडियो एन्कोडिंग में उपयोग की जाने वाली एन्ट्रापी कोडिंग का एक रूप है। यह लगभग सभी एन्ट्रापी-कोडर्स की तरह एक स्वाभाविक रूप से दोषरहित संपीड़न तकनीक है। H.264/MPEG-4 AVC में, इसका उपयोग अवशिष्ट, ज़िग-ज़ैग ऑर्डर, ट्रांसफ़ॉर्म गुणांक के ब्लॉक को एनकोड करने के लिए किया जाता है। यह कॉन्टेक्स्ट-आधारित अनुकूली बाइनरी अंकगणित कोडिंग (सीएबीएसी) का एक विकल्प है। सीएवीएलसी को सीएबीएसी की तुलना में डिकोड करने के लिए काफी कम प्रसंस्करण की आवश्यकता होती है, चूंकि यह आँकड़े को प्रभावी ढंग से संपीड़ित नहीं करता है। सीएवीएलसी सभी H.264 प्रोफाइल में समर्थित है, CABAC के विपरीत जो बेसलाइन और विस्तारित प्रोफाइल में समर्थित नहीं है।

सीएवीएलसी का उपयोग रूपांतरण गुणांक के अवशिष्ट, ज़िग-ज़ैग आदेशित 4×4 (और 2×2) ब्लॉक को एनकोड करने के लिए किया जाता है। सीएवीएलसी को परिमाणित 4×4 ब्लॉकों की कई विशेषताओं का लाभ उठाने के लिए डिज़ाइन किया गया है:

  • पूर्वानुमान, परिवर्तन और परिमाणीकरण के बाद, ब्लॉक सामान्यत: विरल होते हैं (ज्यादातर शून्य वाले)।
  • ज़िग-ज़ैग स्कैन के बाद उच्चतम गैर-शून्य गुणांक अधिकांशत: +/− 1 के अनुक्रम होते हैं। सीएवीएलसी एक संहत तरीके से उच्च आवृत्ति +/−1 गुणांक की संख्या का संकेत देता है।
  • पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या सहसंबद्ध है। गुणांकों की संख्या को लुक-अप तालिका का उपयोग करके एन्कोड किया गया है; लुक-अप तालिका का चुनाव पड़ोसी ब्लॉकों में गैर-शून्य गुणांकों की संख्या पर निर्भर करता है।
  • गैर-शून्य गुणांक का लेवल (परिमाण) पुन: व्यवस्थित सरणी के प्रारंभ में अधिक होता है (डीसी गुणांक के पास) और उच्च आवृत्तियों की ओर कम होता है। सीएवीएलसी हाल ही में कोडित लेवल परिमाण के आधार पर "लेवल" पैरामीटर के लिए VLC लुक-अप तालिका की पसंद को अनुकूलित करके इसका लाभ उठाता है।

कोडित तत्व

जिन पैरामीटर्स को एन्कोड और ट्रांसमिट करने की आवश्यकता है उनमें निम्नलिखित तालिका सम्मलित है:

मापदंड विवरण
मैक्रोब्लॉक प्रकार प्रत्येक कोडित मैक्रोब्लॉक के लिए पूर्वानुमान विधि
कोडित ब्लॉक पैटर्न इंगित करता है कि मैक्रोब्लॉक के भीतर कौन से ब्लॉक में कोडित गुणांक हैं
क्वांटाइज़र पैरामीटर कॉन्टेक्स्ट फ़्रेम QP के पिछले मान से डेल्टा मान के रूप में प्रेषित
कॉन्टेक्स्ट फ़्रेम सूचकांक अंतर-पूर्वानुमान के लिए कॉन्टेक्स्ट फ़्रेम की पहचान करें
मोशन वेक्टर अनुमानित गति वेक्टर से अंतर (एमवीडी) के रूप में प्रेषित
अवशिष्ट डेटा प्रत्येक 4×4 या 2×2 ब्लॉक के लिए गुणांक डेटा


सीएवीएलसी उदाहरण

एलिमेन्ट मान कोड
coeff_token TotalCoeffs=5, T1s=3 0000100
T1 sign (4) + 0
T1 sign (3) - 1
T1 sign (2) - 1
Level (1) +1 (use Level_VLC0) 1
Level (0) +3 (use Level_VLC1) 0010
TotalZeros 3 111
run_before(4) ZerosLeft=3; run_before=1 10
run_before(3) ZerosLeft=2; run_before=0 1
run_before(2) ZerosLeft=2; run_before=0 1
run_before(1) ZerosLeft=2; run_before=1 01
run_before(0) ZerosLeft=1; run_before=1 No code required; last coefficient.
कोड एलिमेन्ट मान आउटपुट सरणी
0000100 coeff_token Total Coeffs=5, T1s=3 Empty
0 T1 sign + 1
1 T1 sign - −1, 1
1 T1 sign - −1, −1, 1
1 Level +1 1, −1, −1, 1
0010 Level +3 3, 1, −1, −1, 1
111 TotalZeros 3 3, 1, −1, −1, 1
10 run_before 1 3, 1, −1, −1, 0, 1
1 run_before 0 3, 1, −1, −1, 0, 1
1 run_before 0 3, 1, −1, −1, 0, 1
01 run_before 1 3, 0, 1, −1, −1, 0, 1

निम्नलिखित सभी उदाहरणों में, हम मानते हैं कि तालिका Num-VLC0 का उपयोग coeff_token को एनकोड करने के लिए किया जाता है।

4x4CAVLC.svg

0, 3, 0, 1, −1, −1, 0, 1, 0…

कुल गुणांक = 5 (उच्चतम आवृत्ति [4] से न्यूनतम आवृत्ति [0] तक अनुक्रमित)

टोटलज़ीरोस = 3

T1s = 3 (वास्तव में 4 अनुगामी हैं लेकिन केवल 3 को "विशेष" के रूप में एन्कोड किया जा सकता है)

एन्कोडिंग:

इस ब्लॉक के लिए प्रेषित बिटस्ट्रीम 000010001110010111101101 है।

डिकोडिंग: जैसा कि नीचे दिखाया गया है, आउटपुट ऐरे को डिकोड किए गए मानों से "निर्मित" किया गया है। प्रत्येक चरण में आउटपुट ऐरे में जोड़े गए मानों को रेखांकित किया गया है।

डिकोडर ने दो शून्य डाले हैं; चूंकि, टोटलज़ीरोस 3 के बराबर है और इसलिए न्यूनतम गुणांक से पहले एक और 1 शून्य डाला जाता है, जिससे अंतिम आउटपुट सरणी बनती है: 0, 3, 0, 1, −1, −1, 0, 1

यह भी देखें

बाहरी संबंध