一种环路滤波方法和环路滤波系统的制作方法

文档序号:7720106阅读:104来源:国知局
专利名称:一种环路滤波方法和环路滤波系统的制作方法
技术领域
本发明涉及数字视频解码技术领域,特别是涉及一种环路滤波方法和环路滤波系统。
背景技术
硬件解码器通常以宏块为单位以流水线的方式解码,解码顺序为从左到右,从上到下。以一个64X64像素大小的图像为例,其包括4X4的宏块数,每个宏块包含4X4个子块,根据RV9的解码顺序规定,其硬件滤波顺序如图1所示。图中左边的编号是宏块的编号,U指宏块的上3行子块,L指该宏块的下边一行子块,括号内的数字为硬件的滤波顺序。
上级流水线对一个宏块解码后送给滤波器(filter)做滤波,filter要把这个宏块的数据保存在自己的内存中。比如上级流水线完成了宏块6的解码,则需要保存当前宏块6到内存中,此时可以对前宏块6上边的一行子块2L和其左边宏块的上边三行子块5U进行滤波,而5U的滤波又需要5U相邻的左边一列子块,通常会把与5U相邻的左边的宏块都保存下来,即filter读入当前宏块时,需要保存当前宏块、其上边的一行块、其左边的宏块和其左边宏块的左边宏块,共四部分宏块以及相应宏块的控制信息,以判断滤波强度进行滤波。需要指出的是,整个0L,1L,2L,3L都保存在内存中,因为它们都是宏块0、1、2、3没有完成滤波的最下一行块。此外,图像的边缘不滤波。 —般来说,RV9的环路滤波是基于子块的环路滤波,它按照子块的顺序,把每一个子块的下边、左边、上边分别作滤波。对于每一个子块,边的滤波顺序与边的强度有关。如图2所示,为一个子块的边的滤波顺序示意图,当下边201为普通或弱滤波强度,上边203为强滤波强度时,如果左边202为普通或弱滤波强度,则滤波顺序为下边201、左边202、上边203 ;如果左边202为强滤波强度,则滤波顺序为下边201、上边203、左边202。此外,如果下边201为强滤波强度,那么就不做该边的滤波,下边201作为下面一个子块的上边做滤波;如果上边203为普通或弱滤波强度,那么也不做上边的滤波,上边203作为上面一个子块的下边做滤波。 参照图3,为RV9环路滤波系统的示意图。对于宏块内部的单个的子块,其滤波计算方式如下首先读取当前子块到缓存器O(bufO),然后根据滤波顺页序,选择相应的滤波模式,读入当前子块滤波需要的上边(up)或左边(left)或下边(bottom)子块到缓存器1 (bufl)中,进行滤波计算。然后把当前子块和滤波需要的子块分别保存在buf0和bufl中,之后判断当前子块的滤波是否完成。如果当前子块的滤波没有完成,则把bufl中的子块写回原来的位置,再根据滤波顺序读入下次需要的子块到bufl中;如果滤波完成,则把bufO和bufl中的子块都写回原来的位置。 由于滤波的顺序由滤波强度等决定,所以滤波顺序不固定,但是一条边如果在这个子块被滤波了那么就不在相邻块滤波了,所以每个宏块的读写次数可能不一样,但是平均看读写次数是固定的。以一个帧内编码的宏块为例,第一行4个子块,每个子块都要对下、上、左三条边滤波,需要读入当前子块和其下边的子块、上边的子块、左边的子块,共4个子块,并将结果写回,需要4X4 = 16次读写;第二行和第三行的上边是弱滤波强度,因此要对下边和左边两条边滤波,需要读入当前子块和其下边的子块、左边的子块,共3个子块,并将结果写回,需要2X (4X3) = 24次读写;第四行上边是弱滤波强度,下边是强滤波强度,只需要对左边一条边滤波,需要读入当前子块和其左边的子块,共2个子块,并将结果写回,需要4X2 = 8次读写;16+24+8 = 48,则平均滤波一个宏块需要读写48次子块。
由以上的分析可知,根据RV9的滤波顺序,要想硬件实现滤波,需要保存比较多的子块数据,并且由于数据的读取次数比较多,耗费的计算时间也比较长,同时这种不规则的计算顺序会使硬件设计的复杂度提高。 总之,目前需要本领域技术人员迫切解决的一个技术问题就是如何能够改进滤波方法,从而减少数据的存储量以及数据的读取次数。

