一种JPEG图像解压缩方法、装置及平台
技术领域
本发明涉及图像处理技术领域,特别涉及一种JPEG图像解压缩方法、装置及平台。
背景技术
目前,图像压缩和解压缩都有很多成熟的算法,且针对不同格式的图像,相应的压缩过程和解压缩过程也会相应不同。其中,JPEG压缩算法应用尤为广泛。
现有技术中,JPEG图像解压缩一般是在CPU+FPGA异构加速平台上进行的,具体过程为:FPGA端只对霍夫曼解码部分进行多路并行处理,接着进行IDCT处理和RGB变换,以得出解压缩后的JPEG图像数据。
但是,这样在处理JPEG图像数量不是很多时,能有不错的硬件加速效果。但是,在处理海量JPEG图像时,霍夫曼解码部分的并行处理路数不能自适应的增加,这样将会引起大量图片等待FPGA端的霍夫曼解码资源,进而影响解压速率。况且,后续的IDCT处理和RGB变换部分仍旧采用串行处理,这样在霍夫曼解码部分的解码路数增加时,串行处理的IDCT变换和RGB变换部分也将会成为整个解压缩处理的性能瓶颈。
发明内容
本发明的目的是提供一种JPEG图像解压缩方法、装置及平台,以解决现有利用CPU+FPGA异构平台进行JPEG图像解压缩时不能自适应改变霍夫曼解码路数和IDCT和RGB变换部分采用串行处理,进而导致JPEG图像解压缩处理存在性能瓶颈且效率较低的问题。
为解决上述技术问题,本发明提供如下技术方案:
一种JPEG图像解压缩方法,包括:
FPGA端接收CPU端发送的预解析的待解压缩图像的编码信息;
所述FPGA端利用预设JPEG图像解码算法,根据所述待解压缩图像的数量,自适应确定霍夫曼解码处理路数;
所述FPGA端根据所述编码信息和所述霍夫曼解码处理路数,对待解压缩图像数据多路并行执行霍夫曼解码操作;
所述FPGA端根据所述霍夫曼解码处理路数,自适应确定反离散余弦转换和RGB颜色变换的处理路数;
所述FPGA端根据所述反离散余弦转换和RGB颜色变换的处理路数,对霍夫曼解码后的所述待解压缩图像数据多路并行执行反离散余弦转换和RGB颜色变换操作,得出解压缩后的图像数据。
可选地,在所述FPGA端接收CPU端发送的预解析的待解压缩图像的编码信息之前还包括:
所述CPU端解析所述待解压缩图像的头文件,得出霍夫曼编码表和量化表;
所述CPU端将所述霍夫曼编码表和量化表通过预设接口传至所述FPGA端的缓存区。
可选地,在所述得出解压缩后的图像数据之后还包括:
所述FPGA端将所述解压缩后的图像数据存放至所述缓存区,从所述缓存区中读取所述解压缩后的图像数据,通过所述预设接口发送至所述CPU端。
可选地,所述预设接口为PCIe接口,所述缓存区为DDR3。
一种JPEG图像解压缩装置,包括集成于FPGA端的接收模块、第一确定模块、霍夫曼解码模块、第二确定模块及IDCT和RGB变换处理模块;
所述接收模块用于接收CPU端发送的预解析的待解压缩图像的编码信息;
所述第一确定模块用于利用预设JPEG图像解码算法,根据所述待解压缩图像的数量,自适应确定霍夫曼解码处理路数;
所述霍夫曼解码模块用于根据所述编码信息和所述霍夫曼解码处理路数,对待解压缩图像数据多路并行执行霍夫曼解码操作;
所述第二确定模块用于根据所述霍夫曼解码处理路数,自适应确定反离散余弦转换和RGB颜色变换的处理路数;
所述IDCT和RGB变换处理模块用于根据所述反离散余弦转换和RGB颜色变换的处理路数,对霍夫曼解码后的所述待解压缩图像数据多路并行执行反离散余弦转换和RGB颜色变换操作,得出解压缩后的图像数据。
可选地,还包括集成于所述CPU端的解析模块和发送模块;
所述解析模块用于解析所述待解压缩图像的头文件,得出霍夫曼编码表和量化表;
所述发送模块用于将所述霍夫曼编码表和量化表通过预设接口传至所述FPGA端的缓存区。
可选地,还包括集成于所述FPGA端的解压缩数据返回模块;
所述解压缩数据返回模块用于将所述解压缩后的图像数据存放至所述缓存区,从所述缓存区中读取所述解压缩后的图像数据,通过所述预设接口发送至所述CPU端。
可选地,所述预设接口为PCIe接口,所述缓存区为DDR3。
一种JPEG图像解压缩平台,包括CPU端和FPGA端;
所述CPU端用于解析待解压缩图像的头文件,得出包括霍夫曼编码表和量化表的编码信息,并将所述编码信息发送至所述FPGA端;
所述FPGA端用于接收所述编码信息,利用预设JPEG图像解码算法,根据所述待解压缩图像的数量,自适应确定霍夫曼解码处理路数;根据所述编码信息和所述霍夫曼解码处理路数,对待解压缩图像数据多路并行执行霍夫曼解码操作;根据所述霍夫曼解码处理路数,自适应确定反离散余弦转换和RGB颜色变换的处理路数;根据所述反离散余弦转换和RGB颜色变换的处理路数,对霍夫曼解码后的所述待解压缩图像数据多路并行执行反离散余弦转换和RGB颜色变换操作,得出解压缩后的图像数据;将所述解压缩后的图像数据返回至所述CPU端。
可选地,所述FPGA端的缓存区为DDR3;所述FPGA端和所述CPU端间的数据交互接口为PCIe接口。
本发明所提供的JPEG图像解压缩方法、装置及平台,通过FPGA端接收CPU端发送的预解析的待解压缩图像的编码信息;FPGA端利用预设JPEG图像解码算法,根据待解压缩图像的数量,自适应确定霍夫曼解码处理路数;FPGA端根据编码信息和霍夫曼解码处理路数,对待解压缩图像数据多路并行执行霍夫曼解码操作;FPGA端根据霍夫曼解码处理路数,自适应确定反离散余弦转换和RGB颜色变换的处理路数;FPGA端根据反离散余弦转换和RGB颜色变换的处理路数,对霍夫曼解码后的待解压缩图像数据多路并行执行反离散余弦转换和RGB颜色变换操作,得出解压缩后的图像数据。
可见,本申请根据待压缩图像数量,自适应选择霍夫曼解码路数,这样在图像数量增加或较多时,可以自适应调整解码路数,避免大量待解压图像等待FPGA端的霍夫曼解码资源,进而提高了解压缩效率;且根据霍夫曼解码路数,自适应选择反离散余弦转换和RGB颜色变换的处理路数,多路并行进行相应处理,这样可以最大限度消除现有反离散余弦转换和RGB颜色变换部分采用串行处理时的性能瓶颈,进而提高JPEG解压缩的执行效率,使得CPU+FPGA异构平台加速效果更好。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的JPEG图像解压缩方法的一种具体实施方式的流程示意图;
图2为本发明实施例提供的JPEG图像解压缩装置的结构示意框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例提供的JPEG图像解压缩方法的一种具体实施方式的流程示意图,该方法可以包括以下步骤:
步骤101:FPGA端接收CPU端发送的预解析的待解压缩图像的编码信息。
可以理解,上述编码信息可以包括但不限于待解压缩JPEG图像的霍夫曼编码表和量化表。而该霍夫曼编码表和量化表具体可以由CPU端通过解析JPEG图像的头文件得出的。
上述编码信息可以是CPU端预先解析好的,也可以不是预先解析好的,此时,CPU端从JPEG图像头文件中提取出霍夫曼编码表和量化表后,可以直接将霍夫曼编码表和量化边通过预设接口传送至FPGA端的缓存区。也就是说,在一些具体实施方式中,在本步骤之前,JPEG图像解压缩方法还可以包括:CPU端解析待解压缩图像的头文件,得出霍夫曼编码表和量化表;CPU端将霍夫曼编码表和量化表通过预设接口传至FPGA端的缓存区。
步骤102:FPGA端利用预设JPEG图像解码算法,根据待解压缩图像的数量,自适应确定霍夫曼解码处理路数。
FPGA端运行有预先编写的JPEG图像解码算法,该JPEG图像解码算法可以为利用OpenCL(Open Computing Language,开放式计算语言)编写的程序,其具备基本的JPEG图像解码功能外,还具备根据待解压缩图像数量自适应选择霍夫曼解码路数,根据霍夫曼解码路数自适应选择IDCT(Inverse Discrete Cosine Transform,反离散余弦转换)和RGB颜色变换部分的处理路数的功能。
可以理解,FPGA端可以自适应确定霍夫曼解码处理路数,即可以根据图像数量的多少,选择所需的霍夫曼解码处理路数。当然,图像数量的增加或减少,也会相应地增加或减少霍夫曼解码处理路数。
例如,图像数量为n,FPGA端则自适应选择m路并行的霍夫曼处理路数;当图像数量突然增加至N(N>n)时,FPGA端会自适应地增加霍夫曼处理路数至M(M>m)路。
根据当前所需处理的JPEG图像数量,自适应地选取所需的霍夫曼解码处理路数,避免了处理海量JPEG图像时,大量图像需要等待霍夫曼解码资源的情况出现,进而提高了JPEG图像解码速率。
步骤103:FPGA端根据编码信息和霍夫曼解码处理路数,对待解压缩图像数据多路并行执行霍夫曼解码操作。
具体地,确定出霍夫曼解码处理路数后,可以根据编码信息内包含的霍夫曼编码表和量化表等相关信息,多路并行执行霍夫曼解码操作,对待解压缩图像数据进行霍夫曼解码。
步骤104:FPGA端根据霍夫曼解码处理路数,自适应确定反离散余弦转换和RGB颜色变换的处理路数。
可以理解,FPGA端根据霍夫曼解码路数,自适应确定IDCT和RGB变换的处理路数。即当霍夫曼解码路数增加时,IDCT+RGB变换的处理路数会相应地增加;当霍夫曼解码路数减少时,IDCT+RGB变换的处理路数也会相应地减少。而至于增加或减少的路数具体由运行于FPGA端的JEPG图像解压缩算法确定。
根据霍夫曼解码处理路数来确定IDCT+RGB变换的处理路数,可以使得解码路数和后续的IDCT+RGB变换的处理路数相协调,这样两者的处理路数可以很好地相匹配,进而可以极大地减少处理海量JPEG图像时的处理时间,进而提高解压缩效率,使得FPGA端对解压缩算法的硬件加速效果更佳。
步骤105:FPGA端根据反离散余弦转换和RGB颜色变换的处理路数,对霍夫曼解码后的待解压缩图像数据多路并行执行反离散余弦转换和RGB颜色变换操作,得出解压缩后的图像数据。
自适应选择IDCT+RGB变换的处理路数后,FPGA端可以多路并行执行IDCT+RGB变换操作。例如,当所确定的处理路数为K时,则执行K路IDCT+RGB变换操作,且这K路处理路数是并行的。
当然,在某种特殊情况下,IDCT+RGB变换的处理路数也可能为一路,例如,霍夫曼解码路数为某个特定数值时,此时,根据霍夫曼解码路数刚好确定IDCT+RGB变换的路数为一路。
多路并行进行IDCT+RGB变换,可以最大限度地克服串行处理给解压缩处理带来的性能瓶颈。
在FPGA端完成解压缩操作后,可以将解压缩后的图像数据返回给CPU端。故在一些具体实施方式中,在得出解压缩后的图像数据之后还可以包括:FPGA端将解压缩后的图像数据存放至缓存区,从缓存区中读取解压缩后的图像数据,通过预设接口发送至CPU端。
可以理解,上述预设接口可以具体为但不限于PCIe接口。缓存区可以具体为DDR3,也可以为其它类型的存储介质。
本实施例中,根据待压缩图像数量,自适应选择霍夫曼解码路数,这样在图像数量增加或较多时,可以自适应调整解码路数,避免大量待解压图像等待FPGA端的霍夫曼解码资源,进而提高了解压缩效率;且根据霍夫曼解码路数,自适应选择反离散余弦转换和RGB颜色变换的处理路数,多路并行进行相应处理,这样可以最大限度消除现有反离散余弦转换和RGB颜色变换部分采用串行处理时带来的解压缩处理性能瓶颈,进而提高JPEG解压缩的执行效率,使得CPU+FPGA异构平台加速效果更好。
下面对本发明实施例提供的JPEG图像解压缩装置进行介绍,下文描述的JPEG图像解压缩装置与上文描述的JPEG图像解压缩方法可相互对应参照。
请参考图2,图2为本发明实施例提供的JPEG图像解压缩装置的结构示意框图,该装置可以包括:
集成于FPGA端的接收模块21、第一确定模块22、霍夫曼解码模块23、第二确定模块24及IDCT和RGB变换处理模块25;
接收模块21用于接收CPU端发送的预解析的待解压缩图像的编码信息;
第一确定模块22用于利用预设JPEG图像解码算法,根据待解压缩图像的数量,自适应确定霍夫曼解码处理路数;
霍夫曼解码模块23用于根据编码信息和霍夫曼解码处理路数,对待解压缩图像数据多路并行执行霍夫曼解码操作;
第二确定模块24用于根据霍夫曼解码处理路数,自适应确定反离散余弦转换和RGB颜色变换的处理路数;
IDCT和RGB变换处理模块25用于根据反离散余弦转换和RGB颜色变换的处理路数,对霍夫曼解码后的待解压缩图像数据多路并行执行反离散余弦转换和RGB颜色变换操作,得出解压缩后的图像数据。
在一些具体实施方式中,该装置还可以包括集成于CPU端的解析模块和发送模块;
解析模块用于解析待解压缩图像的头文件,得出霍夫曼编码表和量化表;
发送模块用于将霍夫曼编码表和量化表通过预设接口传至FPGA端的缓存区。
在一些具体实施方式中,该装置还可以包括集成于FPGA端的解压缩数据返回模块;
解压缩数据返回模块用于将解压缩后的图像数据存放至缓存区,从缓存区中读取解压缩后的图像数据,通过预设接口发送至CPU端。
可选地,预设接口为PCIe接口,缓存区为DDR3。
本实施例中,该装置根据待压缩图像数量,自适应选择霍夫曼解码路数,这样在图像数量增加或较多时,可以自适应调整解码路数,避免大量待解压图像等待FPGA端的霍夫曼解码资源,进而提高了解压缩效率;且根据霍夫曼解码路数,自适应选择反离散余弦转换和RGB颜色变换的处理路数,多路并行进行相应处理,这样可以最大限度消除现有反离散余弦转换和RGB颜色变换部分采用串行处理时带来的解压缩处理性能瓶颈,进而提高JPEG解压缩的执行效率,使得CPU+FPGA异构平台加速效果更好。
下面将对本发明实施例提供的JPEG图像解压缩平台进行详细介绍。该平台包括CPU端和FPGA端。
CPU端用于解析待解压缩图像的头文件,得出包括霍夫曼编码表和量化表的编码信息,并将编码信息发送至FPGA端;
FPGA端用于接收编码信息,利用预设JPEG图像解码算法,根据待解压缩图像的数量,自适应确定霍夫曼解码处理路数;根据编码信息和霍夫曼解码处理路数,对待解压缩图像数据多路并行执行霍夫曼解码操作;根据霍夫曼解码处理路数,自适应确定反离散余弦转换和RGB颜色变换的处理路数;根据反离散余弦转换和RGB颜色变换的处理路数,对霍夫曼解码后的待解压缩图像数据多路并行执行反离散余弦转换和RGB颜色变换操作,得出解压缩后的图像数据;将解压缩后的图像数据返回至CPU端。
需要说明,CPU端可以运行有利用编程语言(例如C语言)编写的主机端程序,以调用FPGA端上的解压缩算法硬件电路进行硬件加速。FPGA端可以运行有利用编程语言(例如OpenCL语言)编写的JPEG图像解压缩算法程序,以进行JPEG图像解压缩。
CPU端和FPGA端之间的数据交互接口可以为但不限于PCIe接口,即CPU端可以将提取的霍夫曼编码表和量化表,通过PCIe接口传入FPGA端的缓存区;FPGA端可以将解压后的图像数据,通过PCIe接口读取到主机端。而FPGA端的缓存区可以为但不限于DDR3。
本实施例中,CPU+FPGA异构平台通过运行自适应多路并行JPEG图像解压缩算法,根据待解压缩图像数量,自适应选择霍夫曼解码路数;且根据霍夫曼解码路,自适应协调选择IDCT+RGB变换的处理路数;且实现霍夫曼解码的多路并行和IDCT+RGB变换的多路并行。与现有CPU+FPGA异构平台相比,本实施例提供的CPU+FPGA异构平台可以消除现有JPEG图像解压缩处理性能瓶颈,提高解压缩效率,且能有效地提升FPGA解压缩JPEG图像的加速效果。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的JPEG图像解压缩方法、装置及平台进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。