运用于图像编解码器中的去方块过滤方法与装置的制作方法

文档序号:7657698阅读:102来源:国知局
专利名称:运用于图像编解码器中的去方块过滤方法与装置的制作方法
技术领域
本发明涉及一种编解码器,且特别涉及一种运用于图像编解码器(VideoCodec)中的去方块过滤方法与装置。
背景技术
近年来,数字播放机、数字电视盒以及个人计算机已可将高品质的图像画质呈现于屏幕上并成为现今数字影音的主流。也就是说,现今的电视节目或者播放机所放映的影音片段都可利用各种不同规格的图像编译码技术来完成高品质的影音输出,其中图像编译码技术也就是所谓的图像压缩与解压缩技术。
以现阶段市面上常见的图像编译码技术至少有MPEG-2、H.264、Divx等等。而微软(Microsoft)于2003年向电影电视工程协会(Society of MotionPicture and Television Engineers,SMPTE)提出其新开发的图像编译码技术称为图像编解码器1(Video Codec 1,以下简称VC-1)。由于VC-1在高分辨率影片上的表现出色,因此已经被电影电视工程协会认定为国际标准。
以现今所有的图像编译码技术为例,数字图像的编码或者译码是基于方块(Block)来进行。也就是说,一个图像图框(Frame)会被切割成为多个方块并用来进行编码或者译码,因此,在译码并且重建图像图框时,每个方块相邻的边缘会看起来不够平顺,此即称为方块现象(Blocking Phenomenon)。为了消除图像图框中的方块现象,必须于图像编解码器中提供一去方块过滤单元(Deblocking Filtering Unit)。
一般来说,图像编解码器中的去方块过滤单元是连接于一移动补偿单元(Motion Compensating Unit),用以接收移动补偿单元所输出具有方块现象的图像图框,而去方块过滤单元进行去方块过滤动作之后即可输出消除方块现象的图像图框。以Y、U、V的颜色空间(Color Space)为例。请参照图1,其所绘示为12个大方块(Macroblock)所组成的像素Y值图像图框。该图像图框由12个大方块组成(MB1~MB12),而每个大方块都包含16×16字节(byte)的数据,也就是说,每一个像素的Y值为一字节。而一个大方块中的16×16字节即代表第1~256个像素(Pixel)所相对应的第1~256字节,而每一个字节即代表图像图框中相对应位置的Y值。再者,以数据总线为32位的内存来说,一个地址可以存四个字节,因此需要64个连续地址来存取一个大方块的数据。而地址排列顺序为由左至右由上至下依序递增,也就是说,第1~4个像素Y值储存在第一个地址(Adr1),第5~8个像素Y值储存在第二个地址(Adr2),依此类推,共有64个地址(Adr64)。换句话说,内存中需要有64个地址来存放一个大方块所需的256个像素Y值。以第六大方块(MB6)为例,16×16字节所代表的第1~256个像素的第1~256字节排列为由左至右,由上而下。再者,以第八大方块(MB8)为例,需要64个连续地址来存取一个大方块的数据,每一个地址可储存4个像素Y值。
再者,由于Y、U、V的颜色空间的数据比例为4∶2∶0,U值的像素图框与V值的像素图框所需要的内存容量较小,而其数据排列的方式同于Y值的像素图框。因此,以下的说明都以Y值的像素图框来做说明。
由于图像编解码器中图像的译码都是以方块为单位来进行。因此,图像编解码器中的移动补偿单元会依序输出如图1所示的大方块一(MB1)至大方块十二(MB12)的数据至去方块过滤单元。也就是说,由大方块一(MB1)至大方块十二(MB12)所组成的图像图框中每个相邻大方块的边界都会有方块现象。因此,大方块边缘的所有像素必须经过去方块过滤单元重新计算并获得一更新的Y值,用以完成没有方块现象的图像图框。以大方块六(MB6)为例,至少第1~第17个字节、第32与33个字节、第48与49个字节、第64与65个像素、第80与81个像素、第96与97个像素、第112与113个像素、第128与129个像素、第144与145个像素、第160与161个像素、第176与177个像素、第192与193个像素、第208与209个像素、第224与225个像素、第240~第256个像素的Y值需要重新计算。而去方块过滤单元每次更新一个像素的Y值时,必须参考该像素附近的多个像素的Y值进行计算,用以获得该像素的更新Y值。
再者,根据VC-1图像编译码技术,去方块过滤单元消除方块现象所需重新计算的像素数目更多。因此,去方块过滤单元将一个大方块进行去方块过滤动作时必须利用一存储缓冲器(Memory Buffer)来暂时储存大方块中256个像素的数据以及该大方块相邻的其它大方块中部分像素的数据。以大方块六(MB6)的去方块过滤动作为例,除了大方块六(MB6)中16×16字节(byte)的数据之外,必须另外利用到上方大方块二(MB2)8×16字节、左方大方块五(MB5)16×8字节、以及左上方大方块一(MB1)8×8字节的数据来运算。也就是说,去方块过滤单元中至少要有一存储缓冲器,用以暂时储存24×24字节的数据,当存储缓冲器中所有需要被更新的像素Y值通过计算并再次储存至存储缓冲器后即代表大方块六(MB6)的去方块过滤动作完成。因此,存储缓冲器内的数据可存至一图框缓冲器(Frame Buffer)中,而接续的大方块七(MB7)的去方块过滤动作即可以再次利用该存储缓冲来进行,并依此类推。当所有的大方块都完成去方块过滤动作后,该图框缓冲器即储存一无方块现象的图像图框。
根据VC-1图像编译码技术,去方块过滤动作包括水平的(Horizontal)去方块过滤动作以及垂直的(vertical)的去方块过滤动作。请参照图2A至图2H,其所绘示为VC-1图像编译码技术中去方块过滤动作示意图。以大方块六(MB6)为例,如图2A至图2D所示,根据VC-1图像编译码技术的规格,水平的(Horizontal)像素需要先进行去方块过滤动作后才可进行垂直的(vertical)像素的去方块过滤动作。而水平的像素进行去方块过滤动作顺序为存储缓冲器中的第8、9列(R8、R9)的像素先进行去方块过滤动作(也就是大方块六(MB6)的水平边界);接着,第4、5列(R4、R5)进行去方块过滤动作;接着,第16、17列(R16、R17)进行去方块过滤动作;接着,第12、13列(R12、R13)进行去方块过滤动作。如图2E至图2H所示,垂直的像素进行去方块过滤动作顺序为存储缓冲器中的第8、9列(C8、C9)先进行去方块过滤动作(也就是大方块六(MB6)的垂直边界);接着,第4、5列(C4、C5)进行去方块过滤动作;接着,第16、17列(C16、C17)进行去方块过滤动作;接着,第12、13列(C12、C13)进行去方块过滤动作。
根据VC-1图像编译码技术的规格,当去方块过滤单元要处理第8、9列(R8、R9)上大方块二(MB2)的第241像素与大方块六(MB6)的第1像素时,如图2A所示,去方块过滤单元共要利用该二像素上下共八个像素来计算更新后的第241与1像素Y值,也就是大方块二(MB2)的第193、209、225、241像素与大方块六(MB6)的第1、17、33、49像素。当去方块过滤单元要处理第8、9列(C8、C9)上大方块一(MB1)的第144像素与大方块二(MB2)的第129像素时,如图2E所示,去方块过滤单元共要利用该二像素左右共八个像素来计算更新后的第144与129像素Y值,也就是大方块一(MB1)的第141~144像素与大块二(MB2)的第129~132像素。
请参照图3,其所绘示为公知图像编解码器中的去方块过滤单元示意图。其中,去方块过滤单元包括一过滤器(Filter)16、一多任务器18、与一存储缓冲器。而存储缓冲器包括一大方块缓冲器(Macroblock buffer)10、一列缓冲器(Column Buffer)12、与一行缓冲器(Row Buffer)14,而大方块缓冲器大小为16×16字节,列缓冲器大小为24×8字节,行缓冲器大小为8×16字节。当过滤器16要处理一像素的去方块过滤动作时,过滤器16必须利用多任务器18来读取存储缓冲器中的该像素附近的多个像素的Y值并进行计算用以产生更新的像素的数值并回存。举例来说,图2A中根据VC-1图像编译码技术进行大方块二(MB2)中第241像素与大方块六(MB6)中第1像素的去方块过滤动作时,过滤器16必须读取大方块二(MB2)中第241、225、209、193共四个像素以及大方块六(MB6)中第1、17、33、49共四个像素的Y值,过滤器16利用八个像素的数值进行计算后获得更新的大方块二(MB2)中第241像素以及大方块六(MB6)中第1像素的数值并且回存至存储缓冲器中。当所有需要被更新的像素的Y值依序被更新完成之后,存储缓冲器中所有像素的Y值即可回存至图框缓冲器,并且由图框缓冲器再次读取后续的大方块及其相关的像素的Y值储存于存储缓冲器并进行去方块过滤动作。
如美国专利申请公开US2006/0013315号申请案所揭示的图像编解码器中的过滤方法、装置与媒介(Filtering method,apparatus,and medium used inaudio-video codec)中,其所揭示的去方块过滤单元于去方块过滤动作时会有存取效率不高的缺点。说明如下由于大方块中所有像素Y值的数据都是以连续地址储存在存储缓冲器中,因此,当去方块过滤单元要进行水平的过滤动作时必须要读取八个地址的数据,举例来说,读取大方块二(MB2)中第241、225、209、193共四个像素以及大方块六(MB6)中第1、17、33、49共四个像素的Y值时,去方块过滤单元必须依序读取大方块二(MB2)中地址49(Adr49)、53(Adr53)、57(Adr57)、61(Adr61)以及大方块六(MB6)中地址1(Adr1)、5(Adr5)、9(Adr9)、13(Adr13)中各一字节的数据来计算。因此,去方块过滤单元必须利用多个内存读取周期(Cycle)才可以读取到八个像素的Y值,之后才可以利用过滤器来计算更新的像素Y值。再者,由于水平像素的去方块过滤动作与垂直像素的去方块过滤动作时的像素Y值读取规则不同,因此,会造成整个去方块过滤单元的控制电路设计非常复杂。

