图像数据的霍夫曼解码装置和方法与流程

文档序号:17976659发布日期:2019-06-21 23:50阅读:411来源:国知局
图像数据的霍夫曼解码装置和方法与流程

本发明涉及图像处理领域,具体而言,涉及一种图像数据的霍夫曼解码装置和方法。



背景技术:

随着科技的进步,人们对视频的分辨率要求越来越高,在视频编解码中,霍夫曼解码的效率往往是制约整个效率的关键因素,如果解码效率偏低的话,很容易引起视频的播放不流畅等视频质量问题,为了提高霍夫曼解码的效果,现有技术中一篇申请号为201010585313.X的专利申请文件公开一种JPEG图像中范式霍夫曼的硬件解码方法及装置,它包括移位寄存器,移位寄存器暂存当前解码的比特流;比较器根据当前长度的最后一个码字和移位寄存器的值进行比较,确定是否找到范式霍夫曼码字;读信号产生模块产生使能信号;地址生成模块产生ROM的地址;码字类型及帧结束信号产生模块产生当前解码的范式霍夫曼码字类型和帧结束信号。

上述进行霍夫曼解码的方法需要多拍时钟周期才能完成一个霍夫曼码字的解码,仍然存在解码效率较低的技术问题。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种图像数据的霍夫曼解码装置和方法,以至少解决现有技术中霍夫曼解码效率低的技术问题。

根据本发明实施例的一个方面,提供了一种图像数据的霍夫曼解码装置,包括:多个编码流输入单元,其中,所述多个编码流输入单元中的编码流输入单元Pi用于接收表示所述图像数据的多路霍夫曼编码流中的编码流Li,i依次取1至n,n为所述多路霍夫曼编码流中的编码流的路数;霍夫曼解码单元,与所述多个编码流输入单元均相连接,用于并行解码所述多路霍夫曼编码流,得到多路霍夫曼解码流,其中,所述霍夫曼解码单元解码所述编码流Li得到所述多路霍夫曼解码流中的解码流Mi;以及多个输出单元,与所述霍夫曼解码单元相连接,其中,所述多个输出单元中的输出单元Qi用于输出所述多路霍夫曼解码流中的所述解码流Mi。

进一步地,所述霍夫曼解码单元包括:直流解码器,与所述多个编码流输入单元均相连接,用于并行解码所述多路霍夫曼编码流中的待解码直流码字,得到直流系数;以及交流解码器,与所述多个编码流输入单元均相连接,用于并行解码所述多路霍夫曼编码流中的待解码交流码字,得到交流系数。

进一步地,所述直流解码器包括:第一比较器,用于通过比较所述待解码直流码字与参考直流码字的大小,确定所述待解码直流码字的长度,其中,所述参考直流码字为所述多路霍夫曼编码流中的最小直流码字;VLI解码器,与所述第一比较器相连接,用于对确定长度的所述待解码直流码字进行VLI解码;以及DPCM解码器,与所述VLI解码器相连接,用于对所述VLI解码器的解码结果进行DPCM解码,得到所述直流系数。

进一步地,所述交流解码器包括:第二比较器,用于通过比较所述待解码交流码字与参考交流码字的大小,确定所述待解码交流码字的编码值,其中,所述参考交流码字为所述多路霍夫曼编码流中的最小交流码字;第一查找器,与所述第二比较器相连接,用于根据所述待解码交流码字的编码值查表确定所述待解码交流码字中连续零的个数;以及第二查找器,与所述第一查找器相连接,用于根据所述待解码交流码字中连续零的个数查表确定所述交流系数。

进一步地,所述装置还包括:选择单元,与所述多个编码流输入单元和所述霍夫曼解码单元均相连接,用于使用独热码使所述多个编码流输入单元在一个解码周期内轮流传输霍夫曼编码流至所述霍夫曼解码单元,其中,所述独热码的比特位和所述解码周期的解码时钟拍数均为n;多个反量化单元,与所述霍夫曼解码单元和所述多个输出单元均相连接,用于对所述多路霍夫曼解码流进行反量化,其中,所述多个反量化单元中的反量化单元Xi用于对所述解码流Mi进行反量化;以及反变换单元,与所述多个反量化单元和所述多个输出单元均相连接,用于对反量化后的所述多路霍夫曼解码流进行二维离散余弦反变换,并将二维离散余弦反变换后的所述多路霍夫曼解码流传输至所述多个输出单元,其中,所述多个输出单元中的输出单元Qi用于输出二维离散余弦反变换后的所述解码流Mi。

