一种avs视频编码中的编码比特数估计方法及其装置的制作方法

文档序号:7927544阅读:192来源:国知局
专利名称:一种avs视频编码中的编码比特数估计方法及其装置的制作方法
技术领域
本发明涉及一种AVS视频编码中的编码比特数估计方法及其装置,该方法主要使用在 信源处理领域,尤其是视频编解码领域。
背景技术
在视频编解码里,运动估计和模式决策部分都存在着对不同模式的视频进行取舍。第 二代音视频标准提出了基于RDO (Rate-Distortion Optimization)的代价函数OD+入R。 其中D表示视频的失真度,R表示编码视频所需要的比特数,A表示D和R的权重因子, 是拉格朗日常数。
AVS标准是拥有独立产权和自主创新技术的新型视频编码技术,目前视频部分(AVS-P2) 已经正式成为国家标准。AVS视频编码采用了 16x16, 16x8, 8x16, 8x8, direct以及intra6 种预测编码模式。由于预测的模式繁多,在实时编码中,单位时间内要处理大量的数据信 息。尽管硬件加速能给整个编码器带来执行速度上的优势,但是对于高清尺寸的视频处理 也面临时间和面积的挑战。本发明是AVS编码器硬件加速实现中的重要环节,编码器中, RD0的复杂度大约占整个编码器复杂度的40%,这个过程主要是对各种预测模式的数据进 行处理,计算出每种预测模式的代价。
第一代音视频标准里,人们只考虑到了视频的失真度D,并用D的大小来决定该采用那 种预测模式,这种决策方式虽然给视频质量带来了很大的提高,同时也给信道带宽增加了 负载,不利于传输。在第二代音视频标准里,采用了图像质量和信道带宽相结合的思想, 提出了RDO的概念。用失真度D来衡量视频质量,比特数R来衡量所占用的信道带宽,两 者的结合极大程度的提高了编码器的整体性能。R采用的是熵编码的技术将每种模式的数 据按照熵编码的方法进行编码,以此计算每种模式所需要的比特数。RD0的决策方法给整 个编码器带来了性能的提高,同时RDO实现的高复杂度也使人们有所顾忌。在熵编码计算 R时,AVS采用了2D-VLC技术,将最容易出现的(run, level)组合统计成了 19张表格, 而这些表格在硬件实现时也需要花费高额的代价。代价函数OD+入R,是用来评价各种预测 模式的代价函数,它只需要近似逼近真实代价就行了,并不需要真正的D和R。本发明就 是采用了一种新的方法来逼近R,这种方法基本解决了 RD0耗时太长和硬件资源过多的问

