कॉन्टेक्स्ट-अडाप्टिव बाइनरी अरिथमेटिक कोडिंग

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

एल्गोरिदम
सीएबीएसी अरिथमेटिक कोडिंग पर आधारित है, इसे वीडियो एन्कोडिंग स्टैंडर्ड की नीड्स अडेप्ट करने के लिए कुछ इनोवेशन और चेंज के साथ:

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

सीएबीएसी में डिफरेंट संदर्भों के लिए कई प्रोबेबिलिटी मोड हैं। यह सबसे पहले सभी नॉन-बाइनरी नंबर सिस्टम सिंबल को बाइनरी में परिवर्तित करता है। फिर, प्रत्येक बिट के लिए, कोडर सिलेक्शन करता है कि किस प्रोबेबिलिटी मॉडल का उपयोग करना है, फिर प्रोबेबिलिटी एस्टीमेट को ऑप्टिमाइज़ करने के लिए आस-पास के एलिमेंट से इन्फॉर्मेशन का उपयोग करता है। डेटा को कंप्रेस करने के लिए अंततः अरिथमेटिक कोडिंग लागू की जाती है। कॉन्टेक्स्ट मॉडलिंग कोडिंग सिंबल की कंडीशनल प्रोबेबिलिटी का एस्टीमेट प्रदान करता है। सूटेबल कॉन्टेक्स्ट मॉडल को यूटीलाइज़ करते हुए, एन्कोड करने के लिए करंट सिंबल के नेबर में पहले से कोडित सिंबल के अनुसार डिफरेंट प्रोबेबिलिटी मॉडल के बीच स्विच करके दिए गए इंटर-सिंबल अतिरेक का लाभ उठाया जा सकता है। सीएवीएलसी एन्ट्रापी कोडिंग विधि की तुलना में सीएबीएसी की बिट दर में लगभग 10% की बचत के लिए कॉन्टेक्स्ट मॉडलिंग रीस्पोंसिबल है।

डेटा सिंबल को कोड करने में निम्नलिखित चरण सम्मिलित होते हैं।
 * बाइनराइजेशन: सीएबीएसी बाइनरी अरिथमेटिक कोडिंग का उपयोग करता है जिसका अर्थ है कि केवल बाइनरी डिसीज़न (1 या 0) एन्कोड किए गए हैं। एक नॉन-बाइनरी-वैल्यूड सिंबल (उदाहरण के लिए एक ट्रांसफॉर्म कोफीशिएंट या मोशन वेक्टर) को अरिथमेटिक कोडिंग से पहले बाईनरीज़ या बाइनरी कोड में परिवर्तित किया जाता है। यह प्रोसेस डेटा सिंबल को एक वेरिएबल लेंथ कोड में परिवर्तित करने की प्रोसेस के समान है लेकिन ट्रांसमिशन से पहले बाइनरी कोड को आगे एन्कोड किया जाता है (अरिथमेटिक कोडर द्वारा)।
 * बाइनराइज़्ड सिंबल के प्रत्येक बिट (या बिन) के लिए स्टेज रिपीट किये जाते हैं।
 * कॉन्टेक्स्ट मॉडल सिलेक्शन: एक कॉन्टेक्स्ट मॉडल बाइनराइज्ड सिंबल के एक या अधिक बॉक्स के लिए एक प्रोबेबिलिटी मॉडल है। इस मॉडल को हाल ही में कोड किए गए डेटा सिंबल के आंकड़ों के आधार पर उपलब्ध मॉडलों के सिलेक्शन में से चुना जा सकता है। कॉन्टेक्स्ट मॉडल प्रत्येक बिन के 1 या 0 होने की प्रोबेबिलिटी को स्टोर करता है।
 * अरिथमेटिक एन्कोडिंग: एक अरिथमेटिक कोडर सिलेक्टेड प्रोबेबिलिटी मॉडल के अनुसार प्रत्येक बिन को एन्कोड करता है। ध्यान दें कि प्रत्येक बिन के लिए केवल दो सब-रेंज हैं (0 और 1 के अनुरूप)।
 * प्रोबेबिलिटी अपडेट: सिलेक्टेड कॉन्टेक्स्ट मॉडल को वास्तविक कोडित मान के आधार पर अपडेट किया जाता है (उदाहरण के लिए यदि बिन मान 1 था, तो 1 s की आवृत्ति गणना बढ़ जाती है)।