根据本发明实施例的一个方面,提供了一种图像数据的霍夫曼解码方法,所述的图像数据的霍夫曼解码装置对所述图像数据进行霍夫曼解码,所述方法包括:所述装置中的多个编码流输入单元中的编码流输入单元Pi接收表示所述图像数据的多路霍夫曼编码流中的编码流Li,i依次取1至n,n为所述多路霍夫曼编码流中的编码流的路数;所述装置中的霍夫曼解码单元并行解码所述多路霍夫曼编码流,得到多路霍夫曼解码流,其中,所述霍夫曼解码单元解码所述编码流Li得到所述多路霍夫曼解码流中的解码流Mi;以及所述装置中的多个输出单元输出中的输出单元Qi用于输出所述多路霍夫曼解码流中的所述解码流Mi。

进一步地,并行解码所述多路霍夫曼编码流包括:并行解码所述多路霍夫曼编码流中的待解码直流码字,得到直流系数;以及并行解码所述多路霍夫曼编码流中的待解码交流码字,得到交流系数。

进一步地,并行解码所述多路霍夫曼编码流中的待解码直流码字,得到直流系数包括:通过比较所述待解码直流码字与参考直流码字的大小,确定所述待解码直流码字的长度,其中,所述参考直流码字为所述多路霍夫曼编码流中的最小直流码字;对确定长度的所述待解码直流码字进行VLI解码;以及对进行VLI解码后的解码结果进行DPCM解码,得到所述直流系数。

进一步地,并行解码所述多路霍夫曼编码流中的待解码交流码字,得到交流系数包括:通过比较所述待解码交流码字与参考交流码字的大小,确定所述待解码交流码字的编码值,其中,所述参考交流码字为所述多路霍夫曼编码流中的最小交流码字;根据所述待解码交流码字的编码值查表确定所述待解码交流码字中连续零的个数;以及根据所述待解码交流码字中连续零的个数查表确定所述交流系数。

进一步地,所述方法还包括:在所述装置中的霍夫曼解码单元并行解码所述多路霍夫曼编码流,得到多路霍夫曼解码流之前,所述方法还包括:所述装置中的选择单元使用独热码使所述多个编码流输入单元在一个解码周期内轮流传输霍夫曼编码流至所述霍夫曼解码单元,其中,所述独热码的比特位和所述解码周期的解码时钟拍数均为n;在所述装置中的霍夫曼解码单元并行解码所述多路霍夫曼编码流,得到多路霍夫曼解码流之后,所述方法还包括:所述装置中的多个反量化单元对所述多路霍夫曼解码流进行反量化,其中,所述多个反量化单元中的反量化单元Xi用于对所述解码流Mi进行反量化;以及所述装置中的反变换单元对反量化后的所述多路霍夫曼解码流进行二维离散余弦反变换,并将二维离散余弦反变换后的所述多路霍夫曼解码流传输至所述多个输出单元,其中,所述多个输出单元中的输出单元Qi用于输出二维离散余弦反变换后的所述解码流Mi。

在本发明实施例中,采用具有以下结构的图像数据的霍夫曼解码装置:多个编码流输入单元,用于接收表示所述图像数据的多路霍夫曼编码流,其中,所述多个编码流输入单元中的编码流输入单元Pi用于接收所述多路霍夫曼编码流中的编码流Li,i依次取1至n,n为所述多路霍夫曼编码流中的编码流的路数;霍夫曼解码单元,与所述多个编码流输入单元均相连接,用于并行解码所述多路霍夫曼编码流,得到多路霍夫曼解码流,其中,所述霍夫曼解码单元解码所述编码流Li得到所述多路霍夫曼解码流中的解码流Mi;以及多个输出单元,与所述霍夫曼解码单元相连接,用于输出所述多路霍夫曼解码流,其中,所述多个输出单元中的输出单元Qi用于输出所述解码流Mi。通过利用多个编码流输入单元进行多路霍夫曼编码流的输入,进而对多路霍夫曼编码流进行并行解码,实现了利用一套霍夫曼解码装置可并行完成多个霍夫曼编码或者多路视频图像的解码,大幅提高了解码速度和效率,并且占用的逻辑资源少,从而实现了降低成本投入、提高解码效率的技术效果,进而解决了现有技术中霍夫曼解码效率低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种图像数据的霍夫曼解码装置的示意图;

