去块滤波器的制作方法

文档序号:7957020阅读:344来源:国知局
专利名称:去块滤波器的制作方法
技术领域
本发明涉及一种视频编解码用去块滤波器,特别涉及一种基于H.264/MPEG-4 AVC视频标准的去块滤波器。
背景技术
H.264/MPEG-4 AVC是由Joint Video Team(JVT)制订的最新的视频标准,这个新标准对于消除块之间的虚拟边界作了重大改进,大幅度提高了图象的质量。但在该标准中,编解码器反变换量化后图像会出现方块效应。产生的原因有两个,其中最主要的原因是基于块的帧内和帧间预测残差的离散余弦变换(DCT),由于其变换系数的量化过程相对粗糙,因而反量化过程恢复的变换系数带有误差,会造成在图像块边界上的视觉不连续。第二个原因是来自运动补偿预测,运动补偿块可能是从不同帧的不同位置上的内插样点数据中复制而来的。由于运动补偿块的匹配不可能是绝对准确的,所以就会在复制块的边界上产生数据不连续。
为了克服这个问题,可以采用交叠运动补偿(OBMC)在一定程度上解决这个问题,但是效果不是很理想。如图1所示,对于新的视频标准由于采用在编解码环中加入去块滤波器实现去块滤波,提高了视频质量。但去块滤波处于环路之中,需要很大的计算量以及数据访问量,在整个解码器中轻易占据了三分之一以上的计算复杂度,滤波器的滤波速度影响整个编解码的速度,因此采用一种快速的滤波器是必要的。
目前的去块滤波器结构多采用单个边界滤波单元来同时支持水平滤波和垂直滤波两种操作,在很大程度上限制了去块滤波的速度,影响了整个编码解码过程的速度。此外,传统的去块滤波器采用转置电路来处理水平边尽滤波过程中对列数据的访问,使得垂直滤波与水平滤波的速率几乎相差一倍,不利于同时对两个方向的并行访问,并且同时还增大了电路面积。

发明内容为了解决现有技术去块滤波器采用单个边界滤波单元来同时支持水平滤波和垂直滤波两种操作,因而限制了去块滤波的速度的技术问题,本发明提供了一种能够通过并行滤波方式进行快速滤波的去块滤波器。此外,本发明还进一步通过并行存储机制省略了对行数据进行转置的装置单元,从而节省了芯片面积。
本发明解决现有技术去块滤波器采用单个边界滤波单元来同时支持水平滤波和垂直滤波两种操作,因而限制了去块滤波的速度的技术问题所采用的技术方案是提供一种去块滤波器,该去块滤波器包括用于对去块滤波器进行控制的控制单元;与控制单元相连接的阈值计算单元;用于存储当前滤波宏块的宏块数据存储单元;用于存储与当前滤波宏块相邻的上方块的上部数据存储单元;用于存储与当前滤波宏块相邻的左边块的左边数据存储单元;中间数据存储单元;用于依次对上方块和当前滤波宏块中的相邻块数据进行垂直滤波的水平边界滤波单元;以及用于依次对左边块和当前滤波宏块中的相邻块数据进行水平滤波的垂直边界滤波单元,其中,当前滤波宏块中的块数据经垂直边界滤波单元进行一次水平滤波后存储到左边数据存储单元,当前滤波宏块中的块数据经垂直边界滤波单元进行两次水平滤波后存储在中间数据存储器内,当前滤波宏块中的块数据经水平边界滤波单元进行一次垂直滤波后存储到上部数据存储单元,上方块和左边块的块数据经一次滤波以及当前滤波宏块经水平边界滤波单元两次垂直滤波后需要输出的数据存储在宏块数据存储单元中。
根据本发明一优选实施例,垂直边界滤波单元和水平边界滤波单元以交错滤波顺序进行水平滤波和垂直滤波。
根据本发明一优选实施例,当前滤波宏块中的同行块数据经垂直边界滤波单元进行一次水平滤波后存储到左边数据存储单元中与同行块数据同行的左边块数据的对应地址。
根据本发明一优选实施例,同行块数据经垂直边界滤波单元进行两次水平滤波后存储在中间数据存储器的同一地址。
根据本发明一优选实施例,当前滤波宏块中的同列块数据经水平边界滤波单元进行一次垂直滤波后存储到上部数据存储单元中与同列块数据同列的上方块数据的对应地址。
根据本发明一优选实施例,将右边缘数据块经垂直边界滤波单元进行一次水平滤波后存储到左边数据存储单元的中间数据存储到中间存储单元作为右边缘数据块的两次水平滤波数据。
根据本发明一优选实施例,当前滤波宏块经水平边界滤波单元两次垂直滤波后需要输出的数据覆盖宏块数据存储单元对应地址的数据。
根据本发明一优选实施例,将与当前滤波宏块的下边缘块数据经水平边界滤波单元进行一次垂直滤波后存储在上部数据存储单元内的中间数据存储到宏块数据存储单元中并覆盖下边缘块数据。
根据本发明一优选实施例,宏块数据存储单元、上部数据存储单元、左边数据存储单元以及中间数据存储单元为并行存储模块,并行存储模块包括数据输入对齐模块;地址生成器;4个并联的双口静态存储器和数据输出对齐模块。
根据本发明一优选实施例,地址生成器将4×4象素的块数据中的象素在并行存储模块映射为x’=(x+(ymod4))mod4;y’=y;其中,x,y为象素在4×4象素块数据中的坐标值,mod为取模操作,x’对应于4个静态存储器中的不同存储器,y’对应与4个静态存储器中同一存储器的不同地址。
本发明给出的算法是基于交错滤波顺序,为了提高滤波速度,采用两个一维滤波单元,大幅度的提高了滤波速度,通过选择合适的滤波顺序从而很好利用了数据之间的依赖性,该滤波器所需的每个块的数据只从外部读取一次,减少了外部SRAM/SDRAM的访问,降低了滤波器操作的复杂度。同时,在存储子系统和数据路径中采用了并行存储机制,以同时支持垂直和水平两个方向的并行访问,引入这样的存储结构后,不再需要传统的转置电路。

