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

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

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

CABAC में विभिन्न संदर्भों के लिए कई संभाव्यता मोड हैं। यह सबसे पहले सभी गैर-बाइनरी अंक प्रणाली प्रतीकों को बाइनरी में परिवर्तित करता है। फिर, प्रत्येक बिट के लिए, कोडर चयन करता है कि किस संभाव्यता मॉडल का उपयोग करना है, फिर संभाव्यता अनुमान को अनुकूलित करने के लिए आस-पास के तत्वों से जानकारी का उपयोग करता है। डेटा को संपीड़ित करने के लिए अंततः अंकगणित कोडिंग लागू की जाती है। संदर्भ मॉडलिंग कोडिंग प्रतीकों की सशर्त संभावनाओं का अनुमान प्रदान करता है। उपयुक्त संदर्भ मॉडल का उपयोग करते हुए, एन्कोड करने के लिए वर्तमान प्रतीक के पड़ोस में पहले से कोडित प्रतीकों के अनुसार विभिन्न संभाव्यता मॉडल के बीच स्विच करके दिए गए अंतर-प्रतीक अतिरेक का फायदा उठाया जा सकता है। CAVLC एन्ट्रापी कोडिंग विधि की तुलना में CABAC की बिट दर में लगभग 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" के लिए आवृत्ति गणना को कम कर दिया जाएगा, जो वास्तव में हाल के अवलोकनों को उच्च प्राथमिकता देता है।

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

इतिहास
1986 में, आईबीएम के शोधकर्ताओं कोट्टप्पुरम एम. ए. मोहिउद्दीन और जोर्मा जोहानन रिसानन ने गुणन-मुक्त बाइनरी अंकगणित कोडिंग एल्गोरिदम के लिए एक पेटेंट दायर किया। 1988 में, आर.बी. आर्प्स, टी.के. सहित आईबीएम अनुसंधान दल। ट्रूंग, डी.जे. लू, डब्ल्यू.बी. पेनेबेकर, एल. मिशेल और जी.जी. लैंगडन ने क्यू-कोडर नामक एक अनुकूली बाइनरी अंकगणित कोडिंग (एबीएसी) एल्गोरिदम प्रस्तुत किया। उपरोक्त पेटेंट और शोध पत्र, आईबीएम और मित्सुबिशी इलेक्ट्रिक के कई अन्य पेटेंटों के साथ, बाद में सीसीआईटीटी और संयुक्त फोटोग्राफिक विशेषज्ञ समूह द्वारा 1992 में जेपीईजी छवि संपीड़न प्रारूप के अनुकूली बाइनरी अंकगणित कोडिंग एल्गोरिदम के आधार के रूप में उद्धृत किए गए थे। हालाँकि, JPEG फ़ाइल प्रारूप के एनकोडर और डिकोडर, जिनमें हफ़मैन एन्कोडिंग और अंकगणित कोडिंग दोनों के विकल्प हैं, आमतौर पर केवल हफ़मैन एन्कोडिंग विकल्प का समर्थन करते हैं, जो मूल रूप से पेटेंट चिंताओं के कारण था, हालाँकि JPEG के अंकगणित कोडिंग पेटेंट जेपीईजी मानक की उम्र के कारण यह समाप्त हो चुका है। गति वीडियो संपीड़न में अनुकूली बाइनरी अंकगणित कोडिंग का पहला उपयोग 1989 में आईबीएम शोधकर्ताओं द्वारा एमपीईजी समूह के एक प्रस्ताव में किया गया था। इस प्रस्ताव ने इंट्राफ्रेम जेपीईजी से इंटरफ्रेम वीडियो कोडिंग तक अंकगणितीय कोडिंग के उपयोग को बढ़ाया।

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

यह भी देखें

 * अंकगणित कोडिंग
 * आधार - सामग्री संकोचन
 * दोषरहित संपीड़न
 * संदर्भ-अनुकूली चर-लंबाई कोडिंग|संदर्भ-अनुकूली चर-लंबाई कोडिंग (CAVLC)