一种适用于AVS编码的帧内预测装置及预测方法
技术领域
本发明涉及一种数字视频编码技术,尤其涉及一种适用于AVS编码的帧内预测装置及预测方法。
背景技术
AVS(Audio Video coding Standard)是由我国自主制定的数字音视频编解码技术标准,帧内预测是提高编码效率的技术手段之一,是利用当前块的相邻像素直接对每个系数做预测,更有效地去除相邻块之间的相关性,从而极大地提高帧内编码的效率。AVS视频标准9.4.2定义了帧内预测模式,9.8定义了帧内预测公式和参考像素的定义,AVS帧内预测包括亮度帧内预测和色度帧内预测,其中亮度有5种预测方式,分别为垂直(Vertical)预测模式、水平(Horizontal)预测模式、DC预测模式、左下(Down_Left)预测模式、右下(Down_Right)预测模式,色度有4种预测方式。帧内预测数据量和计算量非常大,且是整个系统运行的瓶颈之一,要提高编码性能,并达到实时高清编码的要求,是帧内编码技术要解决的关键问题。
经对现有文献的检索以及调研发现:市面上现有的AVS编码器产品,均为标清编码器,尚不能实现实时高清要求。根据高清编码实现的需求,如对通过每个宏块(包括亮度和色度)的处理时间的要求,硬件实现编码是较好的技术手段。在FPGA芯片的工作频率为100MHz时,每个宏块(包括亮度和色度)的处理时间time的计算如下:
也就是说,对于高清实时编码,每个宏块(包括对应的亮度和色度)的处理时间必须小于409cycles。
发明内容
本发明所解决的技术问题是提供一种适用于AVS编码的帧内预测装置及预测方法,其工作的时钟频率能达150MHz,完成一个宏块的帧内预测过程只需要将近360个时钟周期,完全能满足实时高清视频(1080i)的实时编码要求。
为了解决上述技术问题,本发明采用了如下技术手段:一种适于AVS的帧内预测装置,包含变换量化模块和反变换反量化模块,重建图像SRAM和片内SDRAM,所述预测装置还包含主控制器、计算模块、选择器和模式判决模块,其中:
主控制器,用于产生控制信号,实现计算模块和模式判决模块间的数据同步,产生预测模式号和预测模式指针号并分别输出至模式判决模块和计算模块;
计算模块,根据接收到的预测模式指针号以及从重建图像SRAM中读取的重建值,计算不同预测模式下的预测值,并将预测值分别输出至模式判决模块和选择器;
选择器,用于对计算模块输出的至少一个预测值进行选择,并输出给重建图像SRAM;
模式判决模块,根据预测值和片内SDRAM中读取的原始图像值进行差值计算,得到残差值,并通过判决方法得到最佳模式号并输出,所述残差值通过变换量化模块和反变换反量化模块后输入重建图像SRAM,为编码作好准备。
所述的适于AVS的帧内预测装置,所述的计算模块中的预测模式号与预测模式指针号相对应,并存放在一个ROM中。
所述的适于AVS的帧内预测装置,所述的计算模块包括5路并行计算单元。所述的并行计算单元可以基于统一的计算架构,即求和移位运算,表达式为:(a+2b+c+d)>>i,其中a、b、c、d、i均为可重配置计算参数,分布在架构中的寄存器单元,a、b、c、d为计算数据输入参数,i为右移次数。
本发明提供的另一个技术方案是基于AVS的帧内预测装置的预测方法,所述方法完成宏块及宏块的子块的预测和重建,所述的每个宏块包含亮度子块0、1、2和3以及色度子块4和5,所述方法包含以下步骤:
步骤一、预测当前宏块的亮度子块0并重建,得到亮度子块0的重建值;
步骤二、预测当前宏块的亮度子块1并重建,得到亮度子块1的重建值;
步骤三、预测当前宏块的亮度子块2并重建,得到亮度子块2的重建值;
步骤四、预测当前宏块的亮度子块3并重建,同时,在当前宏块的亮度子块3与下一个宏块的亮度子块0的之间插入当前宏块的色度子块4和5的预测值,预测和重建按照新排列顺序进行,在得到当前宏块的亮度子块3的重建值时,也得到了色度子块4和5的重建值;
步骤五、重复步骤一至四,完成一帧图像中所有宏块的编码;
以上步骤一、二、三和四的子块预测和重建的具体实现过程如下:
步骤a、主控制器提供预测模式指针号给计算模块,提供对应的预测模式号、控制信号和参数给模式判决模块;
步骤b、计算模块根据接收到的预测模式指针号以及从重建图像SRAM中读取的上一个重建值,利用统一的预测计算架构进行5路并行操作,同时输出5组预测值,保存到存储器中;
步骤c、模式判决模块首先让5组预测值与从片内SDRAM中读取的原始图像值进行差值计算,得到5组残差值,保存到另一组存储器中;然后根据这5组残差值,利用代价函数COST进行判决,得到最小的COST,最后输出最佳模式号,并从存储器中输出最佳模式对应的残差值,由选择器输出最佳模式对应的预测值;
步骤d、变换量化模块和反变换反量化模块根据接收到的残差值,进行变换量化和反变换反量化操作,得到另一组残差值;
步骤e、将反变换反量化后得到的残差值和最佳模式对应的预测值求和,得到子块的图像重建值,保存到存储器中,即完成了子块的预测到重建的过程。
由于采用了以上的帧内预测装置及实现方法,与现有技术相比有以下优点:1)由于计算单元采用5路并行操作的结构,可以大大减少宏块帧内预测所需的处理时钟数目;2)色度子块4的预测不需要等待亮度子块3的整个反馈回路,也大大节省了时钟,并且色度子块4和5的重建图像值紧跟着亮度子块3的重建值出来,而且这样预测下一个宏块的子块0时,也不受色度子块的影响。
附图说明
本发明的适于AVS的帧内预测装置及预测方法由以下的实施例及附图详细给出。
图1为本发明实施例帧内预测装置结构示意图;
图2为本发明实施例色度子块插入亮度的过程示意图。
具体实施方式
以下将对本发明的适于AVS的帧内预测装置及预测方法作进一步的详细描述。
本实施例中涉及的视频图像大小为1920*1088,采用Xilinx Virtex 4系列FPGA作为硬件开发平台,ISE8.1作为开发工具。
本实施例提供的帧内预测装置,包含变换量化模块和反变换反量化模块,重建图像SRAM和片内SDRAM,所述预测装置还包含主控制器、计算模块、选择器和模式判决模块,其中:
主控制器,用于产生控制信号(如图中虚线所示),实现计算模块和模式判决模块间的数据同步,并产生预测模式号和预测模式指针号,分别输出至模式判决模块和计算模块,表1中列出了亮度和色度子块中每种预测模式对应的预测模式指针号和预测模式号,表2中列出了一帧图像(大小为M×N)的所有宏块行中的所有子块可能出现的预测模式指针号和预测模式号。
计算模块,根据接收到的预测模式指针号以及从重建图像SRAM中读取的重建值,计算不同预测模式下的预测值,并分别输出至模式判决模块和选择器;
选择器,用于对计算模块输出的至少一个预测值进行选择,并输出给重建图像SRAM;
模式判决模块,根据计算模块输出的至少一个预测值和片内SDRAM中读取的原始图像值进行差值计算,得到残差值,并通过判决方法得到最佳模式号输出,所述残差值通过变换量化模块和反变换反量化模块后输入重建图像SRAM,为编码作好准备。
所述的适于AVS的帧内预测装置,所述主控机产生的预测模式号与预测模式指针号相对应,并存放在一个存储器ROM(未图示)中。
所述的适于AVS的帧内预测装置,所述的计算模块包括5路并行计算单元:计算1~计算5。所述的并行计算单元可以基于统一的计算架构,即求和移位运算,表达式为:(a+2b+c+d)>>i,其中a、b、c、d、i均为可重配置计算参数,分布在架构中的寄存器单元,a、b、c、d为计算数据输入参数,i为右移次数。
本发明提供的另一个技术方案是基于AVS的帧内预测装置的预测方法,所述方法完成宏块及宏块的子块的预测和重建,所述的每个宏块包含亮度子块0、1、2和3以及色度子块4和5,所述方法包含以下步骤:
步骤一、预测当前宏块的亮度子块0并重建,得到亮度子块0的重建值;
步骤二、预测当前宏块的亮度子块1并重建,得到亮度子块1的重建值;
步骤三、预测当前宏块的亮度子块2并重建,得到亮度子块2的重建值;
步骤四、预测当前宏块的亮度子块3并重建,同时,在当前宏块的亮度子块3与下一个宏块的亮度子块0之间插入当前宏块的色度子块4和5的预测值,预测和重建按照新排列顺序进行,在得到当前宏块的亮度子块3的重建值时,也得到了色度子块4和5的重建值;
步骤五、重复步骤一至四,完成一帧图像中所有宏块的编码;
配合参照图1,以上步骤一、二、三和四的子块预测和重建的具体实现过程如下:
步骤a、主控制器提供预测模式指针号给计算模块,提供对应的预测模式号、控制信号模式判决模块;
步骤b、计算模块根据接收到的预测模式指针号以及从重建图像SRAM中读取的上一个重建值,利用统一的预测计算架构由计算1~计算5五个单元进行5路并行操作,并分别将5组预测值输出至模式判决模块和选择器,同时将5组预测值保存到存储器(未图示)中,这个预测过程从重建图像值读入到预测值输出需要将近20个时钟;
步骤c、模式判决模块首先让5组预测值与从片内SDRAM中读取的原始图像值进行差值计算,得到5组残差值,保存到另一组存储器(未图示)中;然后根据这5组残差值,利用代价函数COST进行判决,得到最小的COST,最后输出最佳模式号,并从存储器中输出最佳模式对应的残差值和预测值至变换量化模块,整个模式判决过程需要将近19个时钟;
步骤d、变换量化模块和反变换反量化模块根据接收到的残差值,进行变换量化和反变换反量化操作,得到另一组残差值,该过程需要将近42个时钟;
步骤e、将反变换反量化后得到的残差值和选择器输出的最佳模式对应的预测值求和,得到子块的图像重建值,保存到存储器中,即完成了子块的预测到重建的过程,需要将近80个时钟。
由以上步骤可知,一个宏块的所有子块从预测到重建的过程共需要将近360个时钟周期,远远小于409个时钟的限制要求,所以完全能满足实时高清视频(1080i)的实时编解码要求。
表1
预测模式 |
预测模式指针号 |
亮度子块号 |
亮度帧内预测模式号 |
色度子块号 |
色度帧内预测模式号 |
亮度或色度垂直预测模式 |
0000 |
0 |
0000 |
2 |
0010 |
亮度或色度水平预测模式 |
0001 |
1 |
0001 |
1 |
0001 |
DC-全部(上、左参考样本都可用) |
0010 |
2 |
0010 |
0 |
0000 |
DC-垂直(只有上参考样本可用) |
0011 |
DC-水平(只有左参考样本可用) |
0100 |
DC-空(上、左参考样本都不可用) |
0101 |
亮度左下预测模式 |
0110 |
3 |
0011 |
- |
- |
亮度右下预测模式 |
0111 |
4 |
0100 |
- |
- |
色度平面预测模式 |
1000 |
- |
- |
3 |
0011 |
表2
宏块行号 |
宏块列号 |
子块号 |
预测模式指针号 |
预测模式号 |
0 |
0 |
0 |
0101 |
0010 |
1 |
0001 |
0001 |
0100 |
0010 |
2 |
0000 |
0000 |
0011 |
0010 |
3 |
0000 |
0000 |
0001 |
0001 |
0010 |
0010 |
0110 |
0011 |
0111 |
0100 |
4 |
0101 |
0000 |
5 |
0101 |
0000 |
|
1~119 |
0 |
0001 |
0001 |
0100 |
0010 |
1 |
0001 |
0001 |
0100 |
0010 |
2 |
0000 |
0000 |
0001 |
0001 |
0010 |
0010 |
0110 |
0011 |
0111 |
0100 |
3 |
0000 |
0000 |
0001 |
0001 |
0010 |
0010 |
0110 |
0011 |
0111 |
0100 |
4 |
0000 |
0001 |
0100 |
0000 |
5 |
0000 |
0001 |
0100 |
0000 |
1~67 |
0 |
0 |
0000 |
0000 |
0011 |
0010 |
1 |
0000 |
0000 |
0001 |
0001 |
0010 |
0010 |
0110 |
0011 |
0111 |
0100 |
2 |
0000 |
0000 |
0011 |
0010 |
3 |
0000 |
0000 |
0001 |
0001 |
0010 |
0010 |
0110 |
0011 |
0111 |
0100 |
4 |
0000 |
0010 |
0011 |
0000 |
5 |
0000 |
0010 |
0011 |
0000 |
|
1~119 |
0 |
0000 |
0000 |
0001 |
0001 |
0010 |
0010 |
0110 |
0011 |
0111 |
0100 |
1 |
0000 |
0000 |
0001 |
0001 |
0010 |
0010 |
0110 |
0011 |
0111 |
0100 |
2 |
0000 |
0000 |
0001 |
0001 |
0010 |
0010 |
0110 |
0011 |
0111 |
0100 |
3 |
0000 |
0000 |
0001 |
0001 |
0010 |
0010 |
0110 |
0011 |
0111 |
0100 |
4 |
0000 |
0010 |
0001 |
0001 |
0010 |
0000 |
1000 |
0011 |
5 |
0000 |
0010 |
0001 |
0001 |
0010 |
0000 |
1000 |
0010 |