图1是现有技术中使用去块滤波器的编解码器的示意框图;图2是宏块中的亮度块和色度块以及去块滤波过程中所使用到的相邻块的示意图3是在去块滤波过程中所使用的三种滤波顺序;图4是本发明去块滤波器的结构框图;图5是本发明中一个块内部像素的存储映射图;图6是本发明中存储器的映射示意图;图7是本发明中的并行存储单元结构。
具体实施方式下面结合附图和实施例对本发明进行详细说明。
参见图2,图2是宏块中的亮度块和色度块以及去块滤波过程中所使用到的相邻块的示意图。在H.264/MPEG-4 AVC标准中,图象的预测、量化和变换都是基于4×4块进行的,所以滤波也是在4×4块的基础上进行的。该标准规定了先对亮度,色度块以及相邻块的垂直边界进行水平滤波,再对水平边界进行垂直滤波。
参见图3,图3是在去块滤波过程中所使用的三种滤波顺序。在图3中,每个块在整个滤波过程中,需要经过两次垂直边界滤波和两次水平边界滤波,目前比较典型的滤波顺序包括a.标准中介绍的基本滤波顺序,先对垂直边界进行水平滤波,再对水平边界进行垂直滤波,这种顺序不能充分利用相邻4×4块之间的数据依赖性,使得对宏块滤波过程中,每个4×4块的数据都需要从外部存取4次,具有很高的带宽要求;b.改进的滤波顺序,这种方法利用了一维数据依赖性;以及c.交错滤波顺序,这种方法充分利用了数据依赖性。本发明采用的是最后一种交错滤波顺序。
如图4所示,图4是本发明去块滤波器结构框图。包括对整个去块滤波器中各单元进行控制的控制单元;与控制单元相连接的的阈值计算单元;分别进行水平滤波和垂直滤波的垂直边界滤波单元和水平边界滤波单元。以及并行存储存储单元。其中阈值计算单元计算阈值α,β和C0,从而决定滤波强度Bs;色度块的Bs值不需要重新计算,只需调用亮度块的Bs值进行计算。控制单元控制整个滤波器各个单元的操作,通过滤波参数控制滤波器操作,通过读写和地址线控制并行存储单元。垂直边界滤波单元和水平边界滤波单元结构上为两个一维滤波单元,分别完成垂直边界的水平滤波和水平边界的垂直滤波,两个单元的内部结构相同。并行存储单元可以进行并行输入/并行输出访问(输入4像素,输出4像素,一个像素由8个bit表示,图2中的每个块包含16个像素)。如图5所示,并行存储单元由四部分组成,分别为上部数据存储单元、左边数据存储单元、宏块数据存储单元以及中间数据存储单元,其中上部数据存储单元存储水平边界块e、f、g、h、k,l、o和p块的内容和当前滤波宏块经过一次水平边界滤波后的中间数据,其可由4个8bit×32的双口(一读端口,一写端口)静态存储器(SRAM)组成;左边数据存储单元存储垂直边界块a、b、c、d、i、j、m和n块内容以及当前滤波宏块经过一次垂直边界滤波后的中间数据,由4个8bit×32的双口SRAM组成;宏块数据存储单元存储当前滤波宏块数据(包含亮度块和色度块)、当前滤波宏块数据经两次水平边界滤波后以及上部和左边的16个块经过一次滤波后需要输出的数据,其中宏块数据共32×160bit,可由4个8bit×96的SRAM组成,另外上部和左边的16个块经过一次滤波后需要输出的数据可由4个8bit×64的双口SRAM进行存储;中间数据存储单元用来存储经过两次垂直边界滤波后的块数据,其可有32bit×4的SRAM组成。
在滤波过程中,当接收到控制单元单元发出的使能信号时,去块滤波器从外部的SRAM/SDRAM通过路径1读取左边相邻块a、b、c、d、i、j、m、n的块内容,存储到左边数据存储单元;读取上方相邻块e、f、g、h、k、l、o、p块内容存储到上部数据存储单元,并读取宏块0-23的数据存储到宏块数据存储单元,这里数据存储地址由控制单元生成地址信号。在下一个时间段由垂直边界滤波单元经路径3从宏块数据存储单元中读取块0的数据并通过路径2从左边数据存储单元读取块a数据,对0块与a块进行垂直边界的水平滤波,滤波后的0’数据通过路径2写回到左边数据存储单元并覆盖a块的数据,将滤波后的a’数据经路径3存储到宏块数据存储单元;在第二个时间段,对0’数据与1块进行垂直边界的水平滤波,滤波后的0”数据通过路径4存储到中间数据存储单元,相应的滤波结果1’通过路径2覆盖0’数据;在下一个时间段,由水平边界滤波单元对0”数据与e块进行垂直滤波并由垂直边界滤波单元对2块与1’数据进行水平滤波,滤波后的0数据通过路径6覆盖e块的数据存到上部数据存储单元,e’数据通过路径7存入宏块数据存储单元,1”数据通过路径4存储到中间数据存储单元覆盖0”数据,2’数据通过路径2覆盖滤波前1’数据。依次类推,直到块4经过两次水平滤波存储到中间数据存储单元,在下一个时间段,通过水平边界滤波单元0与4”进行垂直滤波,滤波后的数据0””经过路径7存储到宏块数据存储单元覆盖块0,4经过路径6存到上部数据存储单元覆盖0的数据。依照此顺序完成整个MB的滤波。
在滤波过程中,水平边界滤波单元和垂直边界滤波单元有可能同时对宏块数据存储单元进行写操作,但由于水平边界滤波单元只写宏块0-23的滤波结果,而垂直边界滤波单元只写a、b、c、d、i、j、m、n块的滤波结果,因此二者不可能同时写宏块数据存储区中的同一个存储单元,因此不会产生访问冲突,另外,由于在宏块数据存储单元中,0-23块的数据与a-p块的数据是分别在不同的SRAM模块中存储的,这样的访问在实际中可以实现。
对应于宏块中右侧边缘上的块3、7、11、15、17、19、21、23,由于在本宏块滤波中只需经历一次垂直边界滤波就可以进行水平边界滤波,因此为了避免两个滤波结果同时写中间数据存储单元的数据冲突,如块2和块3之间的垂直边界滤波完成并且在2”与块g进行水平边界滤波后所出现的情况,就需要由控制单元控制,进行一次虚拟的垂直边界滤波,即在2”与块g进行水平边界滤波后从左边数据存储单元中读出块3’内容后,不从宏块数据单元中读取数据,不进行实际滤波,直接将经过一次垂直边界滤波后的结果块3’通过垂直边界滤波单元存储到中间数据存储单元代替2”作为3”。
在单个MB滤波过程中,块3、7、11、15、17、19、21、23的数据只进行一次垂直边界的水平滤波和两次水平边界的垂直滤波,结果数据存储在宏块数据存储单元中;相应的,块12、13、14、15、18、19、22、23的数据只进行两次垂直边界的水平滤波和一次水平边界的垂直滤波,结果数据存储在上部数据存储单元中。在进行相邻的右边和下面MB滤波过程中,进行第二次滤波。综上所述,该宏块滤波结束后,块a-p、块0-11、16、17、20、21的滤波结果存储在宏块数据存储单元中,而块12-15、18,19,22,23由于只经过一次水平边界的垂直滤波,有效的滤波结果存储在上部数据存储单元中,而不在宏块数据存储单元中,为了简化输出过程,对每个这样的块引入第二次虚拟滤波过程,即由控制单元控制,不进行实际的滤波,而通过水平边界滤波单元将经过一次水平边界滤波的数据存储到宏块数据存储单元中,这样做虽然引入了额外的周期,但输出结果时,只需通过系统总线输出宏块数据存储单元中的数据。
在新的视频标准中,进行水平滤波(垂直边界滤波)和垂直滤波(水平边界滤波)所用的数据格式有所不同,水平滤波取两个4×4象素的块数据中的行数据进行滤波,而垂直滤波是对两个块数据中的列数据进行滤波。在传统的方法中,采用直接存储映射,如图5中左图所示,由于列中的采样数据存储在同一个SRAM模块中,当进行列数据的访问时会引起访问冲突,因此,只能进行同行中数据的并行访问而无法支持同一列中数据的并行访问,因此每个块的数据都要经过T(矩阵转换单元)进行一次行列转换,为垂直滤波准备数据,这使得垂直滤波与水平滤波相比,需要几乎两倍的时钟周期,并带来了转置电路的附加代价。
对此,本发明采用了并行存储单元结构,图5中右图所示,是一个4×4块内像素到存储区域内的映射,采用了移位/旋转方式,4行中的像素分别相对移位/旋转0、1、2、3个像素。对于一个4×4块内的一个像素Px,y,它在存储区域中的新坐标(x′,y′)的计算方式如下x′=(x+(y mod 4))mod 4 (1)y′=y (2)这里mod表示取模操作,x’对应于4个静态存储器中的不同存储器,y’对应与4个静态存储器中同一存储器的不同地址。例如,P2,3所映射到的新坐标位置为(1,3)。通过采用这个机制,无论是同一行中还是同一列中的每个像素,都存储在一个单独的SRAM模块中,通过这种方式,就同时支持了两个方向上的并行存取。寻址可以根据公式(1)和(2)通过简单的逻辑和加法操作而实现。由于像素是以移位/旋转的方式映射和存储的,在读写中就需要增加对齐电路,但总的来说,这种方法依然比采用T单元的传统方法节省面积,并平衡了行滤波与列滤波操作的速度。
图6更清楚的说明了宏块中的相邻4×4块数据是如何映射到存储器中。并行存储模块的结构如图7所示,其中,并行存储模块包括数据输入对齐模块、地址生成器、4个并联的双口SRAM M0-M3和数据输出对齐模块。地址生成器生成读写操作的地址。地址模式在行访问和列访问的两种不同模式之间进行切换。
在滤波器结构中,垂直边界滤波单元和水平边界滤波单元的内部结构相同,根据Bs值的不同,包括有强滤波(Bs=4),标准滤波(Bs=1,2,3)和不滤波三个单元,不滤波就是不改变输入一维滤波单元的象素值,其它两种情况都对输入值进行了修正。根据H.264标准,标准滤波(Bs=1,2,3)要对输入滤波单元的四个象素中的两个值进行修正,即Δ=Clip3(-tc,tc,((((q0-p0)<<2)+(p1-q1)+4)>>3))P0=Clip1(p0+Δ);当条件chromaEdgeFlag=0&&|p2-p0|<Beta成立时,P1=p1+Clip3(-tc0,tc0,(p2+((p0+q0+1)-(p1<<1))>>1);否则P1=p1。
标准中给出了强滤波(Bs=4)的滤波结果(对三个象素值进行了修正)当条件chromaEdgeFlag=0&&|p2-p0|<Beta&&|p0-q0|<((alph>>2)+2)成立时P0=(p2+2*p1+2*p0+2*q0+q1+4)>>3P1=(p2+p1+p0+q0+2)>>2P2=(2*p3+3*p2+p1+p0+q0+4)>>3否则P0=(2*p1+p0+q1+2)>>2P1=p1P2=p2。
本发明给出的算法是基于交错滤波顺序,为了提高滤波速度,采用两个一维滤波单元,大幅度的提高了滤波速度,通过选择合适的滤波顺序从而很好利用了数据之间的依赖性,该滤波器所需的每个块的数据只从外部读取一次,减少了外部SRAM/SDRAM的访问,降低了滤波器操作的复杂度。同时,在存储子系统和数据路径中采用了并行存储机制,以同时支持垂直和水平两个方向的并行访问,引入这样的存储结构后,不再需要传统的转置电路。
本发明提出的去块滤波器结构在滤波速度方面与其他滤波器结构相比有着显著的提高和改善,适用于目前广泛使用的视频通信编解码器。
权利要求
1.一种去块滤波器,所述去块滤波器包括用于对所述去块滤波器进行控制的控制单元;与所述控制单元相连接的阈值计算单元;其特征在于所述去块滤波器进一步包括用于存储当前滤波宏块的宏块数据存储单元;用于存储与所述当前滤波宏块相邻的上方块的上部数据存储单元;用于存储与所述当前滤波宏块相邻的左边块的左边数据存储单元;中间数据存储单元;用于依次对所述上方块和所述当前滤波宏块中的相邻块数据进行垂直滤波的水平边界滤波单元;以及用于依次对所述左边块和所述当前滤波宏块中的相邻块数据进行水平滤波的垂直边界滤波单元,其中,所述当前滤波宏块中的块数据经所述垂直边界滤波单元进行一次水平滤波后存储到所述左边数据存储单元,所述当前滤波宏块中的块数据经所述垂直边界滤波单元进行两次水平滤波后存储在所述中间数据存储器内,所述当前滤波宏块中的块数据经所述水平边界滤波单元进行一次垂直滤波后存储到所述上部数据存储单元,所述上方块和所述左边块的块数据经一次滤波以及所述当前滤波宏块经所述水平边界滤波单元两次垂直滤波后需要输出的数据存储在所述宏块数据存储单元中。
2.根据权利要求1所述的去块滤波器,其特征在于所述垂直边界滤波单元和所述水平边界滤波单元以交错滤波顺序进行水平滤波和垂直滤波。
3.根据权利要求2所述的去块滤波器,其特征在于所述当前滤波宏块中的同行块数据经所述垂直边界滤波单元进行一次水平滤波后存储到所述左边数据存储单元中与所述同行块数据同行的左边块数据的对应地址。
4.根据权利要求3所述的去块滤波器,其特征在于所述同行块数据经所述垂直边界滤波单元进行两次水平滤波后存储在所述中间数据存储器的同一地址。
5.根据权利要求3所述的去块滤波器,其特征在于所述当前滤波宏块中的同列块数据经所述水平边界滤波单元进行一次垂直滤波后存储到所述上部数据存储单元中与所述同列块数据同列的上方块数据的对应地址。
6.根据权利要求4所述的去块滤波器,其特征在于将所述右边缘数据块经所述垂直边界滤波单元进行一次水平滤波后存储到所述左边数据存储单元的中间数据存储到所述中间存储单元作为所述右边缘数据块的两次水平滤波数据。
7.根据权利要求4所述的去块滤波器,其特征在于所述当前滤波宏块经所述水平边界滤波单元两次垂直滤波后需要输出的数据覆盖所述宏块数据存储单元对应地址的数据。
8.根据权利要求7所述的去块滤波器,其特征在于将与所述当前滤波宏块的下边缘块数据经所述水平边界滤波单元进行一次垂直滤波后存储在所述上部数据存储单元内的中间数据存储到所述宏块数据存储单元中并覆盖所述下边缘块数据。
9.根据上述权利要求任意一项所述的去块滤波器,其特征在于所述宏块数据存储单元、所述上部数据存储单元、所述左边数据存储单元以及所述中间数据存储单元为并行存储模块,所述并行存储模块包括数据输入对齐模块;地址生成器;4个并联的双口静态存储器和数据输出对齐模块。
10.根据权利要求9所述的去块滤波器,其特征在于所述地址生成器将4×4象素的块数据中的象素在所述并行存储模块映射为x’=(x+(ymod4))mod4y’=y;其中,x,y为所述象素在所述4×4象素块数据中的坐标值,mod为取模操作,x’对应于所述4个静态存储器中的不同存储器,y’对应与所述4个静态存储器中同一存储器的不同地址。
全文摘要
本发明涉及一种视频编码用去块滤波器,该去块滤波器基于交错滤波顺序,其采用两个一维滤波单元配合宏块数据存储单元、上部数据存储单元、左边数据存储单元以及中间数据存储单元,大幅度的提高了滤波速度,通过选择合适的滤波顺序从而很好利用了数据之间的依赖性,该滤波器所需的每个块的数据只从外部读取一次,减少了外部SRAM/SDRAM的访问,降低了滤波器操作的复杂度。同时,在存储子系统和数据路径中采用了并行存储机制,以同时支持垂直和水平两个方向的并行访问,引入这样的存储结构后,不再需要传统的转置电路。
文档编号H04N7/26GK101076124SQ20061006061
公开日2007年11月21日 申请日期2006年5月18日 优先权日2006年5月18日
发明者李挥, 王继山, 陈慕羿, 张志军, 马建设, 胡海军, 高金璐, 林茫茫 申请人:北京大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1