उदाहरण
1. मान MVDx को बिनाराइज़ करें, डिफरेंस वेक्टर अंतर x दिशा।

बाइनराइज़्ड कोडवर्ड का पहला बिट बिन 1 है; दूसरा बिट बिन 2 है; और इसी तरह।

2. प्रत्येक बिन के लिए एक कॉन्टेक्स्ट मॉडल चुनें। पिछले कोडित एमवीडी वैल्यू के आधार पर, बिन 1 के लिए 3 मॉडलों में से एक का सिलेक्शन किया जाता है। दो -कोडेड वैल्यू वैल्यू का L1 मानदंड, उदाk, अकोर्डिंगली:

यदि ईk छोटा है, तो इस बात की बहुत अधिक प्रोबेबिलिटी है कि वर्तमान एमवीडी का मैग्नीट्यूड छोटा होगा; इसके विपरीत, यदि ईk बड़ा है तो यह अधिक प्रोबेबिलिटी है कि वर्तमान एमवीडी का मैग्नीट्यूड बड़ा होगा। हम तदनुसार एक प्रोबेबिलिटी टेबल (कॉन्टेक्स्ट मॉडल) का सिलेक्शन करते हैं। शेष डिब्बे को 4 अतिरिक्त कॉन्टेक्स्ट मॉडलों में से एक का उपयोग करके कोडित किया गया है:

3. प्रत्येक बिन को एन्कोड करें। सिलेक्टेड कॉन्टेक्स्ट मॉडल दो प्रोबेबिलिटी एस्टीमेट प्रदान करता है: प्रोबेबिलिटी कि बिन में "1" है और प्रोबेबिलिटी है कि बिन में "0" है। ये एस्टीमेट उन दो सब-रेंज को निर्धारित करते हैं जिनका उपयोग अरिथमेटिक कोडर बिन को एनकोड करने के लिए करता है।

4. कॉन्टेक्स्ट मॉडल अपडेट करें- उदाहरण के लिए, यदि कॉन्टेक्स्ट मॉडल 2 को बिन 1 के लिए चुना गया था और बिन 1 की वैल्यू "0" थी, तो "0" की आवृत्ति गणना बढ़ जाती है। इसका अर्थ यह है कि अगली बार जब यह मॉडल चुना जाएगा, तो "0" की प्रोबेबिलिटी थोड़ी अधिक होगी। जब किसी मॉडल की घटनाओं की कुल संख्या एक सीमा मान से अधिक हो जाती है, तो "0" और "1" के लिए फ्रीक्वेंसी काउंट को कम कर दिया जाएगा, जो वास्तव में हाल के ऑब्जरवेशन को उच्च प्रायोरिटी देता है।

अरिथमेटिक डिकोडिंग इंजन
स्टैंडर्ड में अरिथमेटिक डिकोडर का कुछ डिटेल से डिस्क्राइब किया गया है। इसके तीन विशिष्ट गुण हैं: डिकोडिंग प्रोसेस की परिभाषा कम जटिलता को फैसिलिटेट करने के लिए डिज़ाइन की गई है
 * 1) प्रोबेबिलिटी का एस्टिमेशन लीस्ट प्रोबेबल सिंबल (एलपीएस, दो बाइनरी डिसीज़न 0 या 1 में से सबसे कम संभावित) के लिए 64 अलग-अलग प्रोबेबिलिटी स्टेट के बीच एक ट्रांजीशन प्रोसेस द्वारा किया जाता है।
 * 2) सीमा R अरिथमेटिक कोडर की करंट स्टेट का प्रतिनिधित्व प्रत्येक चरण में नई रेंज का काउंट करने से पहले प्री-सेट वैल्यू की एक स्माल रेंज में किया जाता है, जिससे लुक-अप टेबल (यानी मल्टिप्लिकेशन-फ्री) का उपयोग करके नई रेंज को काउंट करना संभव हो जाता है।
 * 3) एक सिम्प्लिफाईड एन्कोडिंग के साथ डेटा सिंबल के लिए एक सिम्प्लिफाईड एन्कोडिंग और डिकोडिंग प्रोसेस को डिफाइन किया गया है।