发明内容
本发明针对AVS标准的RDO模块,提供了一种高效的硬件加速实现。本发明的主要目 的在于提供一种AVS视频编码中的编码比特数估计方法及其装置,以提高编码器的速度, 减少硬件开销,从而达到编码的实时。另外,本发明是我们所设计的编码器硬件实现中的 一个模块,本模块可用于前期的运动估计和后期的模式决策两个部分。
其中,模式决策占整个编码器复杂度的30%,它的作用是计算每种模式的代价,选择 代价最小的模式作为最后编码的模式。这里代价函数定义为C=D+XR,其中D表示编码 的失真,R表示表示系数所需要的位宽(比特数)。位宽R的计算与熵编码器相关,但实 际上不真正产生码流输出。正因为如此,本发明采用了一种新的方法近似的R来逼近真实 的R。
本发明的技术方案为
一种AVS视频编码中的编码比特数估计方法,其步骤为
1) 将变换块的量化系数分组并行输入输出于两寄存器组;
2) 同一时钟内计算每组量化系数的编码系数(run, level);
3) 对编码系数(nm, level)中的run和level分别进行编码,计算该编码系数的编 码比特数;
4) 加和上述编码系数的编码比特数,得到整个变换块的编码系数(run, level)的编 码比特数。
所述量化系数分组并行输入输出于两寄存器组的方法为
1) 将所述量化系数以所在变换块的行为单位进行分组;
2) 在一个时钟内将一组量化系数存入一寄存器组;
3) 将该变换块按组全部并行输入到该寄存器组后,在下一时钟从该寄存器组按照 zig-zag的顺序按组并行输出量化系数,同时从该时钟开始将后续分组量化系数并 行输入另一寄存器组;
4) 重复上述步骤l) 3),实现两寄存器组的乒乓操作。
所述计算每组量化系数的编码系数(run, level)的方法为并行游程扫描寄存器组中 量化系数,分别对每个非零量化系数产生一个编码系数(run, level)对,对零系数产生一个(0, 0)编码系数对。
所述编码系数的level值为量化系数的绝对值;所述编码系数的run值计算方法为设 定一变量base0用于给run值赋值、 一变量basel用于记录每组量化系数末尾相邻0的个 数,和一计数器counter用于记录该变换块的行数;counter = 0, base0=0; counter I =0 时,如果basel-8,下一组量化系数的base0 = base0 +basel ,如果basel ! =8,下一组量 化系数的baseO-basel 。
所述方法中首先判断所述编码系数对是否为零,对所述非零编码系数对进行编码。 所述对编码系数(run, level)中的run和level分别进行编码时,对编码系数中的 亮度数据采用2阶Golomb编码,对编码系数中的色度数据采用0阶Golomb编码。
所述方法中采用公式Golomb (run) =Golomb(2run+60) - Golomb (59)计算所述run值的 比特数;采用公式Golomb (level)计算所述level值的比特数。
一种AVS视频编码中的编码比特数估计装置,其特征在于包括依次连接的数据存储模 块、扫描模块、Golomb模块、比特数加和模块;
所述数据存储模块用于存储量化后的量化系数,其包括两存储矩阵用来实现数据 输入输出的乒乓操作;
所述扫描模块用于对所述数据存储模块的输出数据进行zig-zag扫描,得到每个 像素的编码系数(run, level)对;
所述Golomb模块用于计算所述扫描模块输出的编码系数(run, level)的编码比特
数;
所述比特数加和模块用于加和Golomb编码后的编码比特数,得到整个变换块的比特数。
所述Golomb模块包括3个多路选择器、l个移位器、3个加法器和2个级联比较 器,其连接关系为所述3个多路选择器的选择信号输入端分别与数据类型数据线连 接,且所述一多路选择器MUX0的输入端分别与数据64和61输入端连接,所述一多 路选择器MUX1的输入端分别与数据1和4连接,所述一多路选择器MUX2分别与数 据一9和一11连接;所述移位器输入端与所述编码系数的run值输出端连接;所述移位器输出端和所述多路选择器MUX0的输出端分别与一加法器输入端连接,且该加法器 输出端与一所述级联比较器输入端连接;所述多路选择器MUX1输出端和所述编码系 数的level值输出端分别与另一所述加法器输入端连接,且该加法器输出端与另一所述 级联比较器输入端连接;所述2个级联比较器输出端和所述多路选择器MUX2输出端 分别与剩余的另一所述加法器输入端连接。
所述多路选择器为常数选择器,所述常数选择器的选择信号为数据类型信号;所 述数据类型包括色度数据和亮度数据。
本发明的硬件设计的方法为-
1) 并行的像素处理本发明在计算比特数R时,采用8像素并行的结构。利用2个 8x8的寄存器组,对量化后的数据进行乒乓操作,每次都是8个像素输入和8个像素输出, 以保证流水线的顺利进行。
2) 并行的zig-zag扫描传统的zig-zag是依照zig-zag的顺序进行串行扫描,而 本发明提出了一种并行扫描的硬件实现方法。使得对应于硬件的每个时钟,都会有8对
(run, level)输出。
3) 对2)所述的(run, level)进行Golomb编码传统计算比特数的方法是将所有的 (run, level)按照熵编码的步骤进行编码,得到每对(run, level)所需要的比特数。而 本发明省略了大部分熵编码的中间步骤,直接将(run, level)进行Golomb编码,节省 了大量的硬件代价。
4) 对3)所述(run, level)编码后的比特数进行调节由于本发明采用了 3)所述 的方法计算系数的比特数,与真实的比特数有一定的差别,为了使结果能更加逼近真实的 比特数,本发明对3)所述的Golomb编码做了些特殊约束,包括只对非零的系数进行编 码,亮度数据釆用2阶Golomb编码,色度数据采用0阶Golomb编码,run的比特数等于 直接编码2run + 60的比特数减去直接Golomb编码59的比特数,即 Golomb (run) =Golomb(2run+60) - Golomb (59), level的比特数等于直接Golomb编码 level的比特数,即Golomb (level)。
5) 本发明在具体实现Golorab编码时, 一改传统的查表方法,结合(run, level)的 数据大小,采用级联比较器替代了査表,提高了速度,降低了硬件资源。
本发明的模块硬件装置,包括数据存储模块,扫描模块,Golomb模块,比特数加和 模块。1) 本发明所述数据存储模块主要用来缓存量化后的系数。主要由2个8x8的数据BUFF 进行乒乓操作,工作模式是其中一个BUFF在输入数据时,另外一个BUFF输出数据,等到 8个时钟后,刚好整个变换块的数据处理完,交换两个BUFF的输入输出,完成乒乓操作。 输入时按照像素顺序输入,输出时按照zig—zag次序输出。
2) 本发明所述扫描模块主要用来对9)的输出数据进行zig-zag扫描,得到每个像素 的(run, level)。对于大小为0的像素,标识为(0, 0)。本发明同时对8个并行输入 的像素进行扫描,经过该模块处理后同时输出8对(run, level)。传统的扫描方法,只 记录大小不等于0的像素的(run, level),对等于0的像素不作处理,而且传统的zig 一zag只能串行扫描。因此本算法给整个系统带来了高效率的数据处理速度。
3) 本发明的Golomb模块主要用来计算每对(run, level)的编码比特数。部分发明在 硬件实现时用多路选择器,替代了传统的Golomb查找表,提高了速度,同时节省了硬件 资源。算法上,用Golomb(2run+60)-Golomb(59)来近似编码run的比特数,编码level 的比特数则直接用Golomb (level)近似。与传统算法相比,省略熵编码过程中的大部分模 块,节省了大量的硬件资源。
4) 本发明的比特数加和模块用于加和Golomb编码后的比特数,得到整个变换块的比 特数R。
本发明的积极效果为
在第二代视频标准中,引入了 RDO的概念很大程度的提高了视频的整体性能,然而RD0 的代价也约占了整个编码器的40%,常常使设计者在应用RDO时感到困惑。RD0设计中的R 即为编码的比特数,传统方法是利用熵编码直接编码得到比特数。在AVS标准中,仅熵编 码的复杂度就已经很高了,所以怎样用更简单的方法得到编码的比特数就成了视频领域里 研究的热点问题。本发明提出了一种并行的直接编码(run, level)的方法,去掉了传统 的串行扫描和査表。本发明数据处理能力是传统方法的8倍,面积约为传统方法的1/3。