图2是根据本发明实施例的图像数据的霍夫曼解码装置中霍夫曼解码单元的一种可选的示意图;

图3是根据本发明实施例的图像数据的霍夫曼解码装置中霍夫曼解码单元的又一可选的示意图;

图4是根据本发明实施例的图像数据的霍夫曼解码装置中霍夫曼解码单元的解码时序图;

图5是根据本发明实施例的又一种图像数据的霍夫曼解码装置的示意图;

图6是根据本发明实施例的图像数据的霍夫曼解码装置中编码流输入单元进行编码流输入的流程图;

图7是根据本发明实施例的图像数据的霍夫曼解码装置中反变换单元进行二维离散余弦反变换的流程图;以及

图8是根据本发明实施例的一种图像数据的霍夫曼解码方法的流程图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先对本发明实施例所涉及到的技术术语作如下解释:

霍夫曼解码:霍夫曼编码是可变字长编码(VLC)的一种,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码。

DCT变换:离散余弦变换(Discrete Cosine Transform,简称DCT)是与傅里叶变换相关的一种变换,类似于离散傅里叶变换,但是只使用实数。

根据本发明实施例,提供了一种用于执行本发明实施例所提供的图像数据的霍夫曼解码方法的图像数据的霍夫曼解码装置,以下对本发明实施例所提供的图像数据的霍夫曼解码装置做具体介绍:

图1是根据本发明实施例的图像数据的霍夫曼解码装置的示意图,如图1所示,该图像数据的霍夫曼解码装置主要包括多个编码流输入单元、霍夫曼解码单元10和多个输出单元,其中,霍夫曼解码单元10连接在多个编码流输入单元和多个输出单元之间,多个编码流输入单元用于接收表示图像数据的多路霍夫曼编码流,多个输出单元用于输出霍夫曼解码单元10解码后的多路霍夫曼解码流,编码流输入单元的个数应该大于或等于霍夫曼编码流的路数,输出单元的个数也应该大于或等于霍夫曼编码流的路数,在本发明实施例中,编码流输入单元的个数可以与霍夫曼编码流的路数相同,输出单元的个数也可以与霍夫曼编码流的路数相同,在以下内容中以多路霍夫曼编码流中的编码流的路数为n(n为大于或等于2的自然数)为例,来具体说明本发明实施例所提供的图像数据的霍夫曼解码装置。

图1中示意性示出了多个编码流输入单元依次为编码流输入单元P1、编码流输入单元P2、……、编码流输入单元Pn,其中,多个编码流输入单元中的编码流输入单元Pi用于接收多路霍夫曼编码流中的编码流Li,i依次取1至n,即,编码流输入单元P1用于接收多路霍夫曼编码流中的编码流L1,编码流输入单元P2用于接收多路霍夫曼编码流中的编码流L2、……、编码流输入单元Pn用于接收多路霍夫曼编码流中的编码流Ln。在本发明实施例中,图像数据可以是JPEG格式的数据。

霍夫曼解码单元10与编码流输入单元P1、编码流输入单元P2、……、编码流输入单元Pn均相连接,用于并行解码多路霍夫曼编码流,得到多路霍夫曼解码流,其中,霍夫曼解码单元10解码编码流Li得到多路霍夫曼解码流中的解码流Mi,即,霍夫曼解码单元10解码编码流L1得到多路霍夫曼解码流中的解码流M1、霍夫曼解码单元10解码编码流L2得到多路霍夫曼解码流中的解码流M2、……、霍夫曼解码单元10解码编码流Ln得到多路霍夫曼解码流中的解码流Mn。

图1中示意性示出了多个输出单元依次为输出单元Q1、输出单元Q2、……、输出单元Qn,其中,多个输出单元中的输出单元Qi用于输出解码流Mi,即,输出单元Q1用于输出解码流M1、输出单元Q2用于输出解码流M2、……、输出单元Qn用于输出解码流Mn。