发明内容
本发明所要解决的技术问题是提供一种环路滤波的方法和环路滤波系统,以减少数据的保存量和数据的读取次数。 为了解决上述问题,本发明公开了一种环路滤波方法,包括 逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;
其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波。
优选的,所述每一列子块的各个子块的水平边滤波包括 Al,对于每一列子块的第一个子块,读取滤波子块和滤波子块上边的子块的数据; A2,利用所述滤波子块和滤波子块上边的子块的数据对滤波子块的水平边进行滤波计算; A3,保存滤波子块的数据,写回滤波子块上边的子块的数据; A4,读取滤波子块下边的子块的数据,所述滤波子块下边的子块作为新的滤波子块,上述保存的滤波子块作为所述新的滤波子块上边的子块; A5,返回A2循环执行A2到A4,直到该列子块的最后一个子块的水平边滤波完成,
然后写回滤波子块和滤波子块上边的子块的数据。 优选的,所述每一行子块的各个子块的垂直边滤波包括 Bl,对于每一行子块的第一个子块,读取滤波子块和滤波子块左边的子块的数据; B2,利用所述滤波子块和滤波子块左边的子块的数据对滤波子块的垂直边进行滤波计算; B3,保存滤波子块的数据,写回滤波子块左边的子块数据; B4,读取滤波子块右边的子块的数据,所述滤波子块右面的子块作为新的滤波子块,上述保存的滤波子块作为所述新的滤波子块上边的子块; B5,返回B2循环执行B2到B4,直到该行子块的最后一个子块的垂直边滤波完成,然后写回滤波子块和滤波子块左边的子块的数据。
进一步,所述水平边为滤波子块的上边一条边;所述垂直边为滤波子块的左边一条边。 优选的,所述每一列子块的各个子块的水平边滤波或每一行子块的各个子块的垂直边滤波具体包括 Cl,对每一列或者每一行子块的第一个子块,分别读取左边子块和右边子块的数据到第一缓存器和第二缓存器中;其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波子块上边的子块定义为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤波子块左边的子块定义为左边子块; C2,当右边子块为所在列或行的奇数块时,将所述两个缓存器中子块的数据输入到滤波器中,对右边子块的一条边进行滤波计算;然后保存右边子块的数据到第二缓存器中,写回左边子块的数据;然后读取新的右边子块的数据,交换输入到第一缓存器中,继续
C3 ; C3,当右边子块为所在列或行的偶数块时,将所述两个缓存器中子块的数据交换输入到滤波器中,对右边子块的一条边进行滤波计算;然后保存右边子块的数据到第一缓存器中,写回左边子块的数据;然后读取新的右边子块的数据保存到第二缓存器中,返回
C2 ; 循环执行C2和C3,直到该列或该行子块的最后一个子块的一条边滤波完成,然后写回左边子块和右边子块的数据。 进一步,所述选取宏块的顺序为从左到右、从上到下。
本发明还提供了一种环路滤波系统,包括 滤波器,用于逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波。
优选的,所述的系统还包括 第一缓存器和第二缓存器,用于对每一列或者每一行子块的第一个子块,分别读取左边子块和右边子块的数据进行保存,之后将子块的数据输入到滤波器中,并在每一个右边子块的一条边通过滤波器滤波后,读入右边子块的缓存器保存右边子块的数据,另一个缓存器写回左边子块的数据并读取新的右边子块的数据进行保存,并对新的右边子块进行滤波,循环执行依次对子块滤波,直到每一列或每一行子块的最后一个子块的一条边滤波完成,写回左边子块和右边子块的数据; 其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波子块上边的子块定义为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤波子块左边的子块定义为左边子块; 第一交换器,用于当第二缓存器中保存滤波后的右边子块的数据时,将读取的新的右边子块的数据交换输入到第一缓存器中; 第二交换器,用于当第一缓存器中保存滤波的右边子块的数据时,将所述两个缓存器中子块的数据交换输入到滤波器中。 进一步,所述滤波器选取宏块的顺序为从左到右、从上到下。
与现有技术相比,本发明具有以下优点 本发明对现有的RV环路滤波方法进行了改进,将原来的按照子块的顺序进行滤 波计算的方法,改为按照边的顺序进行滤波按照从上到下、从左到右的顺序,先做水平边 的滤波,再按照从左到右、从上到下的顺序,做垂直边的滤波;或者先做垂直边的滤波再做 水平边的滤波。根据本发明滤波的顺序,宏块选取的顺序为从左到右、从上到下。该顺序只 需要保存当前宏块,其上边一行块和其左边的宏块,以及相应宏块的控制信息用于进行滤 波,相对于现有技术中需要保存四个宏块以及相应宏块的控制信息来说,减少了数据的保 存量,节省了内存空间。 同时,对于宏块内部4X4的子块,根据本发明的滤波顺序,每一列子块水平边的 滤波需要读写该列上边的1个块和该列的4个子块,共5个子块,水平边滤波完需要读写20 次子块;每一行块垂直边的滤波需要读写该行左边的1个块和该行的4个子块,共5个子 块,垂直边滤波完需要读写20次子块;则平均滤波一个宏块需要读写40次子块,而现有技 术中以子块为单位的滤波顺序,平均滤波一个宏块需要读写48次子块。该方法与现有技术 相比,减少了子块的读取次数,减少了数据的存取时间。同时,该方法采用规则的滤波顺序, 降低了硬件设计的复杂度,硬件开销少,易于实现。