图1.传统的AVS的RDO原理图2.传统的AVS计算比特数R的原理图3.本发明的原理图4.数据存储模块的原理(a)存储矩阵的乒乓操作示意图,(b) 正常zig-zag扫描顺序,
(c) Buff—register的对应地址, 图5.游程编码硬件流水线结构;
图6. Golomb编码的硬件流水线结构图; 图7.比特数加和模块的硬件结构图。
具体实施例方式
下面结合附图和具体实施方式
对本发明作进一步详细的说明。
为了实时处理送给RD0的数据,在硬件实现时本发明采用了 8像素并行的结构,并最大 限度地节约硬件成本和减少流水线深度。为了解决RDO硬件实现时面积过大和时钟周期不 够的问题,本发明用对传统的算法上作了修正和替换,提出了若干近似的方案,这些方案 包括并行zig-zag扫描,用选择器替换Golomb表格;算法上利用Golomb分别对run, level进行编码近似逼近传统的熵编码对(run, level)对的编码。
请参阅图3本发明的原理图。在计算比特数R时,本发明人通过大量的测试和验证, 发现分别对run, level进行编码所得比特数与利用熵编码对(run, level)进行编码所得的 比特数非常接近,在本发明中就利用这一结论进行硬件设计,极大的节省了硬件资源。按 照数据流的处理顺序,数据存储模块,扫描模块,Golomb模块,比特数加和模块下面将对 各个涉及到的模块进行详细叙述。 l.数据存储模块
变换量化后的数据位宽为12位,基于8像素并行的结构,每个8x8块的数据每次以 一行进入寄存器,为了保证8并行流水线的顺利进行,该模块釆用了两个8x8的寄存器组, 利用乒乓操作原理,将输入输出每8个时钟转换一次。下面说明存储矩阵内部的转换结构。 如图4所示。
乒乓操作模式如图4 (a)所示中,当存储矩阵A输入时,输出存储矩阵B的数据, 同理,当输出存储矩阵A时,输入存储矩阵B的数据,每8个时钟一个循环,刚好保证流 水线的顺利进行。基于本发明是并行的数据输入,为了避免在进行游程编码上顺序的冲突, 我们在存储时就将数据按照数据的顺序依次存入寄存器组,输出时就按照zig-zag的排序 输出。这种重新编排数据方式很好地解决了数据的并行处理。如图4 (b)所示,zig-zag 顺序为0, 1, 8, 16, 9, 2, 3, 10, 17, 24……,分别对应寄存器矩阵位置为0, 1, 2, 3, 4, 5, 6, 7, 8, 9……,如图4 (c)所示。以其中的一个矩阵为例,来说明数据流的时钟安排第一个时钟,将输出0, 1, 8, 16, 9, 2, 3, 10这8地址对应的数据;第二
个时钟,将输出17, 24, 32, 25, 18, 11, 4, 5......;第8个时钟,将输出53, 60, 61,
54, 47, 55, 62, 63地址对应的数据;到第9个时钟,另外一个矩阵的数据已经输入完毕, 可以转到另一个矩阵的输出了。 2.扫描模块
游程编码算法结构如图5所示,这个模块的主要功能就是将寄存器组里的数进行游程 编码,扫描矩阵的每个数,对每个非零的系数,分别产生一个(run , level)对。
level为输入系数的绝对值,可以直接对输入的系数求绝对值得到。关键是求run,由 于数据是并行输入的,所以要构造一个nm的基准变量,设为base0,假设数据是8并行 输入的,记为仏0, al, a2, a3, a4, a5, a6, a7} , base0用来表示a0前相邻0的个数, 这样如果aO不等于0, a0的run等于base0;知道了 a0的run,同一行里的a0, al, a2, a3, a4, a5, a6和a7的run就可以求得,如此,数据的并行处理就可以实现, 一个时钟 内就可以处理完一行的数据。
base0的计算按照如下方式进行-
以8并行输入为例,首先要有一个计数器counter从0到7 ,用来表示这段时钟内输 入的是同一个block的数据。很明显,在counter-0时,base0=0;其他时候baseO则是一 个变化的量,为此,可以定义另外一个变量basel, basel表示输入的该行8个数据中,最 末尾的相邻的零的个数。对于输入的8个数,例如对于0, 12, 3, 0, 0, 4., 0, 0; basel=2。 对于l, 0, 3, 0, 0, 0, 3, 7; basel =0。对于0, 0, 0, 0, 0, 0, 0, 0; basel=8。综 上所述base0可以这样确定,counter = 0, base0=0; counter ! = 0时,如果basel-8,下 一行的base0 = base0 +basel ,如果basel ! =8,下一行的baseO = basel
如图5所示,整个模块的硬件结构大致可以分为4级流水线,以8并行输入为例说明 4级流水过程
第一级,主要若干并行的比较器和一个计数器控制。使用8个比较器分别与0比较, 判断level是否等于0,记为sign—zero
;计数器counter为输入有效数据的拍数, 每8拍为同一个block 8x8的数据。
第二级,主要包括1个级联的比较器,完成找1逻辑功能。通过从sign—zero
到 sign—zero[7]找1逻辑可以得到每一行中最后一个非零的系数。也就是得到了该行最后一 个非零系数后零的个数,记了basel。
第三级,主要包括1个选择器。用来构造每行第一个系数的run值,记为base0[5:0];在counter = 0时,base0 = 0,其他时候如果basel ! = 8, base0 =basel,如果basel ==8, baseO = 8 + b雄O。
第四级,主要包括8个比较器,用来得到每个系数的(run, level),这里要说明的是传 统的zig-zag,只编码非零的系数,由于我们这里采用的是8并行的结构,所以在输入的 系数等于零时,记(rim = 0, level = 0 ),也参与编码,只不过编码需要的比特数等于0。 在第3级己经知道了每行第一个系数前的run值base0,结合sign—zero [7:0],通过比较 器很容易得到,该行每个系数的(run, level)。
3. Golomb模块
该模块主要用来计算每对(run, level)的比特数。本发明单独对run和level进行编码, 然后计算(run, level)对的比特数,通过调整后能逼近熵编码对(run, level)对的编 码比特数。算法调整主要包括编码亮度数据时用2阶Golomb码进行编码计算比特数, 编码色度数据时用零阶Golomb码进行编码计算比特数;计算run的比特数是用编码 2*run+60的比特数减去59的比特数。在利用Golomb计算比特位时,Golomb码的信息位 有如下规律
M = log2 (cofife柳附+ 2*),
其中,k表示Golomb码的编码阶数,CodeNumber表示要编码的数值,M表示编码得到 的信息位位数。从而编码CodeNumber所需要的总比特数为 M _=2M +1 — A;
在硬件实现上,本发明做了优化,直接用级联的比较器替代了传统Golomb码表。如图 6所示,主要分为4个流水级。
第一级,主要包括3个并行的多路选择器和1个移位器。Data—type表示变换块的数 据类型,当为亮度数据时采用2阶Golomb编码码,所以MUX0选通64, MUX1选通4, MUX2 选通-9,当为色度数据时采用0阶Golomb编码,所以MUX0选通61, MUX1选通1, MUX2 选通-11。移位器完成2打un。
第二级,主要包括2个加法器。完成c—rur^2承run+60+K〈k和c—level=level+l k。
第三级,主要包括2个级联的比较器。完成对c—run和c」evel的比特数计算。基于 Golomb编码的特点,对c—run和c一level由高位到低位的级联比较,即能得到编码该系数 的比特数。
第四级,主要包括l个加法器,完成编码run和level的和,即m—run+m_level。4.比特数加和模块
该模块的主要作用用来完成对当前8x8块的所有像素的比特数进行加和,求得当前块
的比特数。由于本设计是8像素并行的结构,所以本模块有8个像素的输入,硬件实现时
分为四级完成,如图7所示。
第一级,主要包括4个加法器,完成数据的8个像素各自比特数的两两相加。本设计
采用的是像素R0加R1, R2加R3, R4加R5, R6加R7。当然其他的组合也是可以的。 第二级,主要包括2个加法器,完成第一级的四个加法器输出结果的两两组合。 第三级,主要包括l个加法器,完成当前行的8个像素的比特数加和。 第四级,主要包括1个加法器和1个选择器。完成当前块8行的像素累加,并有选择
器控制当前块比特数的输出。
权利要求
1. 一种AVS视频编码中的编码比特数估计方法,其步骤为1)将变换块的量化系数分组并行输入输出于两寄存器组;2)同一时钟内计算每组量化系数的编码系数(run,level);3)对编码系数(run,level)中的run和level分别进行编码,计算该编码系数的编码比特数;4)加和上述编码系数的编码比特数,得到整个变换块的编码系数(run,level)的编码比特数。
2. 如权利要求1所述的方法,其特征在于所述量化系数分组并行输入输出于两寄存器组 的方法为-1) 将所述量化系数以所在变换块的行为单位进行分组;2) 在一个时钟内将一组量化系数存入一寄存器组;3) 将该变换块按组全部并行输入到该寄存器组后,在下一时钟从该寄存器组按照 zig-zag的顺序按组并行输出量化系数,同时从该时钟开始将后续分组量化系数并 行输入另一寄存器组;4) 重复上述步骤l) 3),实现两寄存器组的乒乓操作。
3. 如权利要求2所述的方法,其特征在于所述计算每组量化系数的编码系数(run, level) 的方法为并行游程扫描寄存器组中量化系数,分别对每个非零量化系数产生一个编 码系数(run, level)对,对零系数产生一个(0, 0)编码系数对。
4. 如权利要求3所述的方法,其特征在于所述编码系数的level值为量化系数的绝对值; 所述编码系数的run值计算方法为设定一变量base0用于给run值赋值、一变量basel 用于记录每组量化系数末尾相邻0的个数,和一计数器counter用于记录该变换块的 行数;counter = 0, base0=0; counter !=0时,如果base卜8,下一组量化系数的base0 =base0 +basel,如果basel ! =8,下一组量化系数的baseO = basel 。
5. 如权利要求3所述的方法,其特征在于首先判断所述编码系数对是否为零,对所述非 零编码系数对进行编码。
6. 如权利要求5所述的方法,其特征在于所述对编码系数(run, level)中的run和level 分别进行编码时,对编码系数中的亮度数据采用2阶Golomb编码,对编码系数中的色 度数据采用O阶Golomb编码。
7. 如权利要求 6 所述的方法,其特征在于采用公式 Golomb(run)=Golomb(2run+60) -Golomb(59)计算所述run值的比特数;采用公式 Golomb(level)计算所述level值的比特数。
8. —种AVS视频编码中的编码比特数估计装置,其特征在于包括依次连接的数据存储模 块、扫描模块、Golomb模块、比特数加和模块;所述数据存储模块用于存储量化后的量化系数,其包括两存储矩阵用来实现数据 输入输出的乒乓操作;所述扫描模块用于对所述数据存储模块的输出数据进行zig-zag扫描,得到每个 像素的编码系数(run, level)对;所述Golomb模块用于计算所述扫描模块输出的编码系数(run, level)的编码比特数;所述比特数加和模块用于加和Golomb编码后的编码比特数,得到整个变换块的比 特数。
9. 如权利要求8所述的装置,其特征在于所述Golomb模块包括3个多路选择器、1个移 位器、3个加法器和2个级联比较器,其连接关系为所述3个多路选择器的选择信号 输入端分别与数据类型数据线连接,且所述一多路选择器MUXO的输入端分别与数据 64和61输入端连接,所述一多路选择器MUX1的输入端分别与数据1和4连接,所 述一多路选择器MUX2分别与数据一9和一ll连接;所述移位器输入端与所述编码系 数的run值输出端连接;所述移位器输出端和所述多路选择器MUX0的输出端分别与 一加法器输入端连接,且该加法器输出端与一所述级联比较器输入端连接;所述多路 选择器MUX1输出端和所述编码系数的level值输出端分别与另一所述加法器输入端连 接,且该加法器输出端与另一所述级联比较器输入端连接;所述2个级联比较器输出 端和所述多路选择器MUX2输出端分别与剩余的另一所述加法器输入端连接。
10.如权利要求9所述的装置,其特征在于所述多路选择器为常数选择器,所述常数选择 器的选择信号为数据类型信号;所述数据类型包括色度数据和亮度数据。
全文摘要
本发明公开了一种AVS视频编码中的编码比特数估计方法及其装置,属于视频编解码领域。本发明的方法为首先将变换块的量化系数分组并行输入输出于两寄存器组;然后在同一时钟内计算每组量化系数的编码系数(run,level);再对编码系数(run,level)中的run和level分别进行编码计算编码比特数;最后加和上述Golomb编码的比特数,得到整个变换块的编码系数(run,level)的编码比特数。本发明的装置包括依次连接的数据存储模块、扫描模块,Golomb模块、比特数加和模块。与现有技术相比,本发明去掉了传统的串行扫描和查表。本发明数据处理能力是传统方法的8倍,面积约为传统方法的1/3。
文档编号H04N7/32GK101420620SQ20081022545
公开日2009年4月29日 申请日期2008年10月31日 优先权日2008年10月31日
发明者兴 张, 彭小明, 健 曹, 曹喜信 申请人:北京大学软件与微电子学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1