本发明实施例所提供的图像数据的霍夫曼解码装置,通过利用多个编码流输入单元进行多路霍夫曼编码流的输入,进而对多路霍夫曼编码流进行并行解码,实现了利用一套霍夫曼解码装置可并行完成多个霍夫曼编码或者多路视频图像的解码,大幅提高了解码速度和效率,并且占用的逻辑资源少,从而实现了降低成本投入、提高解码效率的技术效果,进而解决了现有技术中霍夫曼解码效率低的技术问题。

具体地,霍夫曼解码单元10主要包括直流解码器和交流解码器,直流解码器与多个编码流输入单元均相连接,用于并行解码多路霍夫曼编码流中的待解码直流码字,得到直流系数;交流解码器同样与多个编码流输入单元均相连接,用于并行解码多路霍夫曼编码流中的待解码交流码字,得到交流系数。即,直流解码器和交流解码器与编码流输入单元P1、编码流输入单元P2、……、编码流输入单元Pn均相连接。

图2是霍夫曼解码单元的示意图,如图2所示,直流解码器包括第一比较器、VLI解码器和DPCM解码器,交流解码器包括第二比较器、第一查找器和第二查找器,以下具体说明各个器件的功能或作用:

第一比较器用于通过比较待解码直流码字与参考直流码字的大小,确定待解码直流码字的长度,参考直流码字为多路霍夫曼编码流中的最小直流码字;由于在baseline的JPEG系统中采用了范式霍夫曼编码(Canonical Huffman Code),而范式霍夫曼表具有一种特性:长度为M的码字的前N位一定大于长度为N的码字的数值,所以对于范式霍夫曼码字的检测,不需要通过查找表来索引所有可能码字的码长,只需要确定不同长度码长的最小值,通过比较器比较输入码流和这些最小值的大小既能确定当前范式霍夫曼码字的长度,实现在解码周期的一个时钟节拍内就可以确定霍夫曼码字的长度。

VLI解码器与第一比较器相连接,用于对确定长度的待解码直流码字进行VLI解码,DPCM解码器与VLI解码器相连接,用于对VLI解码器的解码结果进行DPCM解码,得到直流系数。具体地,JPEG图像数据的霍夫曼编码中直流系数编码使用了差分脉冲编码,对相邻两个图像块之间的DC系数插值进行了编码Diff=DC(j)-DC(j-1),对Diff进行了VLI变长编码,在获取了霍夫曼码字长度后就可以解析出Diff的大小,对Diff进行DPCM的解码可以获得直流系数的大小。

第二比较器用于通过比较待解码交流码字与参考交流码字的大小,确定待解码交流码字的编码值,其中,参考交流码字为多路霍夫曼编码流中的最小交流码字。JPEG图像数据的霍夫曼编码中交流编码方式与直流编码方式不同之处在于,在63个交流系数经过zig-zag变换后使用RLE游程编码和VLI变长编码,交流编码值可以表示为(RUN,SIZE),当连0的交流系数大于15时,输出(15,0)ZRL(zero run length),而(0,0)则为EOB(end of block),但是,交流系数的霍夫曼解码与直流系数的霍夫曼解码方式一致,通过比较器一拍即可确定出待解码交流码字的码字长度,然后截取出待解码交流码字的编码值。

第一查找器与第二比较器相连接,用于根据待解码交流码字的编码值查表确定待解码交流码字中连续零的个数;第二查找器与第一查找器相连接,用于根据待解码交流码字中连续零的个数查表确定交流系数。确定出待解码交流码字的编码值,通过查表获取码字对应的RUN和SIZE值,即可确定出连0个数和交流系数位宽。然后,根据连0个数确定当前交流系数在63个交流系数中的位置,查询反zig-zag表即可确定当前交流系数的实际位置。

由于霍夫曼编码结果为可变长度码,因此需要经过检测来确定每个码值的结束点,常用的解码算法包含如下几种:(1)二元树搜索法:逐位读入码流判断,直到找到正确的码字,该方法最节省存储空间,但是效率最低。(2)直接查表法:直接从码流中取出最大码长位数的数据,然后从存储器中读取出对应的码字。此方法需要的存储空间较大。(3)分类群组搜索法:二元树搜索法和查表法的结合,将查找表分成几组子类,减少存储空间,但解码效率不如直接查表法。(4)范式哈夫曼表法:对于范式JPEG码表观察,该表具有一定的规律,基于规律可以对标准码表进行改造,该方法的存储空间小于直接搜索法,解码速度相对于二元树搜索法有了很大提高。

