渐进式联合图像专家组解码装置及方法

文档序号:7919618阅读:218来源:国知局
专利名称:渐进式联合图像专家组解码装置及方法
技术领域
本发明是有关于一种JPEG(联合图像专家组)解码装置及方法,且特别是有关于一种渐进式JPEG解码装置及方法。
背景技术
联合图像专家组(Joint Photographic Expert Group,以下简称为JPEG)的标准可以有效率地压缩数字的灰阶或彩色影像,因此已被广为使用。JPEG的规格包括四种不同的操作模式,各个操作模式使用不同的编码与解码方式循序式离散余弦转换(Discrete Cosine Transform,以下简称为DCT)为基础的(Sequential DCT based)、渐进式DCT为基础的(Progressive DCT based)、无损失性(Lossless)与阶层式(Hierarehy)。其中,DCT转换即是将时域(time domain)的信号转换为频域(frequency domain)的信号。
对于循序式DCT为基础的模式的编码程序而言,一个样本区块由8×8个像素所组成,影像进行编码时,样本区块B即依序由影像的左至右,由上至下一个个的馈入。当一个样本区块B执行完向前DCT(forward DCT)转换,转换成64个数字DCT系数之后,再馈入量化单元(quantizer),将其量化,最后再经可变长度压缩编码单元(variable length encoder)进行可变长度压缩编码后,即成为压缩的JPEG比特流。可变长度压缩编码例如是霍夫曼编码(Huffman encode)。
对于渐进式DCT为基础的模式的编码程序而言,样本区块输入编码器的顺序亦与循序式DCT为基础的模式相同,但整个影像以多次扫瞄的方式进行编码,使得压缩过的JPEG比特流包括多个扫瞄层。达成多次扫瞄的方法在量化单元与可变长度压缩编码单元之间加入一个与影像大小相等的存储缓冲区,一次扫瞄中的每个样本区块经由向前DCT转换和量化后的数字DCT量化系数即先暂存至此存储缓冲区。等到所有样本区块都已完成转换和量化之后,则将存储缓冲区中的量化DCT系数,分成多次扫瞄,每次扫瞄由可变长度压缩编码单元进行部份量化系数的编码,如此即为一个扫瞄层的数据。渐进式JPEG为基础的优点为在网络频宽不足的情况下,将先收到的JPEG比特流中的扫瞄层进行解码并显像为一粗略的影像,收到愈多的扫瞄层则会使影像更精细,而不需等到所有JPEG比特流的数据都到齐了才开始进行解码,可以减少使用者等待的时间。
多次扫瞄的顺序有以下两种方法频谱选择(spectral selection)方法与连续近似(successive approximation)方法。频谱选择方法在每次传送每个样本区块中的部分频带的数据,由于一般影像以低频居多,因此可以先送低频部分的影像数据再送高频部分的影像数据。而连续近似则是每次传送各个数字DCT系数的部分位,先送影响最大的位(most significant bit,MSB),最后送影响最小的位(least significant bit,LSB)。
请参照图1,其绘示为频谱选择程序的示意图。在图中的最上一个为影像的全部样本区块编号,由左至右的一排小方块代表一个量化DCT系数,每个小方块代表一个位,最左边的位为MSB;每个正面的64个量化DCT系数即为一个样本区块的系数。在本图的例子中,第一次扫瞄时,传送每个样本区块的第0个量化DCT系数,即为扫瞄层(0);第二次扫瞄时,传送每个样本区块的第1与第2个量化DCT系数,即为扫瞄层(1);第三次扫瞄时,传送每个样本区块的第3、4与5个数位DCT系数,即为扫瞄层(2);依此而将影像传送完毕。由于样本区块中的每个量化DCT系数所对应的频率不同,因此在每次扫瞄时将样本区块中的不同的量化DCT系数送出,即可以达到频谱选择的目的。
请参照图2,其绘示为连续近似程序的示意图。第一次扫瞄时,将每个样本区块中的第0个量化DCT系数送出,即为扫瞄层(0);第二次扫瞄时,将每个样本区块中的其余的每个量化DCT系数的第4、5、6及7个位送出,即为扫瞄层(1);第三次扫瞄时,将每个样本区块中的其余的每个数字DCT系数的第3个位送出,即为扫瞄层(2);依此在不同的扫瞄时送出不同的位,因此可以达到连续近似的目的。上述的频谱选择方法与连续近似方法并且可以混合使用,以呈现不同的渐进效果。
以上所述为JPEG的编码方式,再来将讨论其解码方式。在传统的渐进式JPEG解码装置中,需有一个与影像大小相等的存储缓冲区,以储存可变长度压缩解码之后的系数。当收集并可变长度压缩解码完JPEG比特流中的一个扫瞄层的所有系数之后,解码装置即进行逆量化及逆DCT(inverse DCT,IDCT),以重建渐近式影像。然而,影像大小可能相当的大,例如JPEG T.81规格书内规定最大的影像为65535×65535个像素,而使得传统渐进式JPEG解码装置无法提供这高达千兆字节数量级(Giga bytes)存储缓冲区而无法进行影像解码。尤其是现今信息家电产品(Information Application,IA)应用已经非常广泛,其所能提供的内存比起现今的个人计算机又小了很多,因此,如何发展一种渐进式JPEG解码装置及方法以突破系统存储缓冲区大小的限制,已经成为不可避免的趋势。