发明内容
如何设计去方块过滤单元中存储缓冲器中的数据排列用以简化控制电路设计达成有效率的去方块方法即为本发明的主要目的。因此,本发明提出一种图像编解码器中去方块过滤方法,包括下列步骤接收由一移动补偿单元输出的一大方块像素数据;将该大方块像素数据划分为多个方块像素数据,并将这些方块像素数据进行一数据调换程序;将完成数据调换程序的这些方块像素数据储存至一存储缓冲器;利用该存储缓冲器中的该大方块像素数据进行该大方块的一水平像素过滤动作用以更新该存储缓冲器中部分的该大方块像素数据;于进行一垂直像素过滤动作之前,将该存储缓冲器中的这些方块像素数据进行该数据调换程序;以及,利用该存储缓冲器中的这些方块像素数据进行该大方块的该垂直像素过滤动作用以更新该存储缓冲器中部分的该大方块像素数据。
本发明还提出一种图像编解码器中去方块过滤装置,包括一存储缓冲器,该存储缓冲器可接收由一移动补偿单元输出的一大方块像素数据,其中,该大方块像素数据可被划分为多个方块像素数据,并且这些方块像素数据已被进行一数据调换程序;一第一输入缓冲器,用以接收由该存储缓冲器中一第一方块像素数据中的部分像素数据;一第二输入缓冲器,用以接收由该存储缓冲器一第二方块像素数据中的部分像素数据;一过滤器,该过滤器根据该第一输入缓冲器与该第二输入缓冲器的这些像素数据来更改该第一输入缓冲器中的这些像素数据的其中之一以及更改该第二输入缓冲器中的这些像素数据的其中之一;一第一输出寄存器组,用以接收该第一输入缓冲器中被更改以及未更改的这些像素数据;一第二输出寄存器组,用以接收该第二输入缓冲器中被更改以及未更改的这些像素数据;以及,一数据调换多任务器,根据一数据调换信号选择性地将该第一输出寄存器组以及该第二输出寄存器组中的这些像素数据进行该数据调换程序或者不进行该数据调换程序,之后将该第一输出寄存器组以及该第二输出寄存器组中的这些像素数据分别回存至该存储缓冲器。
本发明还提出一种图像编解码器中去方块过滤装置,该去方块过滤装置可接收由一移动补偿单元依序输出的多个大方块像素数据,且每一该大方块像素数据可被划分为多个方块像素数据,该去方块过滤装置包括一存储缓冲器,该存储缓冲器至少可划分为一第一存储缓冲单元、一第二存储缓冲单元、一第三存储缓冲单元、与一第四存储缓冲单元,每一存储缓冲单元都可依序储存该大方块像素数据,其中该大方块像素数据中的这些方块像素数据已经过一数据调换程序;以及,一过滤模块,该过滤模块可根据该第二存储缓冲单元与该第三存储缓冲单元中的这些大方块像素数据进行一去方块动作,且将去方块动作后的这些大方块像素数据回存至该第一存储缓冲单元与该第二存储缓冲单元;其中,该过滤模块利用该第二存储缓冲单元与该第三存储缓冲单元中的这些大方块像素数据进行一去方块动作时,该第四存储缓冲单元可接收该数据调换程序后的另一大方块像素数据且该第一存储缓冲单元可将经过去方块动作后所储存的该大方块像素数据传送至一图框缓冲器。