无论哪种解码方法,由于硬件对查找表RAM访问需要额外的处理周期,均无法保证在一拍时钟内完成一次霍夫曼解码,而由于霍夫曼码字不定长,只有确定了当前码字的长度之后才能送入下一码字,所以单个编码数据的解码时间直接影响了整个解码系统的效率。本发明实施例所提供的图像数据的霍夫曼解码装置,通过上述结构的霍夫曼解码单元,实现了利用FPGA器件并行运算和pipeline特性,对多路编码数据并行解码的方案,可以使一套解码硬件每拍时钟周期下均能完成一次解码操作,实现并行完成多路编码数据的解码。

进一步地,对于JPEG格式的图像数据而言,其霍夫曼编码表一般有四张,分别为直流亮度霍夫曼值(DC Luminance)、交流亮度霍夫曼值(AC Luminance)、直流色度霍夫曼值(DC Chrominance)、交流色度霍夫曼值(AC Chrominance),相应地,在本发明实施例中,霍夫曼解码单元的结构进一步细化为如3所示,其中,直流解码器包括用于解码直流亮度霍夫曼值(包括依次相连的亮度DC编码值比较器、亮度DC VLI解码器和亮度DC DPCM解码器)和直流色度霍夫曼值的解码器(包括依次相连的色度DC编码值比较器、色度DC VLI解码器和色度DC DPCM解码器),交流解码器包括用于解码交流亮度霍夫曼值(包括依次相连的亮度AC编码值比较器、亮度AC RUN/SIZE查找器和亮度AC反zig-zag表查找器)和交流色度霍夫曼值的解码器(包括依次相连的色度AC编码值比较器、色度AC RUN/SIZE查找器和色度AC反zig-zag表查找器)。

通过上述结构的霍夫曼解码单元,实现了利用FPGA的并行运算和pipeline特性,将所有解码流程进行流水。当单路输入时,任一时刻霍夫曼解码单元只有部分解码电路和查找表处于工作状态,其他部分处于空闲,空闲部分可以用于处理其他路编码数据。

图4是霍夫曼解码单元的解码时序图,如图4所示,若整个解码流程需要n个解码节拍,当输入有n路编码源,则霍夫曼解码单元每拍时钟都能完成一个编码数据的解码。此外,输入编码流可以为n路视频编码流,也可以在编码端对单路视频数据进行分割,比如原始视频数据为1080P,可以分割成n块视频并行编码,则霍夫曼解码单元可以并行对这n块视频进行解码,实现将单路视频的解码效率比原先提高n倍。

优选地,如图5所示,本发明实施例所提供的图像数据的霍夫曼解码装置还包括选择单元20、多个反量化单元和反变换单元30,其中,反量化单元的个数与编码流输入单元的个数相同,图5中示意性示出了反量化单元为n个,依次为反量化单元X1、反量化单元X2、……、反量化单元Xn。

具体地,选择单元20与多个编码流输入单元和霍夫曼解码单元10均相连接,用于使用独热码使多个编码流输入单元在一个解码周期内轮流传输霍夫曼编码流至霍夫曼解码单元,其中,独热码的比特位和解码周期的解码时钟拍数均为n,即,选择单元20通过独热码的作用,在一个解码时钟节拍内选通一个编码流输入单元向霍夫曼解码单元10传输编码流,在编码流输入单元的个数与解码时钟拍数一致的情况下,霍夫曼解码单元10在每一拍时钟内均可以完成一个编码流的解码。

其中,对于任一个编码流输入单元而言,由于霍夫曼编码数据为不定长码,只有确定了当前编码数据的长度后,才能找到下一编码数据的起点,编码数据只能串行送入霍夫曼解码单元10进行处理,在本发明实施例所提供的图像数据的霍夫曼解码装置中,任一编码流输入单元进行编码流输入的流程在图6中示出,如图6所示,编码流输入单元在进行编码流传输过程中,先从数据缓存中取出固定长度(32bit)的编码数据存入寄存器A,然后从寄存器A的低位取出可能的最大编码数据位宽的编码数据送入霍夫曼解码单元10,霍夫曼解码单元10完成了解码处理后将实际的编码数据位宽返回给编码流输入单元,编码流输入单元将已处理完的编码数据移出,当寄存器A的空闲bit数大于等于32bit时,编码流输入单元再次从数据缓存中再取出32bit存入寄存器A。

