CABAC

article/2025/10/5 11:05:11

CABAC

   CABAC(上下文自适应的二进制算术编码)基于算术编码,在HEVC中,除了参数集、SEI和slice头部之外,其余的所有数据都使用CABAC来进行熵编码。

1.4.1 原理

主要包括三个步骤:

二进制化;

上下文建模;

二进制算术编码;

其流程如下:

在这里插入图片描述

二进制化就是将一个给定的非二进制元映射成一个二进制序列。

二元算术编码有常规编码模式和旁路编码模式两种。

常规编码模式(Regular Coding  Mode):语法元素的二元位(Bin)顺序进入上下文模型器。编码器根据之前编码过的值为 每一个输入的二元位分配合适的概率模型,这个过程叫做”上下文建模“,再将Bin和分配给它的概率模型一起送到二元算术编码器进行编码;编码器根据Bin值更新上下文模型,这个叫”编码中的自适应“旁路编码模式(Bypass Coding Mode):输入的Bin直接用一个旁路编码器进行编码即可。

上下文建模:

条件熵理论下,作为条件的已编码符号信息称为上下文——应用要有针对性

高概率发生的对编码性能影响起主导作用的事件,建立精致的上下文模型,增加上下文概率的阶数以达到精细的条件估计

低概率发生的对编码性能影响不大的事件,建立简单的上下文模型

1.4.2 HEVC中的CABAC

二进制化:

理论上,HEVC的二进制方法有:

1、一元码 2、截断一元码 3、K阶指数哥伦布二元化(EGK)4、截断莱斯二元化(TR)5、定长二元化(FL)

一元码

假设语法的元素值是x,那么它对应的一元码由前缀x个1和后缀一个0构成:11...10。假设x=5,那么它的一元码是111110

截断一元码

1、把语法元素之转换成一元码,假如语法元素值是x,那么它的一元码由起始的x个1和最后一个0组成。2、给定一个最大的可能值cMax,bins的长度不能超过cMax,如果超过,那么就对bins的尾部进行截断

例如,给定一个语法元素的值是5,cMax是4

    (1)5对应的一元码是111110(2)由于一元码的长度大于cMax,因此需要对它进行截断(3)截断之后为1111,因此5对应的截断一元码是1111(当cMax等于4时)

截断莱斯二进制化(TR)——前缀+后缀

cMax——门限值

R——莱斯参数

V——语法元素值

前缀:

P=V>>R

P小于值(cMax>>R),前缀P个1和一个0组成

P大于值(cMax>>R),前缀(cMax>>R)个1组成

V<cMax ,后缀值S=V-(P<<R)

后缀值为S的二元化串

V>=cMax,无后缀码

定长二进制化

语法元素的值为x,且0<=x<=Max,十进制转换为二进制即可。

上下文模型

一般情况下,不同的语法元素之间并不是完全独立的,因此可以根据已经编码的语法元素进行条件编码,这就是所谓的上下文。这些上下文信息通常做成表格。

 ①在编码过程中,语法元素使用的上下文概率模型都被唯一的上下文索引号r标识,每一个r涉及两个概率模型变量:最大概率符号MPS和概率状态索引。MPS表示待编码的Bin很有可能出现的符号(0或1);与之对应的,待编码的Bin不可能出现的符号即为最小概率符号LPS。②在CABAC中,为LPS的概率设置了64个代表值,每一个都与LPS一一对应。③编码器会初始化上下文模型的符号变量MPS和δ④在获取初始的概率模型变量后,即可对当前符号(或语法元素)进行二元算数编码和概率模型参数更新,实现上下文自适应的编码。⑤更新的方法:如果编码的符号等于MPS,那么通过查表更新