图1所绘示为12个大方块(Macroblock)所组成的像素Y值图像图框。
图2A至图2H所绘示为VC-1图像编译码技术中去方块过滤动作示意图。
图3所绘示为公知图像编解码器中的去方块过滤单元示意图。
图4所绘示为4×4字节的内存数据调换程序示意图。
图5所绘示为存储缓冲器中以4×4字节为方块的排列示意图。
图6A所绘示为本发明去方块单元进行第八行(R8)与第九行(R9)的示意图。
图6B所绘示为本发明去方块单元进行第四行(R4)与第五行(R5)的示意图。
图6C所绘示为本发明去方块单元进行第十六行(R16)与第十七行(R17)的示意图。
图6D所绘示为本发明去方块单元进行第十二行(R12)与第十三行(R13)的示意图。
图6E所绘示为本发明去方块单元进行第八列(C8)与第九列(C9)的示意图。
图6F所绘示为本发明去方块单元进行第四列(C4)与第五列(C5)的示意图。
图6G所绘示为本发明去方块单元进行第十六列(C16)与第十七列(C17)的示意图。
图6H所绘示为本发明去方块单元进行第十二列(C12)与第十三列(C13)的示意图。
图7所绘示为本发明去方块过滤单元示意图。
图8所绘示为本发明另一去方块过滤单元示意图。
其中,附图标记说明如下10大方块缓冲器12列缓冲器14行缓冲器16过滤器18多任务器110存储缓冲器120第一输入寄存器 130第二输入寄存器140过滤器 150第一输出寄存器组160第二输出寄存器组 170数据调换多任务器210存储缓冲器 210a第一存储缓冲单元210b第二存储缓冲单元 210c第三存储缓冲单元210d第四存储缓冲单元 220第一输入寄存器230第二输入寄存器 240过滤器250第一输出寄存器组 260第二输出寄存器组270数据调换多任务器 205存储空间具体实施方式
为了能进一步了解本发明特征及技术内容,请参阅以下有关本发明的详细说明与附图,然而所附附图仅提供参考与说明,并非用来加以限制本发明。
为了要解决公知去方块过滤单元存取存储缓冲器时,必须利用较多的存储读取周期才可以读取到八个像素的Y值。本发明提出一种去方块过滤方法与装置用以解决公知的缺点,并使得控制电路于进行水平像素的去方块过滤动作与垂直像素的去方块过滤动作的数据流都相同。
请参照图4,其所绘示为4×4字节的内存数据调换(Transpose)程序示意图。如图所示,4×4字节的内存其地址为Adr(x)、Adr(x+4)、Adr(x+8)、Adr(x+12)。其中,Adr(x)中的四个字节数据为a0~a3,Adr(x+4)中的四个字节数据为b0~b3、Adr(x+8)中的四个字节数据为c0~c3,Adr(x+12)中的四个字节数据为d0~d3。经过内存数据调换之后,Adr(x)中的四个字节数据为a0~d0,Adr(x+4)中的四个字节数据为a1~d1、Adr(x+8)中的四个字节数据为a2~d2,Adr(x+12)中的四个字节数据为a3~d3。同理,再次执行数据调换程序即是将Adr(x)中的四个字节数据还原为a0~a3,Adr(x+4)中的四个字节数据还原为b0~b3、Adr(x+8)中的四个字节数据还原为c0~c3,Adr(x+12)中的四个字节数据还原为d0~d3。而本发明即是利用此种数据调换来增进像素数据存取效率。
请参照图5,其所绘示为存储缓冲器中以4×4字节为方块(Block)的排列示意图。以大方块六(MB6)为例,大方块六(MB6)中的地址1(Adr1)、地址5(Adr5)、地址9(Adr9)、地址13(Adr13)中的数据即可组成大方块六(MB6)中的方块一(B1)。同理,大方块六(MB6)中的地址2(Adr2)、地址6(Adr6)、地址10(Adr10)、地址14(Adr14)中的数据即可组成大方块六(MB6)中的方块二(B2),并依此类推。因此,如图5所示,当去方块过滤单元进行大方块六(MB6)的去方块过滤动作时,存储缓冲器必须另行储存大方块一(MB1)的方块十一(B11)、方块十二(B12)、方块十五15(B15)、方块十六(B16);大方块五(MB5)的方块三(B3)、方块四(B4)、方块七(B7)、方块八(B8)、方块十一(B11)、方块十二(B12)、方块十五15(B15)、方块十六(B16);以及,大方块二(MB2)的方块九(B9)、方块十(B10)、方块十一(B11)、方块十二(B12)、方块十三(B13)、方块十四(B14)、方块十五15(B15)、方块十六(B16)中的数据用以进行去方块过滤动作。
根据本发明的实施例,当图像编解码器中去方块过滤单元接收由移动补偿单元所输出的大方块数据时,去方块过滤单元必须先以方块为单位进行数据调换程序,之后,将进行数据调换程序后的方块暂存于存储缓冲器中。而去方块过滤单元即可开始进行水平像素的去方块过滤动作。而图6A即为以方块为单位经过数据调换程序后存储缓冲器中的像素Y值的数据排列。
请参照图6A,其所绘示为本发明去方块单元进行第八行(R8)与第九行(R9)的示意图。由图2A可知,当去方块过滤单元更新第八行(R8)中大方块一(MB1)的第253像素Y值以及第九行(R9)中大方块五(MB5)的第13像素Y值时必须读取该二像素上下共八个像素Y值,亦即,大方块一(MB1)第205像素、第221像素、第237像素、第253像素以及大方块五(MB5)第13像素、第29像素、第45像素、第61像素的像素Y值。请再参照图6A,由于本发明将数据储存至存储缓冲器前先进行数据调换程序,因此,上述八个像素Y值恰可储存在二个地址中,也就是,大方块一(MB1)的第52地址(Adr52)以及大方块五(MB5)第4地址(Adr4)。因此,去方块单元仅需发出二个读取指令读取上述二地址的数据及可以获得八个像素Y值,并且更新第253像素Y值以及第13像素Y值并回存至该存储缓冲器中相同的地址。
同理,当去方块过滤单元更新第八行(R8)中大方块一(MB1)的第254像素Y值以及第九行(R9)中大方块五(MB5)的第14像素Y值时,去方块单元仅需发出二个读取指令读取大方块一(MB1)的第56地址(Adr56)以及大方块五(MB5)第8地址(Adr8)内的八笔像素Y值进行计算即可获得更新后的第254像素Y值以及第14像素Y值并回存至该存储缓冲器中相同的地址。接着,读取大方块一(MB1)的第60地址(Adr60)以及大方块二(MB2)的第12地址(Adr12)内的八笔像素继续计算更新的像素Y值,并依此类推即可以完成第八行(R8)与第九行(R9)的水平像素的去方块过滤动作。上述的范例都是利用32位(bits)的数据总线来读取存储缓冲器,也就是说,去方块过滤单元需要发出二个读取指令来获得八笔像素Y值。当然本发明还可以利用64位(bits)的数据总线来读取存储缓冲器,也就是说,通过适当的数据排列可使得去方块过滤单元仅需要发出一个读取指令即可获得八笔像素Y值。
再者,当第八行(R8)与第九行(R9)的水平像素的去方块过滤动作完成后,请参照图6B,其所绘示为本发明去方块单元进行第四行(R4)与第五行(R5)的示意图。根据图2B的绘示,当去方块过滤单元更新第四行(R4)与第五行(R5)中大方块一(MB1)的第189像素Y值与第205像素Y值时,必须读取该二像素上下共八个像素Y值,亦即,大方块一(MB1)第141像素、第157像素、第173像素、第189像素、第205像素、第221像素、第237像素、第253像素的像素Y值;其中,该第253像素的像素Y值已经在第八行(R8)与第九行(R9)的水平像素的去方块过滤动作时被更新。因此,由图6B可知,去方块单元仅需发出二个读取指令读取大方块一(MB1)的第36地址(Adr36)以及第52地址(Adr52)内的八笔像素Y值进行计算即可获得更新后的第189像素Y值以及第205像素Y值并回存至该存储缓冲器中相同的地址。接着,读取大方块一(MB1)的第40地址(Adr40)以及第56地址(Adr56)内的八笔像素继续计算更新的像素Y值,并依此类推即可以完成第四行(R4)与第五行(R5)的水平像素的去方块过滤动作。根据本发明的实施例,由于第四行(R4)与第五行(R5)的水平像素的去方块过滤动作完成后,第一大方块(MB1)与第二大方块(MB2)中所有的像素Y值在后续的水平像素的去方块过滤动作中将不再被读取,因此,第一大方块(MB1)与第二大方块(MB2)中所有的像素Y值可以方块为单位进行数据调换程序。而完成第一大方块(MB1)与第二大方块(MB2)的数据调换程序后,存储缓冲器的数据排列如图6C中的第一大方块(MB1)与第二大方块(MB2)所示。
再者,当第四行(R4)与第五行(R5)的水平像素的去方块过滤动作完成后,请参照图6C,其所绘示为本发明去方块单元进行第十六行(R16)与第十七行(R17)的示意图。根据图2C的绘示,当去方块过滤单元更新第十七行(R17)与第十八行(R18)中大方块五(MB5)的第125像素Y值与第141像素Y值时,必须读取该二像素上下共八个像素Y值,亦即,大方块五(MB5)第77像素、第93像素、第109像素、第125像素、第141像素、第157像素、第173像素、第189像素的像素Y值。由图6C可知,去方块单元仅需发出二个读取指令读取大方块五(MB5)的第20地址(Adr20)以及第36地址(Adr36)内的八笔像素Y值进行计算即可获得更新后的第125像素Y值以及第141像素Y值并回存至该存储缓冲器中相同的地址。接着,读取大方块五(MB5)的第24地址(Adr24)以及第40地址(Adr40)内的八笔像素继续计算更新的像素Y值,并依此类推即可以完成第十六行(R16)与第十七行(R17)的水平像素的去方块过滤动作。
接着,当第十六行(R16)与第十七行(R17)的水平像素的去方块过滤动作完成后,请参照图6D,其所绘示为本发明去方块单元进行第十二行(R12)与第十三行(R13)的示意图。根据图2D的绘示,当去方块过滤单元更新第十二行(R12)与第十三行(R13)中大方块五(MB5)的第61像素Y值与第77像素Y值时,必须读取该二像素上下共八个像素Y值,亦即,大方块五(MB5)第13像素、第29像素、第45像素、第61像素、第77像素、第93像素、第109像素、第125像素的像素Y值;其中,该第13像素的像素Y值已经在第八行(R8)与第九行(R9)的水平像素的去方块过滤动作时被更新;该第125像素的像素Y值已经在第十六行(R16)与第十七行(R17)的水平像素的去方块过滤动作时被更新。由图6D可知,去方块单元仅需发出二个读取指令读取大方块五(MB5)的第4地址(Adr4)以及第20地址(Adr20)内的八笔像素Y值进行计算即可获得更新后的第61像素Y值以及第77像素Y值并回存至该存储缓冲器中相同的地址。接着,读取大方块五(MB5)的第8地址(Adr8)以及第24地址(Adr24)内的八笔像素继续计算更新的像素Y值,并依此类推即可以完成第十二行(R12)与第十三行(R13)的水平像素的去方块过滤动作。根据本发明的实施例,由于第十二行(R12)与第十三行(R13)的水平像素的去方块过滤动作完成后,所有的水平像素的去方块过滤动作都已完成,因此,第五大方块(MB5)与第六大方块(MB6)中所有的像素Y值可以方块为单位进行数据调换程序。而完成第五大方块(MB5)与第六大方块(MB6)的数据调换程序后,存储缓冲器的数据排列如图6E所示中的第五大方块(MB5)与第六大方块(MB6)所示。
当所有的水平像素的去方块过滤动作都已完成后,去方块过滤单元接着进行垂直像素的去方块过滤动作。请参照图6E,其所绘示为本发明去方块单元进行第八列(C8)与第九列(C9)的示意图。由于存储缓冲器中所有大方块的数据都已进行数据调换程序,因此,当去方块过滤单元更新第八列(C8)中大方块一(MB1)的第144像素Y值与第九列(C9)中大方块二(MB2)的第129像素Y值时,必须读取该二像素左右共八个像素Y值,亦即,大方块一(MB1)第141像素、第142像素、第143像素、第144像素与大方块二(MB2)第129像素、第130像素、第131像素、第132像素的像素Y值。由图6E可知,去方块单元仅需发出二个读取指令读取大方块一(MB1)的第36地址(Adr36)以及大方块二(MB2)的第33地址(Adr33)内的八笔像素Y值进行计算即可获得更新后的第144像素Y值以及第129像素Y值并回存至该存储缓冲器中相同的地址。接着,读取大方块一(MB1)的第40地址(Adr40)以及大方块二(MB2)的第37地址(Adr37)内的八笔像素继续计算更新的像素Y值,并依此类推即可以完成第八列(C8)与第九列(C9)的垂直像素的去方块过滤动作。
当完成第八列(C8)与第九列(C9)的垂直像素的去方块过滤动作后。请参照图6F,其所绘示为本发明去方块单元进行第四列(C4)与第五列(C5)的示意图。当去方块过滤单元更新第四列(C4)与第五列(C5)中大方块一(MB1)的第140像素与第141像素Y值时,必须读取该二像素左右共八个像素Y值,亦即,大方块一(MB1)第137像素、第138像素、第139像素、第140像素、第141像素、第142像素、第143像素、第144像素的像素Y值。其中,该第144像素的像素Y值已经在第八列(C8)与第九列(C9)的垂直像素的去方块过滤动作时被更新。由图6F可知,去方块单元仅需发出二个读取指令读取大方块一(MB1)的第35地址(Adr35)以及第36地址(Adr36)内的八笔像素Y值进行计算即可获得更新后的第140像素Y值以及第141像素Y值并回存至该存储缓冲器中相同的地址。接着,读取大方块一(MB1)的第39地址(Adr39)以及第40地址(Adr40)内的八笔像素继续计算更新的像素Y值,并依此类推即可以完成第四列(C4)与第五列(C5)的垂直像素的去方块过滤动作。
当完成第四列(C4)与第五列(C5)的垂直像素的去方块过滤动作后。请参照图6G,其所绘示为本发明去方块单元进行第十六列(C16)与第十七列(C17)的示意图。当去方块过滤单元更新第十六列(C16)与第十七列(C17)中大方块二(MB2)的第136像素Y值与第137像素Y值时,必须读取该二像素左右共八个像素Y值,亦即,大方块二(MB2)第133像素、第134像素、第135像素、第136像素、第137像素、第138像素、第139像素、第140像素的像素Y值。由图6G可知,去方块单元仅需发出二个读取指令读取大方块二(MB2)的第34地址(Adr34)以及第35地址(Adr35)内的八笔像素Y值进行计算即可获得更新后的第136像素Y值以及第137像素Y值并回存至该存储缓冲器中相同的地址。接着,读取大方块二(MB2)的第38地址(Adr38)以及第39地址(Adr39)内的八笔像素继续计算更新的像素Y值,并依此类推即可以完成第十六列(C16)与第十七列(C17)的垂直像素的去方块过滤动作。
当完成第十六列(C16)与第十七列(C17)的垂直像素的去方块过滤动作后。请参照图6H,其所绘示为本发明去方块单元进行第十二列(C12)与第十三列(C13)的示意图。当去方块过滤单元更新第十二列(C12)与第十三列(C13)中大方块二(MB2)的第132像素与第133像素Y值时,必须读取该二像素左右共八个像素Y值,亦即,大方块二(MB2)第129像素、第130像素、第131像素、第132像素、第133像素、第134像素、第135像素、第136像素的像素Y值。其中,该第129像素的像素Y值已经在第八列(C8)与第九列(C9)的垂直像素的去方块过滤动作时被更新;该第136像素的像素Y值已经在第十六列(C16)与第十七列(C17)的垂直像素的去方块过滤动作时被更新。由图6H可知,去方块单元仅需发出二个读取指令读取大方块二(MB2)的第33地址(Adr33)以及第34地址(Adr34)内的八笔像素Y值进行计算即可获得更新后的第132像素Y值以及第133像素Y值并回存至该存储缓冲器中相同的地址。接着,读取大方块二(MB2)的第37地址(Adr37)以及第38地址(Adr38)内的八笔像素继续计算更新的像素Y值,并依此类推即可以完成第十二列(C12)与第十三列(C13)的垂直像素的去方块过滤动作,并完成所有垂直像素的去方块过滤动作。
以上的实施例都以存储缓冲器具有32位(bits)的数据总线为例,也就是说,去方块过滤单元发出二个读取指令即可以获得八个像素的像素Y值,并且利用VC-1规格书所揭示的方式计算出更新的像素Y值。当然本发明还可以利用64位(bits)的数据总线来读取存储缓冲器,也就是说,通过适当的数据排列存储缓冲器中的数据位置可使得去方块过滤单元仅需要发出一个读取指令即可获得八笔像素Y值。
请参照图7,其所绘示为本发明去方块过滤单元示意图。其中,该去方块过滤单元至少包括一存储缓冲器110、一第一输入寄存器120、一第二输入寄存器130、一过滤器140、一第一输出寄存器组150、一第二输出寄存器组160、与一数据调换多任务器170。根据本发明的实施例,去方块过滤单元进行像素Y值的去方块处理动作时需要大小为576字节(24×24字节)的存储缓冲器110用以储存一个大方块的像素Y值以及三个大方块的部分像素Y值。再者,当移动补偿单元以大方块为单位传送像素Y值到去方块过滤单元时,去方块过滤单元会以方块为单位进行数据调换程序后再储存至存储缓冲器110。
如图7所示,当去方块过滤单元开始进行水平像素的去方块过滤动作,去方块过滤单元会读取存储缓冲器110中的八个像素Y值并分别暂存至第一输入寄存器(register)120与第二输入寄存器130,亦即,P3、P2、P1、P0以及Q3、Q2、Q1、Q0。根据本发明的实施例,存储缓冲器110的数据总线宽度为64位,也就是说,利用一个读取周期即可以读取八个像素Y值。
接着,过滤器140可根据第一输入寄存器(register)120与第二输入寄存器130中的像素Y值计算出更新的像素Y值并储存至第一输出寄存器组150与第二输出寄存器组160,也就是说,过滤器140更新P0与Q3的像素Y值并且维持P3、P2、P1以及Q2、Q1、Q0的像素Y值。
根据本发明的实施例,第一输出寄存器组150与第二输出寄存器组160中都包含四个寄存器,每一个寄存器都可以储存32位的数据。而当过滤器140计算出更新的像素Y值后,P3、P2、P1、P0以及Q3、Q2、Q1、Q0会分别的储存至第一输出寄存器组150与第二输出寄存器组160中的一个寄存器。再者,当去方块过滤单元会发出四次读取周期且过滤器140进行四次更新像素Y值后,第一输出寄存器组150与第二输出寄存器组160已经存满,此时,去方块处理单元会以方块为单位储存回原地址。
再者,数据调换多任务器170可以根据一数据调换信号来选择性的接收第一输出寄存器组150与第二输出寄存器160中未经过数据调换程序的方块或者接收第一输出寄存器组150与第二输出寄存器160中经过数据调换程序的方块。举例来说,当去方块过滤单元进行第四行(R4)与第五行(R5)的水平像素的去方块过滤动作时,以方块为单位回存至存储缓冲器110的数据必须进行数据调换程序。也就是说,去方块过滤单元进行水平像素的去方块过滤动作时,假如方块在后续的水平像素的去方块过滤动作程序中不会再次被利用时,该方块回存至存储缓冲器110就必须经过数据调换程序。
同理,当去方块过滤单元开始进行垂直像素的去方块过滤动作时,去方块过滤单元即可读取存储缓冲器110中的八个像素Y值并分别暂存至第一输入寄存器120与第二输入寄存器130。当过滤器140计算出更新的像素Y值后,P3、P2、P1、P0以及Q3、Q2、Q1、Q0会分别的储存至第一输出寄存器组150与第二输出寄存器组160中的一个寄存器。而其所有的处理程序与水平像素的去方块过滤动作相同。
当存储缓冲器110己进行完成所有像素的去方块过滤动作后,该存储缓冲器110内的所有数据都会被移动至图框缓冲器中。之后,该存储缓冲器会接收后续大方块的数据并进行去方块过滤动作。举例来说,当大方块六(MB6)的去方块过滤动作完成后且存储缓冲器110内的所有数据被移动至图框缓冲器后,存储缓冲器110会接收大方块七(MB7)的所有像素Y值以及大方块六(MB6)、大方块二(MB2)、大方块三(MB3)部分的像素Y值并进行去方块过滤动作。
为了要提高去方块过滤单元的效率,请参照图8,其所绘示为本发明另一去方块过滤单元示意图。其中,该去方块过滤单元至少包括一存储缓冲器210、一第一输入寄存器220、一第二输入寄存器230、一过滤器240、一第一输出寄存器组250、一第二输出寄存器组260、与一数据调换多任务器270。根据本发明的实施例,去方块过滤单元进行像素Y值的去方块处理动作时需要四个大小为384字节(24×16字节)的存储缓冲单元,亦即,大小都为384字节的第一存储缓冲单元210a、第二存储缓冲单元210b、第三存储缓冲单元210c、第四存储缓冲单元210d。
举例来说,假设第五大方块的像素Y值储存在第二存储缓冲单元210b的下面部分,第六大方块的像素Y值储存在第三存储缓冲单元210c的下面部分,第二存储缓冲单元210b的上面部分为第一大方块部分的像素Y值,第三存储缓冲单元210c的上面部分为第二大方块部分的像素Y值。当去方块过滤单元进行大方块六(MB6)的去方块过滤动作时,必须利用到第二存储缓冲单元210b以及第三存储缓冲单元210c中共576(24×24)字节的像素Y值,亦即图8的存储空间205。为了要提高去方块过滤单元的效率,去方块过滤单元进行第六大方块(MB6)的去方块过滤动作时,移动补偿单元可以继续将第七大方块(MB7)中的像素Y值以方块为单位进行数据调换程序并储存至第四存储缓冲单元210d,同时,第一存储缓冲单元210a中已经完成去方块过滤动作的第四大方块(MB4)内的像素Y值也可以移到图框缓冲器。
当第六大方块(MB6)完成去方块过滤动作后,第四存储缓冲单元210d中的第七大方块(MB7)中的像素Y值已经储存完毕,且第一存储缓冲单元210a中的第四大方块(MB4)内的像素Y值也已经移到图框缓冲器。此时,即可进行大方块七(MB7)的去方块过滤动作,且必须利用到第三存储缓冲单元210c以及第四存储缓冲单元210d中共576(24×24)字节的像素Y值,亦即存储空间205往右移动一个存储缓冲单元。此时,移动补偿单元可以继续将第八大方块(MB8)中的像素Y值以方块为单位进行数据调换程序并储存至第一存储缓冲单元210a,同时,第二存储缓冲单元210b中已经完成去方块过滤动作的第五大方块(MB5)内的像素Y值也可以移到图框缓冲器。
也就是说,存储缓冲器实际上为一循环缓冲器(Ring Buffer),在去方块过滤单元进行去方块过滤动作时,二个存储缓冲单元中的一个存储空间可用来进行特定大方块的去方块过滤动作,一个存储缓冲单元可用来持续储存下一个大方块的像素Y值,一个存储缓冲单元可用来将大方块的像素Y值移到图框缓冲器。
如前所述,在实际实现本发明时,存储缓冲器110(或210)可以由两个各32位的存储模块A、B(未图标)来形成,并将上下左右相邻的方块分别储存于不同的存储模块。以图5为例,大方块MB1的方块B16可储存于存储模块A、相邻的方块(大方块MB2的方块B13)可储存于存储模块B;其下的方块(大方块MB6的方块B1)可储存于存储模块A而大方块MB5的方块B4可储存于存储模块B。这种交错存取可充分利用64位的数据总线宽度,在同一个读取周期中就可从存储模块A、B中分别取得要进行滤波处理的四个像素。比如说,在图6A的行R8、R9处理例中,本发明就可以在同一读取周期中由存储模块A中取得大方块MB1的像素205、221、237、253,并由存储模块B中取得大方块MB5的像素13、29、45、61,以进行去方块滤波处理。换句话说,存储模块A的数据可提供至过滤器的R8行输入端,存储模块B的数据可提供至过滤器的R9行输入端以进行R8-R9行的去方块处理;而过滤器的R8/R9行输出也可分别回存至存储模块A/B。同理,本发明也可在同一读取周期中由存储模块B中取得大方块MB2的像素193、209、225、241,并由存储模块A中取得大方块MB6的像素1、17、33、49来进行滤波处理。不过,在此情形下,由于R8行的像素是储存于存储模块B而R9行的像素是储存于存储模块A,故要交错地将存储模块B的数据传输至过滤器的R8行输入端,并要将存储模块A的数据传输至过滤器的R9行输入端,如此才能正确进行R8-R9行的去方块处理。另外,过滤器处理后的R8/R9行输出也要交错地分别回存至存储模块B/A。本发明可在过滤器的输入端与输出端分别设置控制交错机制以控制过滤器的输出入交错。
众所周知,Y、U、V的颜色空间的数据比例为4∶2∶0。因此,像素U值以及像素V值进行去方块过滤动作,也必须利用上述方式来进行,其差异仅在于存储缓冲器的容量较小,而数据调换程序的时机都相同。
综上所述,虽然本发明已以较佳实施例揭示如上,然而其并非用以限定本发明,任何熟悉此技术的技术人员,在不脱离本发明的精神和范围内,当可作各种变动与润饰,因此本发明的保护范围当以后附的权利要求书为准。
权利要求
1.一种图像编解码器中去方块过滤方法,包括下列步骤接收由一移动补偿单元输出的一大方块像素数据;将该大方块像素数据划分为多个方块像素数据,并将所述方块像素数据进行一数据调换程序;将完成数据调换程序的所述方块像素数据储存至一存储缓冲器;利用该存储缓冲器中的该大方块像素数据进行该大方块的一水平像素过滤动作用以更新该存储缓冲器中部分的该大方块像素数据;于进行一垂直像素过滤动作之前,将该存储缓冲器中的所述方块像素数据进行该数据调换程序;以及利用该存储缓冲器中的所述方块像素数据进行该大方块的该垂直像素过滤动作用以更新该存储缓冲器中部分的该大方块像素数据。
2.如权利要求1所述的图像编解码器中去方块过滤方法,还包括将完成该水平像素过滤动作与该垂直像素过滤动作后该存储缓冲区内的该大方块像素数据传送至一图框缓冲器。
3.如权利要求1所述的图像编解码器中去方块过滤方法,其中每一该方块像素数据包含4×4字节,即包括置于第一地址的a0~a3位、第二地址的b0~b3位、第三地址的c0~c3位、与第四地址的d0~d3位。
4.如权利要求3所述的图像编解码器中去方块过滤方法,其中该数据调换程序将每一该方块像素数据中的第一地址改为a0~d0位、第二地址改为a1~d1位、第三地址改为a2~d2位、第四地址改为a3~d3位。
5.如权利要求3所述的图像编解码器中去方块过滤方法,其中执行一次该水平像素过滤动作用时需由两个方块像素数据中读取一个地址中的四个位数据来进行。
6.如权利要求3所述的图像编解码器中去方块过滤方法,其中执行一次该垂直像素过滤动作用时需由两个方块像素数据中读取一个地址中的四个位数据来进行。
7.如权利要求1所述的图像编解码器中去方块过滤方法,其中该大方块像素数据包括多个像素Y值数据、多个像素U值数据、或者多个像素V值数据。
8.一种图像编解码器中去方块过滤装置,包括一存储缓冲器,该存储缓冲器可接收由一移动补偿单元输出的一大方块像素数据,其中,该大方块像素数据可被划分为多个方块像素数据,并且所述方块像素数据已被进行一数据调换程序;一第一输入缓冲器,用以接收由该存储缓冲器中一第一方块像素数据中的部分像素数据;一第二输入缓冲器,用以接收由该存储缓冲器一第二方块像素数据中的部分像素数据;一过滤器,该过滤器根据该第一输入缓冲器与该第二输入缓冲器的所述像素数据来更改该第一输入缓冲器中的所述像素数据的其中之一以及更改该第二输入缓冲器中的所述像素数据的其中之一;一第一输出寄存器组,用以接收该第一输入缓冲器中被更改以及未更改的所述像素数据;一第二输出寄存器组,用以接收该第二输入缓冲器中被更改以及未更改的所述像素数据;以及一数据调换多任务器,根据一数据调换信号选择性地将该第一输出寄存器组以及该第二输出寄存器组中的所述像素数据进行该数据调换程序或者不进行该数据调换程序,之后将该第一输出寄存器组以及该第二输出寄存器组中的所述像素数据分别回存至该存储缓冲器。
9.如权利要求8所述的图像编解码器中去方块过滤装置,其中,该存储缓冲器可将回存至该存储缓冲器的所述像素数据传送至一图框缓冲器。
10.如权利要求8所述的图像编解码器中去方块过滤装置,其中每一该方块像素数据包含4×4字节,即包括置于第一地址的a0~a3位、第二地址的b0~b3位、第三地址的c0~c3位、与第四地址的d0~d3位。
11.如权利要求10所述的图像编解码器中去方块过滤装置,其中该数据调换程序将每一该方块像素数据中的第一地址改为a0~d0位、第二地址改为a1~d1位、第三地址改为a2~d2位、第四地址改为a3~d3位。
12.如权利要求10所述的图像编解码器中去方块过滤装置,其中该第一输入缓冲器与该第二输入缓冲器由该第一方块像素数据与该第二方块像素数据中读取一个地址中的四个位数据。
13.如权利要求8所述的图像编解码器中去方块过滤装置,其中该大方块像素数据包括多个像素Y值数据、多个像素U值数据、或者多个像素V值数据。
14.一种图像编解码器中去方块过滤装置,该方块过滤装置可接收由一移动补偿单元依序输出的多个大方块像素数据,且每一该大方块像素数据可被划分为多个方块像素数据,该去方块过滤装置包括一存储缓冲器,该存储缓冲器至少可划分为一第一存储缓冲单元、一第二存储缓冲单元、一第三存储缓冲单元、与一第四存储缓冲单元,每一存储缓冲单元都可依序储存该大方块像素数据,其中该大方块像素数据中的所述方块像素数据已经过一数据调换程序;以及一过滤模块,该过滤模块可根据该第二存储缓冲单元与该第三存储缓冲单元中的所述大方块像素数据进行一去方块动作,且将去方块动作后的所述大方块像素数据回存至该第一存储缓冲单元与该第二存储缓冲单元;其中,该过滤模块利用该第二存储缓冲单元与该第三存储缓冲单元中的所述大方块像素数据进行一去方块动作时,该第四存储缓冲单元可接收该数据调换程序后的另一大方块像素数据且该第一存储缓冲单元可将经过去方块动作后所储存的该大方块像素数据传送至一图框缓冲器。
15.如权利要求14所述的图像编解码器中去方块过滤装置,其中,该过滤模块包括一第一输入缓冲器,用以接收由该第二存储缓冲单元与该第三存储缓冲单元内一第一方块像素数据中的部分像素数据;一第二输入缓冲器,用以接收由该第二存储缓冲单元与该第三存储缓冲单元内一第二方块像素数据中的部分像素数据;一过滤器,该过滤器根据该第一输入缓冲器与该第二输入缓冲器的所述像素数据来更改该第一输入缓冲器中的所述像素数据的其中之一以及更改该第二输入缓冲器中的所述像素数据的其中之一;一第一输出寄存器组,用以接收该第一输入缓冲器中被更改以及未更改的所述像素数据;一第二输出寄存器组,用以接收该第二输入缓冲器中被更改以及未还改的所述像素数据;以及一数据调换多任务器,根据一数据调换信号选择性地将该第一输出寄存器组以及该第二输出寄存器组中的所述像素数据进行该数据调换程序或者不进行该数据调换程序,之后将该第一输出寄存器组以及该第二输出寄存器组中的所述像素数据分别回存至该第二存储缓冲单元与该第三存储缓冲单元。
16.如权利要求15所述的图像编解码器中去方块过滤装置,其中该第一输入缓冲器与该第二输入缓冲器由该第一方块像素数据与该第二方块像素数据中读取一个地址中的四个位数据。
17.如权利要求14所述的图像编解码器中去方块过滤装置,其中每一该方块像素数据包含4×4字节,即包括置于第一地址的a0~a3位、第二地址的b0~b3位、第三地址的c0~c3位、与第四地址的d0~d3位。
18.如权利要求14所述的图像编解码器中去方块过滤装置,其中该数据调换程序将每一该方块像素数据中的第一地址改为a0~d0位、第二地址改为a1~d1位、第三地址改为a2~d2位、第四地址改为a3~d3位。
19.如权利要求14所述的图像编解码器中去方块过滤装置,其中该大方块像素数据包括多个像素Y值数据、多个像素U值数据、或者多个像素V值数据。
全文摘要
本发明揭示一种运用于图像编解码器中的去方块过滤方法与装置,该方法包括接收由一移动补偿单元输出的一大方块像素数据;将该大方块像素数据划分为多个方块像素数据,并将这些方块像素数据进行一数据调换程序;将完成数据调换程序的这些方块像素数据储存至一存储缓冲器;利用该存储缓冲器中的该大方块像素数据进行该大方块的一水平像素过滤动作用以更新该存储缓冲器中部分的该大方块像素数据;在进行一垂直像素过滤动作之前,将该存储缓冲器中的这些方块像素数据进行该数据调换程序;以及利用该存储缓冲器中的这些方块像素数据进行该大方块的该垂直像素过滤动作用以更新该存储缓冲器中部分的该大方块像素数据。
文档编号H04N7/26GK101080009SQ200710127900
公开日2007年11月28日 申请日期2007年7月17日 优先权日2007年7月17日
发明者王炳尧, 蔡伟泰 申请人:智原科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1