纹理砖压缩及解压缩方法以及使用该方法的装置与流程

文档序号:12498315阅读:191来源:国知局
纹理砖压缩及解压缩方法以及使用该方法的装置与流程
本发明涉及一种视频编码技术,特别是一种纹理砖压缩及解压缩方法以及使用该方法的装置。
背景技术
:图像压缩使用先进的编码技术,用以移除图像数据中的冗余。于目前的高分辨率屏幕,例如4K屏幕,图形处理中的纹理砖若全部使用无损压缩,可能需要耗费大量的内存空间,进而增加硬件成本。因此,需要一种纹理砖压缩及解压缩方法以及使用该方法的装置,用以节省内存空间的使用。技术实现要素:本发明的实施例提出一种纹理砖压缩方法,至少包含以下步骤。无损压缩纹理砖的原始数据后,判断原始数据的无损压缩结果的长度是否大于目标长度。如果是,执行多层次数据缩减控制,用以缩减原始数据以产生缩减数据,并且产生缩减数据的无损压缩结果,使得缩减数据的无损压缩结果的长度小于或等于目标长度。本发明的实施例提出一种纹理砖压缩装置,至少包含内存控制器、压缩器、减法器以及数据缩减控制器。数据缩减控制器耦接至内存控制器、压缩器及减法器,指示内存控制器输出纹理砖的原始数据至压缩器,使得压缩器产生原始数据的无损压缩结果,并且判断原始数据的无损压缩结果的长度是否大于目标长度。当原始数据的无损压缩结果的长度大于目标长度时,数据缩减控制器执行多层次数据缩减控制,用以指示减法器缩减原始数据以产生缩减数据,并指示内存控制器输出缩减数据至压缩器,使得压缩器产生缩减数据的无损压缩结果,其中,缩减数据的无损压缩结果的长度小于或等于目标长度。本发明的实施例提出一种纹理砖解压缩方法,至少包含以下步骤。于接收压缩结果及减损程度旗标后,解压缩压缩结果以产生解压缩数据,并依据减损程度旗标判断压缩结果是否经过数据缩减。当压缩结果经过数据缩减时,恢复解压缩数据至原始长度以产生恢复结果,以及输出恢复结果给三维绘图流水线中的纹理操作。附图说明图1是依据本发明实施例的纹理砖压缩方法流程图。图2是依据本发明实施例的纹理砖压缩装置的方块图。图3是依据本发明实施例的纹理砖解压缩方法流程图。图4A及4B是依据本发明实施例的纹理砖示意图。图5是依据本发明实施例的纹理砖压缩方法流程图。图6A及6B是依据本发明实施例的纹理砖分群示意图。图7是依据本发明实施例的纹理砖压缩装置的方块图。图8是依据本发明实施例的纹理砖解压缩方法流程图。具体实施方式以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的
发明内容必须参考之后的权利要求范围。必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。在权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。为了不影响纹理砖的信息,本发明实施例首先无损压缩纹理砖的原始数据,并且判断原始数据的无损压缩结果的长度是否降低至目标长度之内。当原始数据的无损压缩结果的长度大于目标长度时,对原始数据进行缩减。然而,数据缩减会减损纹理砖的原始数据的信息。为了让压缩后纹理砖的信息缩减程度越低越好,本发明实施例提出一种多层次数据缩减控制,最小程度地缩减原始数据来产生缩减数据,并且产生缩减数据的无损压缩结果,使得缩减数据的无损压缩结果的长度小于或等于目标长度。于多层次数据缩减控制中,先缩减原始数据至一个程度以产生缩减数据,并且无损压缩此缩减数据。当缩减数据的无损压缩结果的长度不能降低至目标长度时,对原始数据进行更大程度的缩减(亦即是,下一层次的缩减)。此外,当数据缩减的次数达到默认值时,直接将原始数据缩减至目标长度之内的长度,用以避免消耗太多时间来执行数据缩减及无损压缩。图1是依据本发明实施例的纹理砖压缩方法流程图。此方法可执行于纹理编码器(textureencoder)。于接收一个纹理砖(texturetile)的原始数据后(步骤S110),对原始数据执行无损压缩算法(步骤S131)。举例来说,纹理砖可包含8x8画素,格式可为RGBA8888,其中,R、G、B及A通道各使用8比特表示,使得原始数据的长度为2048比特。目标长度可设为1024比特。接着,计算无损压缩结果的长度(步骤S133),并判断是否超过目标长度(步骤S151)。如果没有超过目标长度(步骤S151中“否”的路径),代表原始数据的无损压缩成功,输出无损压缩结果及减损程度旗标(lossy-levelflag)(步骤S190)。减损程度旗标可为“0b00”,表示纹理砖的原始数据没有经过缩减。如果超过目标长度(步骤S151中“是”的路径),代表原始数据的无损压缩失败,接着,进行多层次的数据缩减(步骤S171或S173)以及对缩减后纹理砖数据进行无损压缩(步骤S131)。在每个层次的数据缩减及缩减后纹理砖数据的无损压缩中,首先判断执行过的数据缩减次数是否超过默认值(步骤S153)。可使用计数器来表示执行过的数据缩减次数。计数器初始为0,并且于每次执行完缩减纹理砖的原始数据后(步骤S171),将计数器加1。如果没有超过默认值(步骤S153中“否”的路径),缩减纹理砖的原始数据(步骤S171)。如果超过默认值(步骤S153中“是”的路径),缩减纹理砖的原始数据至目标长度之内的长度(步骤S173)。于一些实施例中,可使用公式(1)、(2)及(3)来缩减纹理砖的原始数据:Ri=Ri/mj(1)Gi=Gi/mj(2)Bi=Bi/mj(3)Ri代表原始数据的第i个画素的R值,Gi代表原始数据的第i个画素的G值,Bi代表原始数据的第i个画素的B值,以及mj代表第j次数据缩减的常数且j越大则mj越大。于此须注意的是,公式(1)至(3)产生的余数直接舍弃。于一些实施例中,步骤S153的默认值可设为2。此外,m1可设为2,m2可设为3,m3可设为8。于第一层数据缩减时,可将纹理砖的原始数据(包含R、G及B通道,或者R、G、B及A通道)除以m1(步骤S171)。接着,对缩减数据执行无损压缩算法(步骤S131),并判断无损压缩结果的长度是否超过目标长度(步骤S151)。如果没有超过目标长度(步骤S151中“否”的路径),代表缩减数据的无损压缩成功,输出缩减数据的无损压缩结果及减损程度旗标“0b01”,用以表示纹理砖的原始数据已经过第一层数据缩减(步骤S190)。如果超过目标长度(步骤S151中“是”的路径),代表原始数据压缩失败,接着,进行下一层次的数据缩减处理(步骤S153、S171及S173)。于第二层数据缩减时,可将纹理砖的原始数据(包含R、G及B通道,或者R、G、B及A通道)除以m2(步骤S171)。接着,对缩减数据执行无损压缩算法(步骤S131),并判断无损压缩结果的长度是否超过目标长度(步骤S151)。如果没有超过目标长度(步骤S151中“否”的路径),代表缩减数据的无损压缩成功,输出缩减数据的压缩结果及减损程度旗标“0b10”,用以表示纹理砖的原始数据已经过第二层数据缩减(步骤S190)。于第三层数据缩减时,可直接将纹理砖的原始数据(包含R、G及B通道,或者R、G、B及A通道)除以m3(步骤S173),输出缩减数据及减损程度旗标“0b11”,表示纹理砖的原始数据已强迫缩减至目标长度内的长度(步骤S190)。在另一些实施例中,步骤S153的默认值可设为3。m1可设为2,m2可设为3,m3可设为8,m4可设为16。步骤S190中的减损程度旗标可使用三个比特表示,其中,“0b000”表示纹理砖的原始数据没有经过缩减,“0b001”表示纹理砖的原始数据已经过第一层数据缩减,“0b010”表示纹理砖的原始数据已经过第二层数据缩减,“0b011”表示纹理砖的原始数据已经过第三层数据缩减,“0b100”或“0b111”表示纹理砖的原始数据已强迫缩减至目标长度内的长度。在一些实施例中,无损压缩算法可先降低画素内或/以及画素间的关联性,然后再进行无损编码。为降低画素内的关联性,可对每一画素中R、G及B通道进行运算。为降低画素间的关联性,除了纹理砖的画素(0,0)外,每一个画素的R值、G值及B值可分别减去画素(0,0)的R值、G值及B值。在另一些实施例中,无损压缩算法可先侦测纹理砖是否符合数个预测模式中之一者。如果是,则保留几个画素的数据,产生预测旗标以表示符合的预测模式,以及记录此预测模式的必要信息,例如,角度、长度、宽度等。例如,当纹理砖包含纯色(solidcolor)时,可只留下一个画素的数据并使用预测旗标表示此为纯色砖。若找不到符合的预测模式,先降低画素内或/画素间的关联性,然后再进行无损编码。无损编码可使用适应性字典编码(adaptivedictionaryencoding)、一元编码(unaryencoding)、熵编码(entropyencoding)等。图2是依据本发明实施例的纹理砖压缩装置的方块图。数据缩减控制器250指示内存控制器210输出纹理砖的原始数据至压缩器230,使得压缩器230产生原始数据的无损压缩结果。接着,数据缩减控制器250判断原始数据的无损压缩结果的长度是否大于目标长度。如果是,数据缩减控制器250执行多层次数据缩减控制,用以指示减法器241缩减原始数据以产生缩减数据,并指示内存控制器210输出缩减数据至压缩器230,使得压缩器230产生缩减数据的无损压缩结果,其中,缩减数据的无损压缩结果小于或等于上述目标长度。多层次数据缩减控制最小程度地缩减原始数据来产生缩减数据。于多层次数据缩减控制中,数据缩减控制器250指示减法器241缩减原始数据至一个程度以产生缩减数据,并且指示内存控制器210输出缩减数据至压缩器230,使得压缩器230产生缩减数据的无损压缩结果。当缩减数据的无损压缩结果的长度大于目标长度且数据缩减的次数没有达到默认值时,数据缩减控制器250指示减法器241对原始数据进行更大程度的缩减。当缩减数据的无损压缩结果的长度大于目标长度且数据缩减的次数达到默认值时,数据缩减控制器250指示减法器241直接将原始数据缩减至目标长度内的长度,并且输出缩减结果而不进行无损压缩。详细来说,数据缩减控制器250可于接收到一个纹理砖的原始数据后,指示内存控制器210储存原始数据至内存220中的区域221并输出原始数据至压缩器230,使得压缩器230可针对原始数据执行无损压缩算法。压缩器230可对从内存控制器210接收的原始数据执行无损压缩算法,并且将压缩结果输出至数据缩减控制器250。压缩器230的细节可参考步骤S131的说明,不再赘述。数据缩减控制器250可包含计数器来表示执行过的数据缩减次数,初始为0。数据缩减控制器250可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单一处理器、具平行处理能力的多处理器、图形处理器或其它具运算能力的处理器),并且在执行程序代码或软件时,提供特定的功能。数据缩减控制器250计算无损压缩结果的长度,并且判断是否超过目标长度。当计数器为0且无损压缩结果的长度不超过目标长度时,数据缩减控制器250通过输出接口260输出无损压缩结果及减损程度旗标给其它电子组件,其中的减损程度旗标表示纹理砖的原始数据没有经过缩减。当计数器小于或等于默认值且无损压缩结果的长度超过目标长度时,数据缩减控制器250控制除法器241用以将内存220中原始数据的每一画素的R、G及B值除以常数m1至mj-1中之相应一者来产生缩减数据,控制解复用器(de-multiplexer)243将缩减数据输出到内存220中的区域223,以及控制内存控制器210从内存220的区域223读取缩减数据并输出至压缩器230,其中,j为默认值加1。寄存器245可储存常数m1至mj。常数m1至mj的设定实施例可参考以上段落的说明,不再赘述。当计数器小于或等于默认值且无损压缩结果的长度没有超过目标长度时,数据缩减控制器250输出无损压缩结果及减损程度旗标给其它电子组件,其中的减损程度旗标表示纹理砖的原始数据经过特定层次的缩减。减损程度旗标的设定实施例可参考以上段落的说明,不再赘述。当计数器大于默认值且压缩结果的长度超过目标长度时,数据缩减控制器250控制除法器241用以将内存220中原始数据的每一画素的R、G及B通道除以常数mj来产生缩减数据,控制解复用器243将缩减数据输出到数据缩减控制器250,以及通过输出接口260输出缩减数据及减损程度旗标给其它电子组件,其中的减损程度旗标表示纹理砖的原始数据已强迫缩减至目标长度内的长度。除法器241可实施公式(1)至(3)来缩减纹理砖的原始数据。为了恢复如上所述的经多层次数据缩减的纹理砖,图3是依据本发明实施例的纹理砖解压缩方法流程图。此方法可执行于纹理译码器。在接收一个压缩结果及减损程度旗标后(步骤S310),依据减损程度旗标判断纹理砖的原始数据是否强迫缩减至目标长度内的长度(步骤S320)。例如,判断减损程度旗标是否为“0b11(以二个比特表示)”、“0b100(以三个比特表示)”或“0b111(以三个比特表示)”。如果是(步骤S320中“是”的路径),直接恢复压缩结果至原始长度(步骤S351)及输出恢复结果给三维(3D,three-dimensional)绘图流水线中的纹理操作(步骤S360)。于一些实施例中,可使用公式(4)、(5)及(6)来直接恢复压缩结果:Ri=Ri*mmax+cmax(4)Gi=Gi*mmax+cmax(5)Bi=Bi*mmax+cmax(6)Ri代表压缩结果的第i个画素的R值,Gi代表压缩结果的第i个画素的G值,Bi代表压缩结果砖的第i个画素的B值,mmax代表恢复常数,cmax代表补偿常数。假设纹理砖的原始数据长度为2048比特,而压缩结果的目标长度设为1024比特:mmax可依据经验设为8,cmax可依据经验设为3或6。当纹理砖的原始数据并非强迫缩减至目标长度内的长度时(步骤S320中“否”的路径),解压缩接收到的压缩结果以产生解压缩数据(步骤S330)。在一些实施例中,步骤S330可先进行无损译码,再恢复画素内或/以及画素间的关联性。无损译码可使用适应性字典译码(adaptivedictionarydecoding)、一元译码(unarydecoding)、熵译码(entropydecoding)等。为恢复画素内的关联性,可使用公式恢复每一画素中的R、G及B通道。为恢复画素间的关联性,除了纹理砖的第一个画素外,每一个画素的R值、G值、B值及A值可分别加上第一个画素的R值、G值、B值及A值。在另一些实施例中,步骤S330可先依据预测旗标来侦测接收到的纹理砖数据是否符合数个预测模式中之一者。如果是,则依据侦测到的预测模式及相关的画素数据产生纹理砖的原始数据。例如,当侦测到纹理砖包含纯色(solidcolor)时,则将其中的唯一画素数据填满整个纹理砖(8x8画素)。若找不到符合的预测模式,先进行无损译码,再恢复画素内或/以及画素间的关联性。接着,依据减损程度旗标判断压缩结果是否经过数据缩减(步骤S340)。例如,可判断减损程度旗标是否为“0b00(以二个比特表示)”或“0b000(以三个比特表示)”。如果不是(步骤S340中“否”的路径),输出译码结果给3D绘图流水线中的纹理操作(步骤S360)。如果压缩结果经过数据缩减(步骤S340中“是”的路径),依据减损程度旗标恢复解压缩数据至原始长度以产生恢复结果(步骤S353)及输出恢复结果给3D绘图流水线中的纹理操作(步骤S360)。于一些实施例中,可使用公式(7)、(8)及(9)来恢复解压缩数据:Ri=Ri*mj+cj(7)Gi=Gi*mj+cj(8)Bi=Bi*mj+cj(9)Ri代表解压缩数据的第i个画素的R值,Gi代表解压缩数据的第i个画素的G值,Bi代表解压缩数据的第i个画素的B值,mj代表第j次缩减的恢复常数,j越大则mj越大,mj小于mmax,cj代表第j次缩减的补偿常数,j越大则cj越大,并且cj小于cmax。mj可根据压缩减损旗标决定,并且Cj可根据过去经验设为2、4等。纹理砖可能包含文字的信息。图4A及4B是依据本发明实施例的纹理砖示意图。于一些实施例中,参考图4A,纹理砖410包含英文字母“J”,其中,英文字母中的画素(如斜线所示,又可称为前景画素)通常为纯色或接近纯色,并且前景画素与背景画素间的差异较大。在另一些实施例中,参考第4B图,除了前景画素与背景画素外,纹理砖430中的文字画素与背景画素间包含阴影(如网点所示,又可称为中间画素)。然而,降低画素间关联性的算法应该考虑纹理砖是否包含文字信息,否则,可能妨害之后的无损编码而无法将纹理砖的数据压缩至目标长度。图5是依据本发明实施例的纹理砖压缩方法流程图。此方法可执行于纹理编码器。在接收一个纹理砖(texturetile)的原始数据后(步骤S110),对原始数据执行无损压缩算法(步骤S510)。于步骤S110中,将文字旗标初始设为“0”用以指示使用第一种算法来降低画素间的关联性。举例来说,纹理砖可包含8x8画素,格式可为RGBA8888,其中,R、G、B及A通道各使用8比特表示,使得原始数据的长度为2048比特。目标长度可设为1024比特。于步骤S510中,由于文字旗标为“0”,无损压缩算法可先以第一种算法来降低画素间的关联性,然后再进行无损编码。第一种算法将纹理砖的数据视为不包含文字的信息。于第一种算法的一些实施例中,除了纹理砖的画素(0,0)外,每一个画素的R值、G值及B值可分别减去画素(0,0)的R值、G值及B值。熟习此技艺人士可根据不同的设计需求使用不同的第一种算法,本发明并不因此受限。无损编码可使用适应性字典编码(adaptivedictionaryencoding)、一元编码(unaryencoding)、熵编码(entropyencoding)等。接着,计算无损压缩结果的长度(步骤S133),并判断是否超过目标长度(步骤S151)。如果无损压缩结果的长度没有超过目标长度(步骤S151中“否”的路径),代表原始数据的无损压缩成功,输出压缩结果、文字旗标及减损程度旗标(步骤S540)。文字旗标为“0”用以指示压缩结果使用第一种算法来降低画素间的关联性。减损程度旗标可为“0b00”,表示纹理砖的原始数据没有经过缩减。如果无损压缩结果的长度超过目标长度(步骤S151中“是”的路径),代表原始数据的无损压缩失败,判断文字旗标是否为“0”(步骤S520)。如果是(步骤S520中“是”的路径),将文字旗标设为“1”用以指示使用第二种算法来降低画素间的关联性,并且产生位图用以包含纹理砖中每一画素属于多个群组中之一者的信息(步骤S530)。第二种算法是先将纹理砖中的画素分至多个群组,并将降低每一群组中的画素间的关联性。例如,标示纹理砖中每一画素为前景(foreground)或背景(background),或者标示纹理砖中每一画素为前景、中间(intermediary)或背景。于步骤S530的一些实施例,详细来说,产生纹理砖的R、G及B通道直方图,并据以分别计算R、G及B通道边界值(boundaryvalues)。边界值可为直方图的平均数或中位数。接着,判断每一画素中的R、G及B值是否分别大于R、G及B通道的边界值。当一个画素的R、G及B值中的任意二者大于相应边界值,则将此画素标示前景画素。否则,将此画素标示为背景画素。举例来说,可使用表1的位图(bitmap)来表示纹理砖410,其中,每个画素以一个比特表示为前景或背景画素:表10111111000011000000110000001100000011000100110001111100001110000其中,“1”代表前景画素,“0”代表背景画素,前景画素集合起来可形成一个字母、数字、符号等。于步骤S530的另一些实施例,详细来说,产生纹理砖的R、G及B通道直方图,并据以分别计算R、G及B通道中间范围(middleranges),每一个中间范围包含一个下限值(lowervalue)及一个上限值(uppervalue)。接着,分别比对每一画素中的R、G及B值是否大于R、G及B通道的上限值,以及是否小于R、G及B通道的下限值。当一个画素的R、G及B值中的任意二者大于相应上限值,则将此画素标示前景画素。当一个画素的R、G及B值中的任意二者小于相应下限值,则将此画素标示背景画素。当一个画素既非前景画素亦非背景画素,将此画素标示为中间画素。举例来说,可使用表2的位图来表示纹理砖430,其中,每个画素以二个比特表示为前景、中间或背景画素:表200111111111111100000001111101000000000111110000000000011111000000000001111100000110000111110000011111111111000000011111110000000其中,“11”代表前景画素,“10”代表中间画素,“00”代表背景画素,前景画素集合起来可形成一个字母、数字、符号等,中间画素可形成阴影。接着,于步骤S510中,由于文字旗标为“1”,无损压缩算法可以第二种算法来降低画素间的关联性,然后再进行无损编码。第二种算法将纹理砖的数据视为包含文字的信息。第二种算法先依据位图(如表1或表2所示)把画素分为二个或三个群组。图6A是依据本发明实施例的纹理砖分群示意图。例如,依据表1的位图,纹理砖410可分为前景群组611及背景群组613。图6B是依据本发明实施例的纹理砖分群示意图。例如,依据表2的位图,纹理砖430可分为前景群组631、中间群组633及背景群组635。在一些实施例中,于每一个群组中,除了最左上画素外,每一个画素的R值、G值及B值可分别减去最左上画素的R值、G值及B值。接着,计算压缩结果的长度(步骤S133),并判断是否超过目标长度(步骤S151)。如果压缩结果的长度没有超过目标长度(步骤S151中“否”的路径),代表原始数据的无损压缩成功,输出压缩结果、文字旗标、位图及减损程度旗标(步骤S540)。文字旗标为“1”用以指示压缩结果使用第二种算法来降低画素间的关联性。减损程度旗标可为“0b00”,表示纹理砖的原始数据没有经过缩减。如果超过目标长度(步骤S151中“是”的路径),代表原始数据压缩失败,接着,进行多层次的数据缩减(步骤S520及步骤S171或S173)以及对缩减数据进行无损压缩(步骤S131)。在多层次的数据缩减中,如果文字旗标不是“0”(步骤S520中“否”的路径),判断执行过的数据缩减次数是否超过默认值(步骤S153)。如果没有超过默认值(步骤S153中“否”的路径),缩减纹理砖的原始数据(步骤S171)。缩减纹理砖的原始数据后(步骤S171),对缩减数据执行无损压缩算法(步骤S510)。在步骤S510中,由于文字旗标为“1”,无损压缩算法可先以第二种算法来降低画素间的关联性,然后再进行无损编码。如果压缩结果的长度没有超过目标长度(步骤S151中“否”的路径),代表原始数据压缩成功,输出压缩结果、文字旗标、位图及减损程度旗标(步骤S540)。文字旗标为“1”用以指示压缩结果使用第二种算法来降低画素间的关联性。于一些实施例中,减损程度旗标可使用二个比特表示为“0b01”或“0b10”,用以表示纹理砖的原始数据经过特定层次的缩减。于另一些实施例中,减损程度旗标可使用三个比特表示为“0b001”、“0b010”或“0b011”,用以表示纹理砖的原始数据经过特定层次的缩减。减损程度旗标的设定可参考图1的相关说明。如果压缩结果的长度超过目标长度(步骤S151中“是”的路径),代表原始数据压缩失败,判断执行过的数据缩减次数是否超过默认值(步骤S153)。如果没有超过默认值(步骤S153中“否”的路径),进行纹理砖的原始数据的下一层次缩减(步骤S171)。步骤S153及步骤S171的技术细节可参考图1中的相关说明。如果超过默认值(步骤S153中“是”的路径),缩减纹理砖的原始数据至目标长度内的长度(步骤S173),并且输出压缩结果及减损程度旗标(步骤S540)。于一些实施例中,减损程度旗标可使用二个比特表示为“0b11”,用以表示纹理砖的原始数据已强迫缩减至目标长度内的长度。于另一些实施例中,减损程度旗标可使用三个比特表示为“0b100”或“0b111”,用以表示纹理砖的原始数据已强迫缩减至目标长度内的长度。于此须注意的是,熟习此技艺人士可修改图5所示的流程图,而不进行数据缩减(如步骤S153、S171及S173),本发明并不因此受限。也就是说,步骤S250中“否”的路径可连接至步骤S540,并且,步骤S540不输出减损程度旗标。图7是依据本发明实施例的纹理砖压缩装置的方块图。压缩器710可使用如步骤S510所示的二种算法中之一者来降低画素间的关联性,然后再进行无损编码。压缩器710中实施的无损压缩算法的细节可参考步骤S510的说明,不再赘述。数据产生控制器730可于接收到一个纹理砖的原始数据后,指示内存控制器210储存原始数据至内存220中的区域221并输出原始数据至压缩器710,并且指示压缩器710使用第一种算法来降低画素间的关联性,使得压缩器710可针对原始数据执行包含第一种算法的无损压缩算法。压缩器710将压缩结果输出至数据产生控制器730后,数据产生控制器730计算压缩结果的长度,并且判断是否超过目标长度。当压缩结果的长度不超过目标长度时,数据产生控制器730通过输出接口260输出压缩结果、文字旗标及减损程度旗标给其它电子组件,其中的文字旗标表示使用第一种算法来降低画素间的关联性,而减损程度旗标表示纹理砖的原始数据没有经过缩减。当压缩结果的长度超过目标长度时,数据缩减控制器730指示位图产生器750,用以依据原始数据221产生如表1或表2所示的位图770,并且储存位图770至内存220。位图产生器750产生位图770的细节可参考步骤S530的说明,不再赘述。在位图770产生后,数据产生控制器730指示压缩器710参考位图770并使用第二种算法来降低画素间的关联性,使得压缩器710可针对原始数据执行包含第二种算法的无损压缩算法。压缩器710执行无损压缩算法的细节可参考步骤S510的说明。接着,压缩器710将压缩结果输出至数据产生控制器730。数据产生控制器730计算压缩结果的长度,并且判断是否超过目标长度。当压缩结果的长度不超过目标长度时,数据产生控制器730通过输出接口260输出压缩结果、文字旗标、位图及减损程度旗标给其它电子组件,其中的文字旗标表示使用第二种算法来降低画素间的关联性,而减损程度旗标表示纹理砖的原始数据没有经过缩减。在一些实施例中,当压缩器710使用第二种算法来降低画素间的关联性尚无法将压缩结果的长度缩减至目标长度内时,数据产生控制器730可协调除法器241、解复用器243及内存控制器210执行多层次的数据缩减,使得压缩器710可对缩减数据执行无损压缩算法。除法器241、解复用器243、寄存器245及内存控制器210于多层次数据缩减的技术细节可参考图2的说明,不再赘述。为了恢复如上所述的经不同算法来降低画素间的关联性以及经多层次数据缩减的纹理砖,图8是依据本发明实施例的纹理砖解压缩方法流程图。此方法可执行于纹理译码器。在接收一个压缩结果及减损程度旗标后(步骤S310),依据减损程度旗标判断纹理砖的原始数据是否强迫缩减至目标长度(步骤S320)。如果是(步骤S320中“是”的路径),直接恢复压缩结果至原始长度(步骤S351)及输出恢复结果给3D绘图流水线中的纹理操作(步骤S360)。步骤S310、S320、S351及S360的技术细节可参考图3的说明,不再赘述。接着,取得文字旗标(S810),并且判断编码器是否使用第一种算法降低画素间的关联性(步骤S820)。若是(步骤S820中“是”的路径),无损译码压缩结果以及使用第一种算法恢复画素间的关联性(步骤S830)。否则(步骤S820中“否”的路径),取得位图(步骤S841),无损译码压缩结果以及依据位图使用第二种算法恢复画素间的关联性(步骤S843)。无损译码可使用适应性字典译码、一元译码、熵译码等。在步骤S830的一些实施例中,除了纹理砖的画素(0,0)外,第一种算法可将每一个画素的R值、G值及B值分别加上画素(0,0)的R值、G值及B值。熟习此技艺人士可根据不同的设计需求使用不同的第一种算法,本发明并不因此受限。在步骤S841中,取得的位图可如表1或表2所示。于步骤S843中,详细来说,可依据位图将纹理砖中的画素分成二个或三个群组。接着,在一些实施例中,针对每一个群组,除最左上画素外的每一个画素的R值、G值及B值,分别加上最左上画素的R值、G值及B值。在无损解码及恢复画素间的关联性后(步骤S830或S843),依据减损程度旗标判断接收到的压缩结果是否经过数据缩减(步骤S340)。如果接收到的压缩结果没有经过数据缩减(步骤S340中“否”的路径),输出译码结果给3D绘图流水线中的纹理操作(步骤S360)。如果接收到的压缩结果经过数据缩减(步骤S340中“是”的路径),依据减损程度旗标恢复解压缩数据至原始长度(步骤S353)及输出恢复结果给3D绘图流水线中的纹理操作(步骤S360)。步骤S340、S353及S360的技术细节可参考图3的说明,不再赘述。虽然图2及图7中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其它的附加组件,以达成更佳的技术效果。此外,虽然图1、3、5及8的方法流程图采用特定的顺序来执行,但是在不违法发明精神的情况下,熟习此技艺人士可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了熟习此技艺人士显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。【符号说明】S110~S190方法步骤;210内存控制器;220内存;221、223内存中的区域;230压缩器;241减法器;243解复用器;245寄存器;250数据缩减控制器;260输出接口;S310~S360方法步骤;410、430纹理砖;S510~S540方法步骤;611前景群组;613背景群组;631前景群组;633中间群组;635背景群组;710压缩器;730数据产生控制器;750位图产生器;770内存中的区域;S810~S843方法步骤。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1