图1 是现有技术RV9对于4X4宏块的的滤波顺序示意图; 图2是一个子块的边的滤波顺序示意图; 图3是现有技术RV9环路滤波系统的示意图; 图4是本发明实施例的一个宏块的4X4个子块的滤波顺序示意图; 图5是本发明实施例每一列子块的各个子块的水平边滤波流程图; 图6是本发明实施例每一行子块的各个子块的垂直边滤波流程图; 图7是本发明的一种水平边滤波或垂直边滤波优选实施例的流程图; 图8是本发明一种环路滤波系统实施例的示意图。
具体实施例方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。 本发明将RV9原有的按照块的顺序进行滤波的方法,改为按照边的顺序进行滤 波,本发明所述的一种环路滤波方法,包括逐个选取宏块进行滤波,对于宏块内部的各个 子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对 子块的水平边滤波;其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块 的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤 波。 如图4所示,为本发明实施例的一个宏块的4X4个子块的滤波顺序示意图。本发 明实施例逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对 子块的垂直边滤波。图中的编号代表了子块边的滤波顺序,假设子块按照从上到下、从左到 右的顺序定义为子块1、子块2……,其标号与水平边的滤波顺序相对应。对于一个宏块,从1到32,共需要对32条边进行滤波,其中,1至16为水平边的滤波顺序,17至32为垂直边 的滤波顺序。子块按照从上到下、从左到右的顺序定义为子块1、子块2……,其标号与水平 边的滤波顺序相对应。 首先,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤 波,即按照水平边1 、 2 、 3 、 4,水平边5 、 6 、 7 、 8……的顺序进行滤波,直到水平边16滤波完成, 则该宏块的水平边滤波完成。 其次,按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤 波,即按照垂直边17、18、19、20,垂直边21、22、23、24……的顺序进行滤波,直到垂直边32 滤波完成,则该宏块的垂直边滤波完成。 根据宏块的解码顺序,选取相应的宏块进行滤波,由于宏块的下边一条边和右边 一条边的滤波需要其相邻的下边宏块和右边宏块,而下边宏块和右边宏块的解码还未完 成,因此,本发明实施例选取滤波的水平边为当前子块的上边一条边;选取的滤波的垂直边 为当前子块的左边一条边。 具体的,参照图5,为本发明实施例每一列子块的各个子块的水平边滤波流程图, 包括 步骤501,对于每一列子块的第一个子块,读取滤波子块和滤波子块上边的子块的 数据; 根据本发明实施例,例如对于宏块最左边的一列子块的水平边滤波,首先读取第 一个需要滤波的子块和其上边的子块的数据,将子块1上边的子块记为子块O,则本步骤读 取子块1和子块0的数据。 步骤502,利用所述滤波子块和滤波子块上边的子块的数据对滤波子块的水平边 进行滤波计算; 利用读取到的子块1和子块0的数据,对子块1的水平边1进行滤波计算。
步骤503,保存滤波子块的数据,写回滤波子块上边的子块的数据;
由于上一步中对子块1的水平边1滤波完成,因此按照从上到下的顺序开始对下 一个子块,子块2进行滤波,而子块2的滤波需要用到子块1的数据,子块O的数据不再需 要,因此本步骤保存子块1的数据,写回子块O的数据。 步骤504,读取滤波子块下边的子块的数据,所述滤波子块下边的子块作为新的滤 波子块,上述保存的滤波子块作为所述新的滤波子块上边的子块; 读取子块1下边的子块2的数据,则子块2作为新的滤波子块,保存的子块1作为 子块2上边的子块,以用来对子块2进行滤波。 步骤505,返回502循环执行502到504,直到该列子块的最后一个子块的水平边
滤波完成,写回滤波子块和滤波子块上边的子块的数据。 利用子块2和子块1的数据,对子块2的水平边2进行滤波计算。 之后如前所述,保存子块2的数据,写回子块1的数据,读取子块2下边的子块3
的数据,子块3作为新的滤波子块,利用子块3和子块2的数据,对子块3的水平边3进行
滤波计算。 之后保存子块3的数据,写回子块2的数据,读取子块3下边的子块4的数据,子 块4作为新的滤波子块,利用子块4和子块3的数据,对子块4的水平边4进行滤波计算。子块4作为该列的最后一个子块,其水平边滤波完后,按照从左到右的顺序,要对下一列子
块的水平边滤波,因此子块4的数据不再需要,此时写回子块4和子块3的数据。 其他列子块的各个子块的水平边滤波与上述最左边一列的水平边滤波的方法相似。 参照图6,为本发明实施例每一行子块的各个子块的垂直边滤波流程图,包括
步骤601,对于每一行子块的第一个子块,读取滤波子块和滤波子块左边的子块的 数据; 根据本发明实施例,例如对于宏块最上边的一行子块的垂直边滤波,首先读取第 一个需要滤波的子块和其左边的子块的数据,将子块1左边的子块记为子块O',则本步骤 读取子块1和子块0'的数据。 步骤602,利用所述滤波子块和滤波子块左边的子块的数据对滤波子块的垂直边 进行滤波计算; 利用读取到的子块1和子块0'的数据,对子块1的垂直边17进行滤波计算。
步骤603,保存滤波子块的数据,写回滤波子块左边的子块的数据;
由于上一步中对子块1的垂直边17滤波完成,因此按照从左到右的顺序开始对下 一个子块,子块5进行滤波,而子块5的滤波需要用到子块1的数据,子块0'的数据不再需 要,因此本步骤保存子块1的数据,写回子块O'的数据。 步骤604,读取滤波子块右边的子块的数据,所述滤波子块右面的子块作为新的滤 波子块,上述保存的滤波子块作为所述新的滤波子块上边的子块; 读取子块右边的子块5的数据,则子块5作为新的滤波子块,保存的子块1作为子 块5左边的子块,以用来对子块5进行滤波。 步骤605,返回602循环执行602到604,直到该行子块的最后一个子块的垂直边
滤波完成,写回滤波子块和滤波子块左边的子块的数据。 利用子块5和子块1的数据,对子块5的垂直边18进行滤波计算。 之后如前所述,保存子块5的数据,写回子块1的数据,读取子块5右边的子块9
的数据,子块9作为新的滤波子块,利用子块9和子块5的数据,对子块9的垂直边19进行
滤波计算。 之后保存子块9的数据,写回子块5的数据,读取子块9右边的子块13的数据,子 块13作为新的滤波子块,利用子块13和子块9的数据,对子块13的垂直边20进行滤波计 算。子块13作为该行的最后一个子块,其垂直边滤波完后,按照从上到下的顺序,要对下一 行子块的垂直边滤波,因此子块13的数据不再需要,此时写回子块13和子块9的数据。
其他行子块的各个子块的垂直边滤波与上述最上边一行的垂直边滤波的方法相 似。 对于宏块内部4X4的块,根据本发明的滤波顺序,每一列块水平边的滤波,以图 中最左边一子块列为例,子块1的滤波需要读入子块1和其上边的子块O,滤波完成后写回 子块O ;子块2的滤波需要读入当前滤波的子块2,滤波完成后写回子块1 ;子块3的滤波同 子块2的滤波,需要读入当前滤波的子块3,滤波完成后写回当前滤波的子块上边的子块2 ; 子块4的滤波需要读入当前滤波的子块4,滤波完成后写回当前滤波的子块4和其上边的子 块3。完成该列子块的滤波需要读写5个子块,即完成子块0、子块1、子块2、子块3、子块4的读写,所以每一列子块的滤波需要读写5个子块,其他列子块的滤波与此类似,则一个宏 块完成水平边的滤波需要读写5X4 = 20个块。每一行子块垂直边的滤波与水平边的滤波 类似,需要读写该行左边的1个子块和该行的4个子块,共5个子块,其他行子块的滤波与 此类似,则一个宏块完成垂直边的滤波需要读写20个子块。则平均滤波一个宏块需要读写 40次子块。 本发明按照边的顺序进行滤波,与现有技术中按照块的顺序进行滤波相比,平均 滤波一个宏块由原来的读写48次子块减少为读写40次子块,减少了子块的读取次数,减 少了数据的存取时间,提高了读取的速率。同时,该方法采用规则的滤波顺序,并不改变边 的滤波强度与滤波器的计算方法,总的滤波计算时间少,硬件设计的复杂度较低,硬件开销 少。 如图7所示,为本发明的一种水平边滤波或垂直边滤波优选实施例的流程图,具 体包括 步骤701,对每一列或者每一行子块的第一个子块,分别读取左边子块和右边子 块的数据到第一缓存器和第二缓存中;其中,进行水平边的滤波时,滤波子块定义为右边子 块,滤波子块上边的子块定义为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边 子块,滤波子块左边的子块定义为左边子块; 根据本发明实施例,参照图4,例如选取最左边的第二列子块进行水平边的滤波, 则该列的子块5为第一个滤波的子块,定义为右边子块,子块5上边的子块5',定义为左边 子块,则将读取子块5'读取到第一缓存器bufl中,将子块5读取到第二缓存器buf2中。
步骤702,当右边子块为所在列或行的奇数块时,将所述两个缓存器中子块的数据 输入到滤波器中,对右边子块的一条边进行滤波计算; 作为右边子块的子块5为所在列的第一块,即奇数块,由于滤波器的一端接收从 bufl中输入的左边字块,另一端接收从buf2中输入的右边子块,则将bufl中作为左边字块 的子块5'和buf2中作为右边子块的子块5的数据分别输入到滤波器中进行滤波计算,对 子块5的水平边5进行滤波。 步骤703,保存右边子块的数据到第二缓存器中,写回左边子块的数据;然后读取 新的右边子块的数据,交换输入到第一缓存器中,转至步骤704 ; 由于要对下一个子块6进行滤波,子块6水平边的滤波需要用到与其相邻的子块 5,子块5'的数据不再需要,因此,buf2保存滤波后子块5的数据,此时子块5转换为左边 子块,bufl写回子块5'的数据,bufl为空。之后bufl需要读取子块6的数据,由于bufl 读取的是左边子块的数据,buf2读取的是右边子块的数据,滤波的子块6此时作为新的右 边子块,因此,需要交换输入到buf中的子块的数据,将子块6的数据输入到空的bufl中。
步骤704,当右边子块为所在列或行的偶数块时,将所述两个缓存器中子块的数据 交换输入到滤波器中,对右边子块的一条边进行滤波计算; 作为右边子块的子块6为所在列的第二块,即偶数块,由于滤波器的一端接收从 bufl中输入的左边字块,另一端接收从buf2中输入的右边子块,而此时bufl中存储的是作 为右边子块的子块6,buf2中存储的是作为左边子块的子块5,因此将bufl和buf2中子块 的数据交换输入到滤波器中进行滤波计算,对子块6的水平边6进行滤波。
步骤705,保存右边子块的数据到第一缓存器中,写回左边子块的数据;然后读取新的右边子块的数据保存到第二缓存器中,转至步骤702 ; 由于要对下一个子块7进行滤波,子块7水平边的滤波需要用到与其相邻的子块 6,子块5的数据不再需要,因此,bufl保存滤波后子块6的数据,此时子块6转换为左边子 块,buf2写回子块5的数据,buf2为空。之后读取子块7的数据,滤波的子块7此时作为新 的右边子块保存在buf2中。 步骤706,循环执行步骤702至705,直到该列或该行子块的最后一个子块的一条 边滤波完成,写回左边子块和右边子块的数据。 此时,作为右边子块的子块7为所在列的第三块,即奇数快,则将bufl中作为左边 字块的子块6和buf2中作为右边子块的子块7的数据分别输入到滤波器中进行滤波计算, 对子块7的水平边7进行滤波。 之后要对下一个子块8进行滤波,同上所述,子块8水平边的滤波需要用到与其相 邻的子块7,子块6的数据不再需要,因此,buf2保存滤波后子块7的数据,此时子块7转换 为左边子块,bufl写回子块6的数据,bufl为空。之后bufl需要读取子块8的数据,由于 buf 1读取的是左边子块的数据,buf2读取的是右边子块的数据,因此,需要交换输入到buf 中的子块的数据,将作为新的右边子块子块8的数据输入到空的bufl中。
作为右边子块的子块8为所在列的第四块,即偶数块,由于此时bufl中存储的是 作为右边子块的子块8, buf2中存储的是作为左边子块的子块7,因此同上所述将bufl和 buf2中子块的数据交换输入到滤波器中进行滤波计算,对子块8的水平边8进行滤波。
至此,该列最后一个子块的水平边滤波完,需要对下一列子块的水平边进行滤波, 子块8的数据不再需要,因此写回作为左边子块的子块7和作为右边子块的子块8的数据。
其他各列和各行子块边的滤波方法与上述是类似。 进一步,本发明实施例逐个选取宏块进行滤波,选取宏块的顺序为从左到右、从上
到下。根据本发明宏块的读取顺序,上级流水线完成一个宏块解码后,即可以对该宏块进
行滤波,此除当前滤波的宏块外,还需要用到其上边的一行子块、其左边宏块的最右边一列
块, 一般会把左边的宏块都保存下来,因此,需要保存当前宏块、当前宏块上边的一行块、当
前宏块左边的宏块,一共三部分宏块的数据以及相应宏块的控制信息用于进行滤波。现有
技术中上级流水线完成了当前宏块的解码后,需要保存当前宏块、其上边的一行块、其左边
的宏块和其左边宏块的左边宏块,共四部分宏块的数据以及相应宏块的控制信息以进行滤
波。本发明与现有技术相比,减少了宏块数据的保存数量,节省了内存空间。 参照图8,示出了本发明一种环路滤波系统实施例的示意图,包括 滤波器801,用于逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的
水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤
波;其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;
按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波。 进一步,所述环路滤波系统还包括 第一缓存器802和第二缓存器803,用于对每一列或者每一行子块的第一个子块, 分别读取左边子块和右边子块的数据进行保存,之后将子块的数据输入到滤波器中,并在 每一个右边子块的一条边通过滤波器滤波后,读入右边子块的缓存器保存右边子块的数 据,另一个缓存器写回左边子块的数据并读取新的右边子块的数据进行保存,并对新的右边子块进行滤波,循环执行依次对子块滤波,直到每一列或每一行子块的最后一个子块的 一条边滤波完成,写回左边子块和右边子块的数据; 其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波子块上边的子块定义 为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤波子块左边的子块定 义为左边子块; 第一交换器804,用于当第二缓存器中保存滤波后的右边子块的数据时,将读取的 新的右边子块的数据交换输入到第一缓存器中; 第二交换器805,用于当第一缓存器中保存滤波的右边子块的数据时,将所述两个 缓存器中子块的数据交换输入到滤波器中。 对每一列或者每一行子块,例如上边第二行子块垂直边的滤波,第一缓存器802 读取作为左边子块的子块2',第二缓存器803读取作为右边子块的子块2,然后所述两个缓 存器将子块2'和子块2的数据输入到滤波器801中,对子块2的垂直边21进行滤波计算;
之后第二缓存器803保存子块2的数据,第一缓存器写回子块2'的数据,由于第 一缓存器读取左边子块的数据,第二缓存器读取右边子块的数据,因此第一交换器804,将 读取的新的右边子块的数据交换输入到第一缓存器中,此时第一缓存器保存有作为右边子 块的子块6。由于滤波器801的一端接收从bufl中输入的左边字块,另一端接收从buf2中 输入的右边子块,因此第二交换器805将所述两个缓存器中子块的数据交换输入到滤波器 中,对子块6的垂直边22进行滤波计算。 之后第一缓存器802保存子块6的数据,第二缓存器803写回子2块的数据,并读 取下一个需要滤波的子块10的数据,然后第一缓存器和第二缓存器分别将作为左边子块 的子块6和作为右边子块的子块10的数据输入到滤波器801中,对子块10的垂直边23进 行滤波计算; 之后第二缓存器803保存子块10的数据,第一缓存器写回子块6的数据,如上所 述第一交换器804将读取的新的右边子块的数据交换输入到第一缓存器中,此时第一缓存 器保存有作为右边子块的子块14。然后第二交换器805将所述两个缓存器中子块的数据交 换输入到滤波器中,对子块14的垂直边24进行滤波计算。至此,该列最后一个子块的水平 边滤波完,需要对下一列子块的水平边进行滤波,因此写回作为左边子块的子块10和作为 右边子块的子块14的数据。 所述滤波系统对其他列和其他行的各个子块的滤波与上述过程相似。 进一步,所述滤波器801选取宏块的顺序为从左到右、从上到下。 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与
其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例
而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部
分说明即可。 以上对本发明所提供的一种环路滤波方法和环路滤波系统,进行了详细介绍,本 文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于 帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思 想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对 本发明的限制。
权利要求
一种环路滤波方法,其特征在于,包括逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波。
2. 根据权利要求1所述的方法,其特征在于,所述每一列子块的各个子块的水平边滤 波包括Al,对于每一列子块的第一个子块,读取滤波子块和滤波子块上边的子块的数据; A2,利用所述滤波子块和滤波子块上边的子块的数据对滤波子块的水平边进行滤波计算;A3,保存滤波子块的数据,写回滤波子块上边的子块的数据;A4,读取滤波子块下边的子块的数据,所述滤波子块下边的子块作为新的滤波子块,上 述保存的滤波子块作为所述新的滤波子块上边的子块;A5,返回A2循环执行A2到A4,直到该列子块的最后一个子块的水平边滤波完成,然后 写回滤波子块和滤波子块上边的子块的数据。
3. 根据权利要求1所述的方法,其特征在于,所述每一行子块的各个子块的垂直边滤 波包括Bl,对于每一行子块的第一个子块,读取滤波子块和滤波子块左边的子块的数据;B2,利用所述滤波子块和滤波子块左边的子块的数据对滤波子块的垂直边进行滤波计算;B3,保存滤波子块的数据,写回滤波子块左边的子块数据;B4,读取滤波子块右边的子块的数据,所述滤波子块右面的子块作为新的滤波子块,上 述保存的滤波子块作为所述新的滤波子块上边的子块;B5,返回B2循环执行B2到B4,直到该行子块的最后一个子块的垂直边滤波完成,然后 写回滤波子块和滤波子块左边的子块的数据。
4. 根据权利要求2或3所述的方法,其特征在于所述水平边为滤波子块的上边一条边;所述垂直边为滤波子块的左边一条边。
5. 根据权利要求1所述的方法,其特征在于,所述每一列子块的各个子块的水平边滤 波或每一行子块的各个子块的垂直边滤波具体包括Cl,对每一列或者每一行子块的第一个子块,分别读取左边子块和右边子块的数据到 第一缓存器和第二缓存器中;其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波 子块上边的子块定义为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤 波子块左边的子块定义为左边子块;C2,当右边子块为所在列或行的奇数块时,将所述两个缓存器中子块的数据输入到滤 波器中,对右边子块的一条边进行滤波计算;然后保存右边子块的数据到第二缓存器中,写 回左边子块的数据;然后读取新的右边子块的数据,交换输入到第一缓存器中,继续C3 ;C3,当右边子块为所在列或行的偶数块时,将所述两个缓存器中子块的数据交换输入 到滤波器中,对右边子块的一条边进行滤波计算;然后保存右边子块的数据到第一缓存器 中,写回左边子块的数据;然后读取新的右边子块的数据保存到第二缓存器中,返回C2 ;循环执行C2和C3,直到该列或该行子块的最后一个子块的一条边滤波完成,然后写回 左边子块和右边子块的数据。
6. 根据权利要求1所述的方法,其特征在于,所述选取宏块的顺序为从左到右、从上到下。
7. —种环路滤波系统,其特征在于,包括滤波器,用于逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤 波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;其中, 按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到 右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波。
8. 根据权利要求7所述的系统,其特征在于,还包括第一缓存器和第二缓存器,用于对每一列或者每一行子块的第一个子块,分别读取左 边子块和右边子块的数据进行保存,之后将子块的数据输入到滤波器中,并在每一个右边 子块的一条边通过滤波器滤波后,读入右边子块的缓存器保存右边子块的数据,另一个缓 存器写回左边子块的数据并读取新的右边子块的数据进行保存,并对新的右边子块进行滤 波,循环执行依次对子块滤波,直到每一列或每一行子块的最后一个子块的一条边滤波完 成,写回左边子块和右边子块的数据;其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波子块上边的子块定义为左 边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤波子块左边的子块定义为 左边子块;第一交换器,用于当第二缓存器中保存滤波后的右边子块的数据时,将读取的新的右 边子块的数据交换输入到第一缓存器中;第二交换器,用于当第一缓存器中保存滤波的右边子块的数据时,将所述两个缓存器 中子块的数据交换输入到滤波器中。
9. 根据权利要求7所述的系统,其特征在于,所述滤波器选取宏块的顺序为从左到右、 从上到下。
全文摘要
本发明提供了一种环路滤波方法和环路滤波系统,所述方法包括逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波。本发明还提供一种环路滤波系统。根据本发明的环路滤波方法,减少了宏块数据的保存数量,节省了内存空间。并且,本发明减少了子块的读取次数和数据的存取时间,提高了读取的速率,此外,采用规则的滤波顺序,降低了硬件设计的复杂度,硬件开销少。
文档编号H04N7/26GK101715127SQ200910237789
公开日2010年5月26日 申请日期2009年11月19日 优先权日2009年11月19日
发明者戴春泉 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1