多个反量化单元与霍夫曼解码单元10和多个输出单元均相连接,用于对多路霍夫曼解码流进行反量化,其中,多个反量化单元中的反量化单元Xi用于对解码流Mi进行反量化,即,反量化单元X1对解码流M1进行反量化、反量化单元X2对解码流M2进行反量化、……、反量化单元Xn对解码流Mn进行反量化。为了压缩数据,在进行霍夫曼编码过程中,通常需要多原始数据进行量化处理来减少数据量,相应地,在进行解码过程中,需要反量化单元进行反量化处理。在本发明实施例中,反量化表从编码数据中提取,并实时更新反量化单元中的反量化表,由于每路编码流的反量化表不同,所以当输入为n路编码源时,需要n个反量化单元。

反变换单元30与多个反量化单元和多个输出单元均相连接,用于对反量化后的多路霍夫曼解码流进行二维离散余弦反变换,并将二维离散余弦反变换后的多路霍夫曼解码流传输至多个输出单元,其中,多个输出单元中的输出单元Qi用于输出二维离散余弦反变换后的解码流Mi,经过二维离散余弦反变换后的数据为恢复出的视频数据。

图7是反变换单元30进行二维离散余弦反变换的流程图,如图7所示,反变换单元30的对象为8x8的数据单元,在进行二维离散余弦反变换过程中,先做一维列IDCT,经过行列转置单元后再做一维行IDCT,由于霍夫曼解码单元10在进行解码过程中使用了流水处理,相应地,反变换单元30的二维离散余弦反变换也使用了流水处理,实现每拍可完成8个点的反变换,进而实现利用单个二维离散余弦反变换即可以完成多路霍夫曼解码流的处理,达到进一步减少逻辑器件的效果。

根据本发明实施例,还提供了一种图像数据的霍夫曼解码方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本发明实施例所提供的图像数据的霍夫曼解码方法可以通过本发明实施例上述内容所提供的任一种图像数据的霍夫曼解码装置来执行,以下对本发明实施例所提供的图像数据的霍夫曼解码方法做具体介绍:

图8是根据本发明实施例的图像数据的霍夫曼解码方法的流程图,如图8所示,该霍夫曼解码方法主要包括如下步骤S802至步骤S806:

S802:图像数据的霍夫曼解码装置中的多个编码流输入单元接收表示图像数据的多路霍夫曼编码流,其中,多个编码流输入单元中的编码流输入单元Pi用于接收多路霍夫曼编码流中的编码流Li,i依次取1至n,n为多路霍夫曼编码流中的编码流的路数,即,编码流输入单元P1用于接收多路霍夫曼编码流中的编码流L1,编码流输入单元P2用于接收多路霍夫曼编码流中的编码流L2、……、编码流输入单元Pn用于接收多路霍夫曼编码流中的编码流Ln。在本发明实施例中,图像数据可以是JPEG格式的数据。

S804:图像数据的霍夫曼解码装置中的霍夫曼解码单元并行解码多路霍夫曼编码流,得到多路霍夫曼解码流,其中,霍夫曼解码单元解码编码流Li得到多路霍夫曼解码流中的解码流Mi,即,霍夫曼解码单元解码编码流L1得到多路霍夫曼解码流中的解码流M1、霍夫曼解码单元解码编码流L2得到多路霍夫曼解码流中的解码流M2、……、霍夫曼解码单元解码编码流Ln得到多路霍夫曼解码流中的解码流Mn。

S806:图像数据的霍夫曼解码装置中的多个输出单元输出多路霍夫曼解码流,其中,多个输出单元中的输出单元Qi用于输出解码流Mi,即,输出单元Q1用于输出解码流M1、输出单元Q2用于输出解码流M2、……、输出单元Qn用于输出解码流Mn。