= transIdxMps(

否则,如果

否则只更新

= transIdLps(

附上个人理解
在这里插入图片描述

二进制

  • 算术编码

有两种模式:常规模式,旁路模式。

 1、常规模式。假设当前编码器的区间长度是R,区间下限是L。①计算索引值=(R>>6)&3②查表得到LPS对应的子区间=rangeTabLps[][],那么=R-③如果当前的二进制符号Bin等于MPS,则作为下一个符号的编码区间R,下限L不变;如果Bin等于LPS,那么作为下一个符号的编码区间R,区间下限L要加上的长度。然后更加当前符号值更新上下文。2、旁路模式。这种模式无需对概率进行自适应更新,而是采用0和1概率各占0.5的固定概率进行编码。为了是区间划分更加简单,才用了保存编码区间长度不变,使下限L值加倍的方法来实现区间划分。

http://chatgpt.dhexx.cn/article/EZWZi9iW.shtml

相关文章

【Redis】 - Redis 6.0 新特性之客户端缓存

Redis 6.0 新特性之客户端缓存 1. 为什么需要客户端缓存1.1 低延迟和大规模提供数据服务1.2 其他 cache 层 2. Redis 中的客户端缓存2.1 什么样的数据集应该被客户端缓存2.2 客户端缓存的两个主要优点 3. 缓存的数据一致性问题4. Redis 客户端缓存的实现原理4.1 普通模式4.1.1 …

MCAST是什么?(播协议通信程序)

看海康isapi.pdf文档看到的&#xff0c;不懂什么意思 播协议通信程序&#xff0c;用于测试在局域网或者在三层交换机架构下进行通信测试 Multicast Protocol communications procedures, for testing in the local area network or switches in the three-tier framework for …

一、Broadcast简介

Android广播&#xff08;Broadcast&#xff09; 一、Broadcast简介 Broadcast是android中的四大组件之一&#xff0c;是在组件之间传播数据&#xff08;Intent&#xff09;的一种机制。广播的发送者和接收者事先是不需要知道对方的存在的。这样带来的好处便是&#xff0c;系统的…

BCSP

BCSP 包的类型 有4种类型&#xff0c;Sync,Sync-Resp,Conf,Conf-Resp Sync: {0xda,0xdc,0xed,0xed} Sync-Resp: {0xac,0xaf,0xef,0xee} Conf: {0xad,0xef,0xac,0xed} Conf-Resp: {0xde,0xad,0xd0,0xd0} 上面2图式BCSP的行为和状…

MPI MPI_Bcast (广播)用法详解

函数范式 int MPI_Bcast(void * data_p;int count;MPI_Datatype datatype;int source_proc;MPI_Comm comm; );功能描述&#xff1a; 一个广播发生的时候&#xff0c;一个进程会把同样一份数据传递给一个 communicator 里的所有其他进程。根节点调用 MPI_Bcast 函数的时候&…

关于inet addr(网络地址)、bcast(广播地址)、mask(子网掩码)的学习

int addr:网络地址。IP地址和子网掩码进行相与运算&#xff0c;将运算结果中的网络地址不变&#xff0c;主机地址变为0&#xff0c;即主机号全0是网络地址。示例: 如果是192的C段地址&#xff0c;那么网络地址就是&#xff1a;192.168.1.0&#xff0c;地址掩码是&#xff1a;25…

错误码415

POST请求报错&#xff1a; “status”: 415, “error”: “Unsupported Media Type”, “message”: "Content type app charlse 错误码 415表示不支持内容类型。 错误原因 没有正确设置内容类型标头。 正确做法 检查 content-type

发送HTTP请求返回415状态码的解决办法

1.问题出现&#xff1a; 在用POST方式携带token访问一个API接口时&#xff0c;发现返回状态码为415&#xff0c;错误信息为“Unsupported Media Type” 2.分析原因&#xff1a; 415错误的解释是说&#xff0c;服务器无法处理请求附带的媒体格式&#xff0c;不明白什么意思&am…

http post 415错误

前面在spring boot项目中&#xff0c;进行前后端数据交互时突然遇到了415错误。一时间有点懵&#xff0c;在网上找了一些资料&#xff0c;总算是知道为什么了&#xff0c;不多说&#xff0c;直接上图。 这是正常的form提交的数据。 debug之后能够服务器能够正常的接收数据。 当…

http405错误解决

问题描述&#xff1a;在使用vue框架和spring boot进行前后端分离开发时&#xff0c;出现405错误。 解决思考&#xff1a; 分析&#xff1a;我们知道&#xff0c;一般4开头的错误基本都是前端的问题&#xff0c;或者是浏览器的问题。而且我之前使用了swagger对后端接口进行了测…

415错误如何解决

415错误可能是由于前端传输的格式不对引起的 我这里是因为传的json字符串 更正前 错误 只要加上一行&#xff1a; contentType: application/json;charsetutf-8,问题解决

【前后端异常】axios post请求 解决返回415状态码的错误

错误描述&#xff1a; 进行有文件的表单提交时出现415错误&#xff0c;以前没遇到过记录一下 415错误的解释是说&#xff0c;服务器无法处理请求附带的媒体格式。以下是HTTP的状态码关于415返回码的说明&#xff1a; 415Unsupported Media Type服务器无法处理请求附带的媒体格…

JMeter 请求报Response code:415错误

jmeter做压测时&#xff0c;调用某个接口时报415&#xff1a; 然后用postman调同样的接口&#xff0c;传相同的参数&#xff0c;请求接口返回的数据正常&#xff1a; 怎么回事讷&#xff1f;&#xff1f;&#xff1f;&#xff1f; 其实啊&#xff0c;仔细看一下结果树里面给我…

axios请求415错误Uncaught (in promise) Error: Request failed with status code 415

Uncaught (in promise) Error: Request failed with status code 415 错误如下图 前端代码&#xff08;vue&#xff09;&#xff1a; var data {username: this.loginForm.username,password: this.loginForm.password}this.$axios.post(this.GLOBAL.host /login, this.$q…

http409 415报错原因

409 今天一个同事的接口突然报409,大概百度了一下,不是很清楚,谷歌也没找到特别好的解释 因为是直接调用的gitlab,就直接看了下gitlab的api The following table shows the possible return codes for API requests. Return valuesDescription200 OKThe GET, PUT or DELETE re…

ajax请求415错误

1.ajax请求服务器报415错误多半是ajax的请求格式不对,服务器不支持此媒体类型, 那么,此时你首先小检查自己的ajax的格式是否正确,在就是传递的参数类型是否是正确的(传递给服务器的参数也要根据后台的要求设置,有时传递一个对象,但有时要将对象转换为json字符串),下面举两个典…

Uncaught (in promise) Error: Request failed with status code 415

今天在做接口对接的时候&#xff0c;出现了415这个错误&#xff0c;这个坑改了好久&#xff0c;记录一下 我首先用swagger测试了一下数据&#xff0c;是可以成功的 这样可以猜测错误应该出现在前端axios请求过程中了 但是前端也确定发送的请求没问题&#xff0c;又检查了一下&a…

415错误解决方案

springboot框架 用mybatis-plus自动生成代码&#xff0c;做一个前端注册功能报415错误 后端发现去掉ResponseBody即可

http 415 错误

一、 场景 在公司做后台管理项目的时候&#xff0c;客户要求某一数据列表要有 勾选导出 和 全部导出&#xff0c;在我添加完 勾选功能导出的时候&#xff0c;控制台报了这样一个错误。 二、 原因 造成415错误的方式大概有两种&#xff1a; 数据请求的 contentType 与后端不…

HTTP请求返回415错误码定位解决

今天在工作中&#xff0c;发现我再调用外部API接口的时候&#xff0c;发现一个奇怪的问题&#xff0c;就是我Eclipse中写代码调用外部API接口时返回HTTP状态码是415&#xff0c;但是我将相同的报文放在HttpRequester里面请求的时候却又可以拿到正常返回结果&#xff0c;而不是4…