अरिथमेटिक एन्कोडिंग और डिकोडिंग का कार्यान्वयन। कुल मिलाकर, सीएबीएसी प्रदान करता है

सीएवीएलसी-आधारित कोडिंग की तुलना में बेहतर कोडिंग दक्षता, अधिक कीमत पर अभिकलनात्मक जटिलता।

इतिहास
1986 में, आईबीएम के शोधकर्ताओं कोट्टप्पुरम एम. ए. मोहिउद्दीन और जोर्मा जोहानन रिसानन ने मल्टिप्लिकेशन-फ्री बाइनरी अरिथमेटिक कोडिंग एल्गोरिदम के लिए एक पेटेंट सबमिट किया। 1988 में, आर.बी. आर्प्स, टी.के. सहित आईबीएम अनुसंधान दल। ट्रूंग, डी.जे. लू, डब्ल्यू.बी. पेनेबेकर, एल. मिशेल और जी.जी. लैंगडन ने क्यू-कोडर नामक एक अडाप्टिव बाइनरी अरिथमेटिक कोडिंग (एबीएसी) एल्गोरिदम प्रस्तुत किया।

अबव पेटेंट और रिसर्च पेपर्स, आईबीएम और मित्सुबिशी इलेक्ट्रिक के कई अन्य पेटेंटों के साथ, बाद में सीसीआईटीटी और जॉइंट फोटोग्राफिक एक्सपर्ट ग्रुप द्वारा 1992 में जेपीईजी इमेज कम्प्रेशन फॉर्मेट के अडाप्टिव बाइनरी अरिथमेटिक कोडिंग एल्गोरिदम के बेसिस के रूप में उद्धृत किए गए थे। हालाँकि, जेपीईजी फ़ाइल फॉर्मेट के एनकोडर और डिकोडर, जिनमें हफ़मैन एन्कोडिंग और अरिथमेटिक कोडिंग दोनों के ऑप्शन हैं, सामान्यतः केवल हफ़मैन एन्कोडिंग ऑप्शन को सपोर्ट करते हैं, जो मूल रूप से पेटेंट कंसर्न के कारण था, हालाँकि जेपीईजी के अरिथमेटिक कोडिंग पेटेंट जेपीईजी स्टैंडर्ड की उम्र के कारण यह समाप्त हो चुका है। मोशन वीडियो कम्प्रेशन में अडाप्टिव बाइनरी अरिथमेटिक कोडिंग का पहला उपयोग 1989 में आईबीएम साइंटिस्ट द्वारा एमपीईजी समूह के एक प्रस्ताव में किया गया था। इस प्रस्ताव ने इंट्राफ्रेम जेपीईजी से इंटरफ्रेम वीडियो कोडिंग तक अरिथमेटिक कोडिंग के उपयोग को बढ़ाया।

1999 में, यंगजुन यू (टेक्सस इंस्ट्रूमेंट्स), यंग गैप क्वोन और एंटोनियो ओर्टेगा (दक्षिणी कैलिफोर्निया विश्वविद्यालय) ने बाइनरी अरिथमेटिक कोडिंग का एक कॉन्टेक्स्ट-अडाप्टिव रूप प्रस्तुत किया। आधुनिक कॉन्टेक्स्ट-अडाप्टिव बाइनरी अरिथमेटिक कोडिंग (सीएबीएसी) एल्गोरिदम को 2003 में H.264/एमपीईजी-4 एवीसी फॉर्मेट के साथ प्रोफेशनल रूप से रिप्रेजेंट किया गया था। एवीसी फॉर्मेट के लिए मैक्सिमम पेटेंट पैनासोनिक, गोडो कैशा आई- पी ब्रिज और एलजी इलेक्ट्रॉनिक्स के पास हैं।

यह भी देखें

 * अरिथमेटिक कोडिंग
 * आधार - सामग्री संकोचन
 * लॉसलेस कम्प्रेशन
 * कॉन्टेक्स्ट-अडाप्टिव वेरिएबल-लंबाई कोडिंग|कॉन्टेक्स्ट-अडाप्टिव वेरिएबल-लंबाई कोडिंग (सीएवीएलसी)