本发明实施例所提供的图像数据的霍夫曼解码方法,通过利用多个编码流输入单元进行多路霍夫曼编码流的输入,进而对多路霍夫曼编码流进行并行解码,实现了利用一套霍夫曼解码装置可并行完成多个霍夫曼编码或者多路视频图像的解码,大幅提高了解码速度和效率,并且占用的逻辑资源少,从而实现了降低成本投入、提高解码效率的技术效果,进而解决了现有技术中霍夫曼解码效率低的技术问题。

具体地,霍夫曼解码单元并行解码多路霍夫曼编码流包括:并行解码多路霍夫曼编码流中的待解码直流码字,得到直流系数;以及并行解码多路霍夫曼编码流中的待解码交流码字,得到交流系数。其中,可以通过霍夫曼解码单元中的直流解码器对待解码直流码字进行解码,通过霍夫曼解码单元中的交流解码器对待解码交流码字进行解码。

进一步地,在本发明实施例中,可以通过以下步骤来并行解码多路霍夫曼编码流中的待解码直流码字,得到直流系数:

首先,通过比较待解码直流码字与参考直流码字的大小,确定待解码直流码字的长度,其中,参考直流码字为多路霍夫曼编码流中的最小直流码字;由于在baseline的JPEG系统中采用了范式霍夫曼编码(Canonical Huffman Code),而范式霍夫曼表具有一种特性:长度为M的码字的前N位一定大于长度为N的码字的数值,所以对于范式霍夫曼码字的检测,不需要通过查找表来索引所有可能码字的码长,只需要确定不同长度码长的最小值,通过比较器比较输入码流和这些最小值的大小既能确定当前范式霍夫曼码字的长度,实现在解码周期的一个时钟节拍内就可以确定霍夫曼码字的长度。

然后,对确定长度的待解码直流码字进行VLI解码,并对进行VLI解码后的解码结果进行DPCM解码,得到直流系数。具体地,JPEG图像数据的霍夫曼编码中直流系数编码使用了差分脉冲编码,对相邻两个图像块之间的DC系数插值进行了编码Diff=DC(j)-DC(j-1),对Diff进行了VLI变长编码,在获取了霍夫曼码字长度后就可以解析出Diff的大小,对Diff进行DPCM的解码可以获得直流系数的大小。

进一步地,在本发明实施例中,可以通过以下步骤来并行解码多路霍夫曼编码流中的待解码交流码字,得到交流系数:

首先,通过比较待解码交流码字与参考交流码字的大小,确定待解码交流码字的编码值,其中,参考交流码字为多路霍夫曼编码流中的最小交流码字;JPEG图像数据的霍夫曼编码中交流编码方式与直流编码方式不同之处在于,在63个交流系数经过zig-zag变换后使用RLE游程编码和VLI变长编码,交流编码值可以表示为(RUN,SIZE),当连0的交流系数大于15时,输出(15,0)ZRL(zero run length),而(0,0)则为EOB(end of block),但是,交流系数的霍夫曼解码与直流系数的霍夫曼解码方式一致,通过比较器一拍即可确定出待解码交流码字的码字长度,然后截取出待解码交流码字的编码值。

然后,根据待解码交流码字的编码值查表确定待解码交流码字中连续零的个数;以及根据待解码交流码字中连续零的个数查表确定交流系数。确定出待解码交流码字的编码值,通过查表获取码字对应的RUN和SIZE值,即可确定出连0个数和交流系数位宽。然后,根据连0个数确定当前交流系数在63个交流系数中的位置,查询反zig-zag表即可确定当前交流系数的实际位置。

由于霍夫曼编码结果为可变长度码,因此需要经过检测来确定每个码值的结束点,常用的解码算法包含如下几种:(1)二元树搜索法:逐位读入码流判断,直到找到正确的码字,该方法最节省存储空间,但是效率最低。(2)直接查表法:直接从码流中取出最大码长位数的数据,然后从存储器中读取出对应的码字。此方法需要的存储空间较大。(3)分类群组搜索法:二元树搜索法和查表法的结合,将查找表分成几组子类,减少存储空间,但解码效率不如直接查表法。(4)范式哈夫曼表法:对于范式JPEG码表观察,该表具有一定的规律,基于规律可以对标准码表进行改造,该方法的存储空间小于直接搜索法,解码速度相对于二元树搜索法有了很大提高。