发明内容
有鉴于此,本发明的目的就是在提供一种可以在内存资源受限的情况下仍可解码的渐进式JPEG解码装置及方法。
根据本发明的目的,提出一种渐进式JPEG解码方法,用于一渐进式JPEG解码装置,以将一JPEG比特流进行解码而成为一影像数据,该解码装置包括一内存,该方法包括接收该JPEG比特流的一扫瞄层的数据;将该扫瞄层分割成多个区域;选择这些区域之一,将其定义为一局部解码区域;将该扫瞄层的数据进行解码,依据该扫瞄层的该局部解码区域所对应的数据产生多个解码系数及依据该扫瞄层的该局部解码区域以外的这些区域所对应的数据产生多个解码系数的非零历史,并将其储存至该内存;以及输出这些解码系数,这些解码系数即为部分的该影像数据。
根据本发明的目的,提出一种渐进式JPEG解码方法,用于一渐进式JPEG解码装置,该解码装置包括一内存,用以接收一JPEG比特流并据以输出一影像数据,依据该影像数据可显示一影像,该方法包括接收该JPEG比特流的一扫瞄层;将该扫瞄层分割成多个区域;进行一第一解码程序,包括将这些区域的第一个定义为一局部解码区域;以及将该扫瞄层数据进行解码,并储存解码后产生的该局部解码区域的多个解码系数、该局部解码区域以外的这些区域的多个解码系数的非零历史、及该局部解码区域以外的这些区域的起始地址至该内存;以及进行一第二解码程序,包括分别依据该局部解码区域以外的这些区域的起始地址从该JPEG比特流读取相关的数据并进行解码,并储存解码后产生的多个解码系数;以及输出这些解码系数,以形成该影像数据。
根据本发明的目的,提出一种JPEG解码装置,用以接收一JPEG比特流并据以输出一影像数据,该解码装置包括一内存;一内存管理单元,与该内存耦接,用以控制该内存的存取动作;以及一处理单元,与该内存及该内存管理单元耦接,用以接收该JPEG比特流,并执行一JPEG解码方法后,输出该影像数据;其中,该JPEG解码方法包括接收该JPEG影像数据的一扫瞄层的数据;将该扫瞄层分割成多个区域;选择这些区域之一以定义为一局部解码区域;将该扫瞄层数据进行解码,依据该扫瞄层的该局部解码区域的数据产生多个解码系数,及依据该扫瞄层的该局部解码区域以外的这些区域的数据产生多个解码系数的非零历史,并将其储存至该内存;以及输出这些解码系数,这些解码系数即为部分的该影像数据。
根据本发明的目的,提出一种一种JPEG解码装置,用以接收一JPEG比特流并据以输出一影像数据,该解码装置包括一内存;一内存管理单元,与该内存耦接,用以控制该内存的存取动作;以及一处理单元,与该内存及该内存管理单元耦接,用以接收该JPEG比特流,并执行一JPEG解码方法后,输出该影像数据;其中,该JPEG解码方法包括接收该JPEG比特流的一扫瞄层;将该扫瞄层分割成多个区域;进行一第一解码程序,包括将这些区域的第一个定义为一局部解码区域;以及将该扫瞄层数据进行解码,并储存解码后产生的该局部解码区域的多个解码系数、该局部解码区域以外的这些区域的多个解码系数的非零历史、及该局部解码区域以外的这些区域的起始地址至该内存;进行一第二解码程序,包括分别依据该局部解码区域以外的这些区域的起始地址从该JPEG比特流读取相关的数据并进行解码,并储存解码后产生的多个解码系数;以及输出这些解码系数,以形成该影像数据。
因此,本发明的精神就是将原本渐近式JPEG影像,切割成不同区域,每次只解码其中一个区域,等解码完一个区域之后,再解码另一个区域,而每一次解码所需求的内存缓冲区大小,都控制为系统内存能提供的大小,因此,本发明不需要配置与影像大小相等的存储缓冲区才能进行解码,而是依据现有系统内存的大小来适当调整解码的次数,当然,当系统的内存的大小足以提供整个影像解码时,本发明亦可一次解码出整个影像。
为让本发明的上述目的、特征、和优点能更明显易懂,下文特举一优选实施例,并配合附图,作详细说明如下。