无论哪种解码方法,由于硬件对查找表RAM访问需要额外的处理周期,均无法保证在一拍时钟内完成一次霍夫曼解码,而由于霍夫曼码字不定长,只有确定了当前码字的长度之后才能送入下一码字,所以单个编码数据的解码时间直接影响了整个解码系统的效率。本发明实施例所提供的图像数据的霍夫曼解码方法,通过上述解码方式,实现了利用FPGA器件并行运算和pipeline特性,对多路编码数据并行解码的方案,可以使一套解码硬件每拍时钟周期下均能完成一次解码操作,实现并行完成多路编码数据的解码。

优选地,在并行解码多路霍夫曼编码流,得到多路霍夫曼解码流之前,本发明实施例的图像数据的霍夫曼解码方法还包括:通过霍夫曼解码装置中的选择单元使用独热码使多个编码流输入单元在一个解码周期内轮流传输霍夫曼编码流至霍夫曼解码单元,其中,独热码的比特位和解码周期的解码时钟拍数均为n,即,选择单元通过独热码的作用,在一个解码时钟节拍内选通一个编码流输入单元向霍夫曼解码单元传输编码流,在编码流输入单元的个数与解码时钟拍数一致的情况下,霍夫曼解码单元在每一拍时钟内均可以完成一个编码流的解码。

其中,对于任一个编码流输入单元而言,由于霍夫曼编码数据为不定长码,只有确定了当前编码数据的长度后,才能找到下一编码数据的起点,编码数据只能串行送入霍夫曼解码单元进行处理,在本发明实施例所提供的图像数据的霍夫曼解码装置中,编码流输入单元在进行编码流传输过程中,先从数据缓存中取出固定长度(32bit)的编码数据存入寄存器A,然后从寄存器A的低位取出可能的最大编码数据位宽的编码数据送入霍夫曼解码单元,霍夫曼解码单元完成了解码处理后将实际的编码数据位宽返回给编码流输入单元,编码流输入单元将已处理完的编码数据移出,当寄存器A的空闲bit数大于等于32bit时,编码流输入单元再次从数据缓存中再取出32bit存入寄存器A。

在并行解码多路霍夫曼编码流,得到多路霍夫曼解码流之后,本发明实施例的图像数据的霍夫曼解码方法还包括:通过霍夫曼解码装置中的多个反量化单元对多路霍夫曼解码流进行反量化,其中,多个反量化单元中的反量化单元Xi用于对解码流Mi进行反量化,即,反量化单元X1对解码流M1进行反量化、反量化单元X2对解码流M2进行反量化、……、反量化单元Xn对解码流Mn进行反量化;以及通过霍夫曼解码装置中的反变换单元对反量化后的多路霍夫曼解码流进行二维离散余弦反变换,并将二维离散余弦反变换后的多路霍夫曼解码流传输至多个输出单元,其中,多个输出单元中的输出单元Qi用于输出二维离散余弦反变换后的解码流Mi,经过二维离散余弦反变换后的数据为恢复出的视频数据。

为了压缩数据,在进行霍夫曼编码过程中,通常需要多原始数据进行量化处理来减少数据量,相应地,在进行解码过程中,需要反量化单元进行反量化处理。在本发明实施例中,反量化表从编码数据中提取,并实时更新反量化单元中的反量化表,由于每路编码流的反量化表不同,所以当输入为n路编码源时,需要n个反量化单元。

反变换过程中,反变换单元的对象为8x8的数据单元,在进行二维离散余弦反变换过程中,先做一维列IDCT,经过行列转置单元后再做一维行IDCT,由于霍夫曼解码单元在进行解码过程中使用了流水处理,相应地,二维离散余弦反变换也使用了流水处理,实现每拍可完成8个点的反变换,进而实现利用单个二维离散余弦反变换即可以完成多路霍夫曼解码流的处理,达到进一步减少逻辑器件的效果。

通过以上描述可以看出,本发明实施例使用FPGA作为解码硬件,通过FPGA的并行运算和pipeline特性,利用一套解码硬件可并行完成多个霍夫曼编码块或者多路高清视频图像的解码,大幅提高了解码速度和效率,且占用的逻辑资源少。实现了解码架构灵活,通过改变部分模块的数量和接口,就能完成不同解码路数的配置,适用于不同应用场景。并且解码无延时,可完成多路高清视频的实时解码。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1