图1绘示为频谱选择程序的示意图。
图2绘示为连续近似程序的示意图。
图3绘示为依照本发明一优选实施例的扫瞄层的区域布局图。
图4依照本发明一优选实施例的一种渐进式JPEG解码装置方块图。
图5绘示为渐进式JPEG解码方法流程图。
具体实施例方式
本发明系将原本渐近式JPEG影像所有扫瞄层各分割成多个区域,区域以最小解码单元列(Minimum Coded Unit row,MCU row)为单位,每次解码就选择此些区域之一以定义为局部解码区域。然后,将所有扫瞄层数据进行解码,等解码完一个区域之后,再定义另一个尚未解码的区域为局部解码区域,进行下一次解码,直到所有的区域都解码完毕为止。因此,每当解码完一个扫瞄层的局部解码区域之后,解码装置必须从下一个扫瞄层局部解码区域在JPEG比特流的起始地址抓取数据以进行解码,但是因为JPEG比特流是以可变长度压缩编码而成,因此,现在这个到下一个扫瞄层局部解码区域之间的其它区域也必须进行可变长度压缩解码,来得知下一个扫瞄层局部解码区域数据在JPEG比特流的起始地址。此外,由于渐进式的JPEG比特流中的扫瞄层是相依靠的,也就是解码其中一个扫瞄层时,必须参照之前的扫瞄层,所以之前所解码产生的解码系数也必须储存至内存以供后续扫瞄层解码时参考。然而,受限于内存大小的限制,无法提供整个影像大小的缓冲区以储存先前所解码的系数。又,必须参考之前的解码系数的原因在于,ITU T.81规格中G.1.2.3章节所规定的霍夫曼解码阶段时,必须参考之前的扫瞄层中所解出的相同位置的系数的非零历史,也就是是否曾为非零。所以本发明只需记录代表各个解码系数的非零历史,而不需记录所有解码系数,即可供霍夫曼解码使用。又,每个系数的非零历史只需一个位(bit)记录即可,因此记录系数非零历史的缓冲区不需太大,使得解码过程所需的内存容量大为降低。
请参照图3,其绘示为依照本发明一优选实施例的扫瞄层的区域布局图。此图中以两个扫瞄层为例扫瞄层(0)与扫瞄层(1)。扫瞄层(0)与扫瞄层(1)的区域(0)包括3个MCU列,区域(1)包括6个MCU列,区域(2)包括6个MCU列,区域(3)包括5个MCU列。
请参照图4,其绘示依照本发明一优选实施例的一种渐进式JPEG解码装置方块图。解码装置400包括内存402、内存管理单元404与处理单元406。用以接收JPEG比特流,将其解码后产生解码系数并输出至显示单元410,以在监视器上显示影像。处理单元406例如是数字信号处理器(Digital SignalProcessor,DSP),用以执行依据本发明的一渐进式JPEG解码方法。内存管理单元404用以控制所有对内存402的存取命令。
请参照图5,其绘示为渐进式JPEG解码方法流程图。本实施例的解码方法包括第一解码程序及第二解码程序。内存中包括有系数缓冲区(coefficientbuffer)、非零历史缓冲区(non-zero history buffer)与起始地址缓冲区。系数缓冲区用以储存局部解码区域可变长度压缩解码后的解码系数,非零历史缓冲区用以储存局部解码区域以外的此些区域系数的非零历史,起始地址缓冲区用以储存各扫瞄层中各区域在JPEG比特流的起始位置。在第一解码程序中,首先,接收JPEG比特流的一扫瞄层的数据,如步骤502所示。然后,将扫瞄层分割成多个区域,如步骤504所示。此时,各个扫瞄层所划分的区域的布局为相同,也就是说,各个扫瞄层的第一个区域大小为相同,第二个区域大小也相同…,依此类推。接着选择第一个区域,将其定义为局部解码区域,如步骤506所示。然后,将扫瞄层的数据进行解码,依据扫瞄层的局部解码区域所对应的数据产生多个解码系数、依据扫瞄层的局部解码区域以外的所有区域所对应的数据产生多个系数的非零历史、及产生扫瞄层的局部解码区域以外的各个区域的起始地址,并将其储存至内存中对应的解码系数缓冲区、非零历史缓冲区与起始地址缓冲区,如步骤508所示。由于只储存局部解码区域的解码系数,而非整个扫瞄层的解码系数,及其余区域的非零系数与地址,因此可以大大的减低内存容量的需求。然后,输出此些解码系数,如步骤510所示。然后,检查是否JPEG比特流中的所有扫瞄层皆已经执行过第一解码程序,如步骤512所示,若是,则进行第二解码程序,若否,则选择下一个扫瞄层并重复步骤502。
在第二解码程序中,先选择一未解码的区域,如步骤520所示。然后,选择一个扫瞄层,如步骤522所示。然后,依据此扫瞄层的此区域的起始地址将其数据读入并进行解码,如步骤524所示。然后,输出解码系数,如步骤526所示。然后检查是否所有的扫瞄层的此区域皆已解码,若是,则进入步骤530,若否,则回到步骤522。在步骤530中,检查是否此JPEG比特流的所有区域都已经解码完毕,若是,则结束本方法,若否,则回到步骤520继续解所有扫瞄层的其它区域。
由上面叙述可知,第一解码程序分别将各个扫瞄层完整进行解码,但仅记录第一个区域的解码系数,其余区域仅记录其系数的非零历史与起始地址。第二解码程序则依据第一解码程序所记录的各个区域的起始地址直接从JPEG比特流中读取局部解码区域的数据,进行解码,因此,局部解码区域以外的此些区域不再需要进行解码。所以,第一解码程序中非零历史缓冲区就可以重新配置供系数缓冲区使用,以提供更大的记忆容量,来放大第二解码程序的局部解码区域,如此一来,解码次数可有效的减少。
本发明上述实施例所揭露的渐进式JPEG解码装置及方法可以在有限的内存的情况下进行解码的程序。
综上所述,虽然本发明已以一优选实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,应当可以作各种改变与润饰,因此本发明的保护范围当视后附的权利要求书所界定的范围为准。
权利要求
1.一种渐进式JPEG解码方法,用于一渐进式JPEG解码装置,以将一JPEG比特流进行解码而成为一影像数据,该解码装置包括一内存,该方法包括接收该JPEG比特流的一扫瞄层的数据;将该扫瞄层分割成多个区域;选择这些区域之一,将其定义为一局部解码区域;将该扫瞄层的数据进行解码,依据该扫瞄层的该局部解码区域所对应的数据产生多个解码系数及依据该扫瞄层的该局部解码区域以外的这些区域所对应的数据产生多个解码系数的非零历史,并将其储存至该内存;以及输出这些解码系数,这些解码系数即为部分的该影像数据。
2.如权利要求1所述的方法,其中将该扫瞄层的数据进行解码后,还记录该扫瞄层的该局部解码区域以外的这些区域之一起始地址至该内存。
3.如权利要求2所述的方法,其中对该局部解码区域以外的这些区域进行解码时,依据这些起始地址以从该JPEG比特流读取数据。
4.如权利要求1所述的方法,其中这些区域的数目依据该内存的大小而决定。
5.如权利要求1所述的方法,其中这些区域的大小的单位为最小编解码单元(Minimum Coded Unit,MCU)列。
6.如权利要求1所述的方法,其中该JPEG影像数据包括多个扫瞄层,这些扫瞄层中的第一个用以代表该影像数据的一部分,以显示为一粗略影像,其余的这些扫瞄层用以增进该粗略影像的品质,当所有的这些扫瞄层皆解码完毕即形成该影像数据。
7.一种渐进式JPEG解码方法,用于一渐进式JPEG解码装置,该解码装置包括一内存,用以接收一JPEG比特流并据以输出一影像数据,依据该影像数据可显示一影像,该方法包括接收该JPEG比特流的一扫瞄层;将该扫瞄层分割成多个区域;进行一第一解码程序,包括将这些区域的第一个定义为一局部解码区域;以及将该扫瞄层数据进行解码,并储存解码后产生的该局部解码区域的多个解码系数、该局部解码区域以外的这些区域的多个解码系数的非零历史、及该局部解码区域以外的这些区域的起始地址至该内存;以及进行一第二解码程序,包括分别依据该局部解码区域以外的这些区域的起始地址从该JPEG比特流读取相关的数据并进行解码,并储存解码后产生的多个解码系数;以及输出这些解码系数,以形成该影像数据。
8.如权利要求7所述的方法,其中这些区域的数目依据该内存的大小而决定。
9.如权利要求7所述的方法,其中这些区域的大小的单位为最小编解码单元(Minimum Coded Unit,MCU)列。
10.如权利要求7所述的方法,其中该JPEG影像数据包括多个扫瞄层,这些扫瞄层中的第一个用以代表该影像数据的一部分,以显示为一粗略影像,其余的这些扫瞄层用以增进该粗略影像的品质,当所有的这些扫瞄层都解码完毕即形成该影像数据。
11.一种JPEG解码装置,用以接收一JPEG比特流并据以输出一影像数据,该解码装置包括一内存;一内存管理单元,与该内存耦接,用以控制该内存的存取动作;以及一处理单元,与该内存及该内存管理单元耦接,用以接收该JPEG比特流,并执行一JPEG解码方法后,输出该影像数据;其中,该JPEG解码方法包括接收该JPEG影像数据的一扫瞄层的数据;将该扫瞄层分割成多个区域;选择这些区域之一以定义为一局部解码区域;将该扫瞄层数据进行解码,依据该扫瞄层的该局部解码区域的数据产生多个解码系数,及依据该扫瞄层的该局部解码区域以外的这些区域的数据产生多个解码系数的非零历史,并将其储存至该内存;以及输出这些解码系数,这些解码系数即为部分的该影像数据。
12.如权利要求11所述的解码装置,其中该处理单元为数字信号处理单元(Digital Signal Processor,DSP)。
13.如权利要求11所述的方法,其中对该局部解码区域以外的这些区域进行解码时,依据这些起始地址以从该JPEG比特流读取数据。
14.如权利要求11所述的解码装置,其中这些区域的数目依据该内存的大小而决定。
15.如权利要求11所述的解码装置,其中这些区域的大小的单位为最小编解码单元(Minimum Coded Unit,MCU)列。
16.如权利要求11所述的解码装置,其中该JPEG影像数据包括多个扫瞄层,这些扫瞄层中的第一个用以代表该影像数据的一部分,以显示为一粗略影像,其余的这些扫瞄层用以增进该粗略影像的品质,当所有的这些扫瞄层皆解码完毕即形成该影像数据。
17.一种JPEG解码装置,用以接收一JPEG比特流并据以输出一影像数据,该解码装置包括一内存;一内存管理单元,与该内存耦接,用以控制该内存的存取动作;以及一处理单元,与该内存及该内存管理单元耦接,用以接收该JPEG比特流,并执行一JPEG解码方法后,输出该影像数据;其中,该JPEG解码方法包括接收该JPEG比特流的一扫瞄层;将该扫瞄层分割成多个区域;进行一第一解码程序,包括将这些区域的第一个定义为一局部解码区域;以及将该扫瞄层数据进行解码,并储存解码后产生的该局部解码区域的多个解码系数、该局部解码区域以外的这些区域的多个解码系数的非零历史、及该局部解码区域以外的这些区域的起始地址至该内存;进行一第二解码程序,包括分别依据该局部解码区域以外的这些区域的起始地址从该JPEG比特流读取相关的数据并进行解码,并储存解码后产生的多个解码系数;以及输出这些解码系数,以形成该影像数据。
18.如权利要求17所述的解码装置,其中这些区域的数目依据该内存的大小而决定。
19.如权利要求17所述的解码装置,其中这些区域的大小的单位为最小编解码单元(Minimum Coded Unit,MCU)列。
20.如权利要求17所述的解码装置,其中该JPEG影像数据包括多个扫瞄层,这些扫瞄层中的第一个用以代表该影像数据的一部分,以显示为一粗略影像,其余的这些扫瞄层用以增进该粗略影像的品质,当所有的这些扫瞄层皆解码完毕即形成该影像数据。
全文摘要
一种JPEG解码装置及方法,用以接收一JPEG比特流并据以输出一影像数据,解码方法包括接收JPEG影像数据的扫描层的数据。然后,将扫描层分割成多个区域。接着,选择此些区域之一以定义为局部解码区域。然后,将扫描层数据进行解码,依据扫描层的局部解码区域的数据产生多个解码系数、依据扫描层的局部解码区域以外的此些区域的数据产生多个解码系数的非零历史与起始地址,并将其储存至内存。最后,输出解码系数。
文档编号H04N5/91GK1477867SQ0213044
公开日2004年2月25日 申请日期2002年8月20日 优先权日2002年8月20日
发明者朱启诚 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1