CN112437309A - 一种jpeg编码方法及装置 - Google Patents

一种jpeg编码方法及装置 Download PDF

Info

Publication number
CN112437309A
CN112437309A CN202011261407.1A CN202011261407A CN112437309A CN 112437309 A CN112437309 A CN 112437309A CN 202011261407 A CN202011261407 A CN 202011261407A CN 112437309 A CN112437309 A CN 112437309A
Authority
CN
China
Prior art keywords
rgb data
block
parallel
yuv
rgb
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011261407.1A
Other languages
English (en)
Inventor
李明
耿嘉
樊平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Shenwei Technology Co ltd
Original Assignee
Beijing Shenwei Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Shenwei Technology Co ltd filed Critical Beijing Shenwei Technology Co ltd
Priority to CN202011261407.1A priority Critical patent/CN112437309A/zh
Publication of CN112437309A publication Critical patent/CN112437309A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

本发明公开了一种JPEG编码方法及装置,应用于图像处理领域,FPGA加速卡的DDR缓存端接收CPU端发送的目标图片;FPGA加速卡从DDR缓存端读取目标图片的RGB数据,并将RGB数据的JPEG编码过程,划分为多个顺序执行的编码步骤进行流水线并行处理,以得到编码后的JPEG码流;FPGA加速卡回传所述JPEG码流至所述DDR缓存端;DDR缓存端将JPEG码流发送至CPU端,通过本发明提高了JPEG编码算法的运行速度,进而提高了JPEG编码效率。

Description

一种JPEG编码方法及装置
技术领域
本发明涉及图像压缩领域,尤其涉及一种JPEG编码方法及装置。
背景技术
JPEG(Joint Photographic Experts Group)即联合图像专家组,是用于连续色调静态图像压缩的一种标准,文件后缀名为,jpg或,jpeg,是最常用的图像文件格式。随着电子工业及互联网的蓬勃发展,JPEG图像的市场规模也随之井喷,与之相应的是服务器CPU的压力越来越大,完全依赖于服务器的主机端的CPU完成JPEG编码,效率是比较低的。
发明内容
鉴于现有技术存在上述问题,本发明提出了一种JPEG编码方法及装置,用于提高JPEG编码效率。
第一方面,本发明实施例提供一种JPEG编码方法,包括:
FPGA加速卡的DDR缓存端接收CPU端发送的目标图片;
所述FPGA加速卡从所述DDR缓存端读取所述目标图片的RGB数据,并将所述RGB数据的JPEG编码过程,划分为多个顺序执行的编码步骤进行流水线并行处理,以得到编码后的JPEG码流;
所述FPGA加速卡回传所述JPEG码流至所述DDR缓存端;
所述DDR缓存端将所述JPEG码流发送至CPU端。
可选地,所述FPGA加速卡的DDR缓存端接收CPU端发送的目标图片,包括:
所述DDR缓存端接收到所述CPU端发送的目标图片之后,对接收到的目标图片划分为多个RGB宏块,以供所述FPGA加速卡依次读取所述多个RGB宏块中每个RGB宏块的RGB数据。
可选地,所述将所述RGB数据的JPEG编码过程,划分为多个顺序执行的编码步骤进行流水线并行处理,包括:
所述FPGA加速卡依次从所述DDR缓存端读入所述目标图片中每块RGB宏块的RGB数据,并在读入第二块RGB数据的同时,并行将第一块RGB数据转换为YUV数据;
所述FPGA加速卡在读入第三块RGB数据的同时,并行将所述第二块RGB数据转换为YUV数据,以及并行将所述第一块RGB数据的YUV转换结果进行离散余弦变换;
所述FPGA加速卡在读入第四块RGB数据的同时,并行将所述第三块RGB数据转换为YUV数据,并行将所述第二块RGB数据的YUV转换结果进行离散余弦变换,以及并行将所述第一块RGB数据的离散余弦变换结果进行量化处理;
所述FPGA加速卡在读入第五块RGB数据的同时,并行将所述第四块RGB数据转换为YUV数据,并行将所述第三块RGB数据的YUV转换结果进行离散余弦变换,并行将所述第二块RGB数据的离散余弦变换结果进行量化处理,以及并行将所述第一块RGB数据的量化结果进行Z形变换;
所述FPGA加速卡在读入第i块RGB数据的同时,并行将所述第i-1块RGB数据转换为YUV数据,并行将所述第i-2块RGB数据的YUV转换结果进行离散余弦变换,并行将所述第i-3块RGB数据的离散余弦变换结果进行量化处理,并行将所述第i-4块RGB数据的量化结果进行Z形变换,以及并行将所述第i-5块RGB数据的Z形变换结果进行哈夫曼编码,i依次取6至m,m为所述目标图片划分的宏块数量。
可选地,每个RGB宏块的YUV转换结果为N*N的YUV像素块,N为大于1的整数;
所述FPGA加速卡在对所述N*N的YUV像素块进行离散余弦变换时,包括:
针对所述N*N的YUV像素块依次执行N次循环计算,其中,每次循环计算并行的完成N*N的YUV像素块中N个像素点的离散余弦变换。
可选地,在所述DDR缓存端将所述JPEG码流发送至CPU端之后,还包括:
所述CPU端对接收到的JPEG码流进行后处理,得到处理后JPEG码流;
打包所述处理后JPEG码流,得到所述目标图片对应的JPEG格式压缩图片。
第二方面,本发明实施例提供一种JPEG编码装置,包含FPGA加速卡和CPU端,其中,
所述CPU端,用于将目标图片发送至所述FPGA加速卡的DDR缓存端;
所述FPGA加速卡的DDR缓存端,用于接收所述CPU端发送的目标图片;
所述FPGA加速卡,用于从所述DDR缓存端读取所述目标图片的RGB数据,并将所述RGB数据的JPEG编码过程,划分为多个顺序执行的编码步骤进行流水线并行处理,以得到编码后的JPEG码流;回传所述JPEG码流至所述DDR缓存端;
所述DDR缓存端,还用于将所述JPEG码流发送至CPU端。
可选地,所述FPGA加速卡的DDR缓存端,具体用于:
所述DDR缓存端接收到所述CPU端发送的目标图片之后,对接收到的目标图片划分为多个RGB宏块,以供所述FPGA加速卡依次读取所述多个RGB宏块中每个RGB宏块的RGB数据。
可选地,所述FPGA加速卡,具体用于:
依次从所述DDR缓存端读入所述目标图片中每块RGB宏块的RGB数据,并在读入第二块RGB数据的同时,并行将第一块RGB数据转换为YUV数据;
在读入第三块RGB数据的同时,并行将所述第二块RGB数据转换为YUV数据,以及并行将所述第一块RGB数据的YUV转换结果进行离散余弦变换;
在读入第四块RGB数据的同时,并行将所述第三块RGB数据转换为YUV数据,并行将所述第二块RGB数据的YUV转换结果进行离散余弦变换,以及并行将所述第一块RGB数据的离散余弦变换结果进行量化处理;
在读入第五块RGB数据的同时,并行将所述第四块RGB数据转换为YUV数据,并行将所述第三块RGB数据的YUV转换结果进行离散余弦变换,并行将所述第二块RGB数据的离散余弦变换结果进行量化处理,以及并行将所述第一块RGB数据的量化结果进行Z形变换;
在读入第i块RGB数据的同时,并行将所述第i-1块RGB数据转换为YUV数据,并行将所述第i-2块RGB数据的YUV转换结果进行离散余弦变换,并行将所述第i-3块RGB数据的离散余弦变换结果进行量化处理,并行将所述第i-4块RGB数据的量化结果进行Z形变换,以及并行将所述第i-5块RGB数据的Z形变换结果进行哈夫曼编码,i依次取6至m,m为所述目标图片划分的宏块数量。
可选地,每个RGB宏块的YUV转换结果为N*N的YUV像素块,N为大于1的整数;所述FPGA加速卡,具体用于:
在对所述N*N的YUV像素块进行离散余弦变换时,针对所述N*N的YUV像素块依次执行N次循环计算,其中,每次循环计算并行的完成N*N的YUV像素块中N个像素点的离散余弦变换。
可选地,所述CPU端,还用于:
对接收到的JPEG码流进行后处理,得到处理后JPEG码流;
打包所述处理后JPEG码流,得到所述目标图片对应的JPEG格式压缩图片。
本发明实施例提供的一个或者多个技术方案,至少实现了如下技术效果或者优点:
本发明实施例提供的JPEG编码方法及装置,FPGA加速卡的DDR缓存端接收CPU端发送的目标图片;FPGA加速卡从DDR缓存端读取目标图片的RGB数据,并将对RGB数据的JPEG编码过程划分为多个顺序执行的编码步骤进行流水线并行处理,以得到编码后的JPEG码流;FPGA加速卡回传JPEG码流至DDR缓存端;DDR缓存端将JPEG码流发送至CPU端。从而充分利用了FPGA的流水线并行特点来实现流水线并行的处理目标图片的JPEG编码过程,通过FPGA加速了JPEG压缩的运行速度,不再单纯依赖于CPU进行JPEG编码,从而提高了JPEG编码效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了本发明实施例中JPEG编码方法的流程图;
图2示出了本发明实施例中FPGA流水线并行处理JPEG编码过程的示意图;
图3示出了本发明实施例中将RGB数据划分出宏块的示意图;
图4示出了本发明实施例中FPGA进行一次循环计算的示意图;
图5示出了本发明实施例中JPEG编码装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本文中出现的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
第一实施例
本发明第一实施例在提供的一种JPEG编码方法,应用于电子设备,该电子设备为用户设备或者服务器,该电子设备上配置有FPGA(Field Programmable Gate Array,现场可编程门阵列)加速卡,从而基于电子设备的主处理器(CPU)和FPGA,实现基于CPU+FPGA异构计算架构的JPEG编码方法。图1示出了本发明实施例中JPEG编码方法的流程图。
下面,请参见图1所示,对本发明实施例提供的JPEG编码方法进行详细的描述:
首先,执行S101:CPU端获取目标图片。
具体的,CPU端将获取的目标图片是RGB格式文件,RGB格式文件发送至FPGA加速卡的DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory,双倍数据率同步动态随机存取存储器)缓存端。
接着,执行S102:FPGA加速卡的DDR缓存端接收到CPU端发送的目标图片。FPGA加速卡在接收到目标图片之后进行缓存,以供FPGA加速卡读取目标图片的RGB数据以进行JPEG编码。
具体来讲,DDR缓存端在接收到CPU端发送的目标图片,对接收到的目标图片划分为多个RGB宏块。参考图3所示,可以将目标图片划分为规格是8x8的多个RGB宏块。当然,也可以实际需求划分为其他规格的RGB宏块。
再接着,执行S103:FPGA加速卡从DDR缓存端读取目标图片的RGB数据,并将对RGB数据的JPEG编码过程,划分为多个顺序执行的编码步骤进行流水线并行处理,以得到编码后的JPEG码流。
具体的,将JPEG编码过程划分为如下六个顺序执行的编码步骤进行流水线并行处理:1、读入RGB数据、2、RGB数据转换为YUV数据、3、离散余弦变换、4、量化处理、5、Z形变换和6、哈夫曼编码
FPGA加速卡利用流水线并行处理方式,依次对从DDR缓存端读入每块RGB宏块的RGB数据,并采用流水线并行处理的方式对读入的每块RGB数据进行JPEG编码算法,得到编码后的JPEG码流。
下面,进行详细描述FPGA加速卡对读入的每块RGB数据进行JPEG编码的过程:
FPGA加速卡依次从DDR缓存端读入目标图片中每块RGB数据,并在读入第二块RGB数据的同时,并行的将第一块RGB数据转换为YUV数据;FPGA加速卡在读入第三块RGB数据的同时,并行的将第二块RGB数据转换为YUV数据,以及并行的将第一块RGB数据的YUV转换结果进行离散余弦变换;FPGA加速卡在读入第四块RGB数据的同时,并行的将第三块RGB数据转换为YUV数据,并行的将第二块RGB数据的YUV转换结果进行离散余弦变换,以及并行的将第一块RGB数据的离散余弦变换结果进行量化处理;FPGA加速卡在读入第五块RGB数据的同时,并行的将第四块RGB数据转换为YUV数据,并行将的第三块RGB数据的YUV转换结果进行离散余弦变换,并行将第二块RGB数据的离散余弦变换结果进行量化处理,以及并行的将第一块RGB数据的量化结果进行Z形变换;FPGA加速卡在读入第i块RGB数据的同时,并行的将第i-1块RGB数据转换为YUV数据,并行将第i-2块RGB数据的YUV转换结果进行离散余弦变换,并行的将第i-3块RGB数据的离散余弦变换结果进行量化处理,并行的将第i-4块RGB数据的量化结果进行Z形变换,以及并行将第i-5块RGB数据的Z形变换结果进行哈夫曼编码,i依次取6至m,m为目标图片划分的宏块数量。
上述实施过程利用了FPGA加速卡的流水线并行特点,实现了以流水线并行处理的方式对目标图片进行JPEG编码处理,能够大大加快JPEG编码算法的运行速度,继而提高了JPEG编码效率。
下面参考图2所示,对本发明实施例中,流水线并行处理JPEG编码过程的实施细节进行举例说明:
首先,在t1时间内,FPGA加速卡从DDR缓存端读入第1块RGB数据;由于此时还没有在先读入的RGB数据块,也就没有与读入第1块RGB数据并行执行的动作。
接着,在t2时间内,FPGA加速卡从DDR缓存端读入第2块RGB数据,在读入第2块RGB数据的同时,并行的执行将第1块RGB数据转换为YUV数据的过程,得到第1块RGB数据的YUV转换结果。
再接着,在t3时间内,FPGA加速卡从DDR缓存端读入第3块RGB数据;在读入第3块RGB数据的同时,并行的执行将第2块RGB数据转换为YUV数据的过程,得到第2块RGB数据的YUV转换结果,以及并行的执行将第1块RGB数据的YUV转换结果进行离散余弦变换的过程,得到第1块RGB数据的离散余弦变换结果。
从而,在t3时间内不仅仅读入了第3块RGB数据,还同时得到了第1块RGB数据的离散余弦变换结果和第2块RGB数据的YUV转换结果,从而提高了编码效率。
再接着,在t4时间内,FPGA加速卡从DDR缓存端读入第4块RGB数据;在读入第4块RGB数据的同时,并行的执行将第3块RGB数据转换为YUV数据的过程,以得到第3块RGB数据的YUV转换结果;并行的执行将第2块RGB数据的YUV转换结果进行离散余弦变换的过程,以得到第2块RGB数据的离散余弦变换结果;还并行的执行将第1块RGB数据的离散余弦变换结果进行量化处理的过程,以得到第1块RGB数据的量化结果。
从而,在t4时间内不仅仅读入了第4块RGB数据,还同时得到了第1块RGB数据的量化结果、第2块RGB数据的离散余弦变换结果以及第3块RGB数据的YUV转换结果,从而提高了编码效率。
再接着,在t5时间内,FPGA加速卡从DDR缓存端读入第5块RGB数据;在读入第5块RGB数据的同时,并行的执行将第4块RGB数据转换为YUV数据的过程,以得到第4块RGB数据的YUV转换结果;并行的执行将第3块RGB数据的YUV转换结果进行离散余弦变换的过程,以得到第3块RGB数据的离散余弦变换结果;并行的执行将第2块RGB数据的离散余弦变换结果进行量化处理的过程,以得到第2块RGB数据的量化结果;以及并行的执行将第1块RGB数据的量化结果进行Z形变换的过程,以得到第1块RGB数据的Z形变换结果。
从而,在t5时间内不仅读入了第5块RGB数据,还同时得到了第1块RGB数据的Z形变换结果、第2块RGB数据的量化结果、第3块RGB数据的离散余弦变换结果以及第4块RGB数据的YUV转换结果,从而提高了效率。
再接着,在t5时间内,FPGA加速卡从DDR缓存端读入第6块RGB数据;在读入第6块RGB数据的同时,并行的执行将第5块RGB数据转换为YUV数据的过程,得到第5块RGB数据的YUV转换结果;并行的执行将第4块RGB数据的YUV转换结果进行离散余弦变换的过程,得到第4块RGB数据的离散余弦变换结果;并行的执行将第3块RGB数据的离散余弦变换结果进行量化处理的过程,以得到第3块RGB数据的量化结果;并行的执行将第2块RGB数据的量化结果进行Z形变换的过程,以得到第2块RGB数据的Z形变换结果;以及并行的执行将第1块RGB数据的Z形变换结果进行哈夫曼编码的过程,以得到第1块RGB数据的哈夫曼编码结果。
从而,在t6时间内不仅仅读入了第6块RGB数据,还同时得到了第1块RGB数据的哈夫曼编码结果、第2块RGB数据的Z形变换结果、第3块RGB数据的量化结果,第4块RGB数据的离散余弦变换结果,第5块RGB数据的YUV转换结果,从而提高了编码效率。
以此规律进行下去,直至FPGA加速卡完成对目标图片中最后一块RGB数据的哈夫曼编码。以上述这种流水线并行处理方式,不需要等上一块RGB数据的哈夫曼编码完成之后再去读入下一块RGB数据,从而能够提高JPEG编码算法的运行速度。
在一可选的实施方式下,每块RGB数据的YUV转换结果为N*N的YUV像素块;为了进一步提高JPEG编码效率,利用FPGA的数据并行特点,在对每块RGB数据的YUV转换结果进行离散余弦变换时,具体是:针对N*N的YUV像素块依次执行N次循环计算,其中,每次循环计算并行的完成N*N的YUV像素块中N个像素点的离散余弦变换。
下面以YUV转换结果为8*8的YUV像素块为例,针对8*8的YUV像素块进行执行8次循环计算,一次循环计算并行的完成对8*8的YUV像素块对应8个像素点的离散余弦变换,具体过程如下:
首先,FPGA加速卡执行第1次循环计算,参考图4所示的第1次循环计算,并行的进行像素点0~7的离散余弦变换,对应得到像素点0~7的离散余弦变换结果。接下来,FPGA加速卡进行第2次循环计算:并行的进行像素点8~15的离散余弦变换,对应得到像素点8~15的离散余弦变换结果;接下来,进行第3次循环计算:并行的进行像素点16~23的离散余弦变换,对应得到像素点16~23的离散余弦变换结果;接下来,进行第4次循环计算:并行的进行像素点24~31的离散余弦变换,对应得到像素点24~31的离散余弦变换结果;接下来,进行第5次循环计算:并行的进行像素点32~39的离散余弦变换,对应得到像素点32~39的离散余弦变换结果;接下来,进行第6次循环计算:并行的进行像素点40~47这8个像素点的离散余弦变换,对应得到像素点40~47的离散余弦变换结果;接下来,进行第7次循环计算:并行的进行像素点48~55这8个像素点的离散余弦变换,对应得到像素点48~55的离散余弦变换结果;最后,进行第8次循环计算:并行的进行像素点56~63的离散余弦变换,对应得到像素点56~63的离散余弦变换结果。
可见,在同一时间内,一次循环计算就能够同时得到8个像素点的离散余弦变换结果,那么,仅仅经过8次循环计算就得到了8*8的YUV像素块中所有像素点的离散余弦变换结果,不再需要执行64次循环计算来一一得到每个像素点的离散余弦变换结果,进一步提高了编码效率。
通过上述对JPEG编码算法的改造,使其更好的适应FPGA流水线并行和数据并行的特点,使得JPEG编码算法在FPGA平台的运行速度比在CPU运行速度高数十倍。
在步骤S103之后,继续执行S104:FPGA加速卡回传JPEG码流至DDR缓存端。
在步骤S104之后,继续执行S105:DDR缓存端将JPEG码流发送至CPU端。CPU端对接收到的JPEG码流进行后处理,得到处理后JPEG码流;具体的,对JPEG码流的后处理包括加入图片信息,比如,加入目标图片的尺寸、格式等等;打包处理后JPEG码流,得到目标图片对应的JPEG格式压缩图片。通过加入的图片信息,便于解码器对压缩的JPEG格式压缩图片进行解码还原。
第二实施例
本发明通过第二实施例提供了一种JPEG编码装置,参考图5所示,该JPEG编码装置包括FPGA加速卡和CPU端,其中,
CPU端,用于将目标图片发送至FPGA加速卡的DDR缓存端;
FPGA加速卡的DDR缓存端,用于接收CPU端发送的目标图片;
FPGA加速卡,用于从DDR缓存端读取目标图片的RGB数据,并将RGB数据的JPEG编码过程,划分为多个顺序执行的编码步骤进行流水线并行处理,以得到编码后的JPEG码流;回传JPEG码流至DDR缓存端;
DDR缓存端,还用于将JPEG码流发送至CPU端。
在一可选的实施方式下,FPGA加速卡的DDR缓存端,具体用于:
DDR缓存端接收到CPU端发送的目标图片之后,对接收到的目标图片划分为多个RGB宏块,以供FPGA加速卡依次读取多个RGB宏块中每个RGB宏块的RGB数据。
在一可选的实施方式下,FPGA加速卡,具体用于:
依次从DDR缓存端读入目标图片中每块RGB宏块的RGB数据,并在读入第二块RGB数据的同时,并行将第一块RGB数据转换为YUV数据;
在读入第三块RGB数据的同时,并行将第二块RGB数据转换为YUV数据,以及并行将第一块RGB数据的YUV转换结果进行离散余弦变换;
在读入第四块RGB数据的同时,并行将第三块RGB数据转换为YUV数据,并行将第二块RGB数据的YUV转换结果进行离散余弦变换,以及并行将第一块RGB数据的离散余弦变换结果进行量化处理;
在读入第五块RGB数据的同时,并行将第四块RGB数据转换为YUV数据,并行将第三块RGB数据的YUV转换结果进行离散余弦变换,并行将第二块RGB数据的离散余弦变换结果进行量化处理,以及并行将第一块RGB数据的量化结果进行Z形变换;
在读入第i块RGB数据的同时,并行将第i-1块RGB数据转换为YUV数据,并行将第i-2块RGB数据的YUV转换结果进行离散余弦变换,并行将第i-3块RGB数据的离散余弦变换结果进行量化处理,并行将第i-4块RGB数据的量化结果进行Z形变换,以及并行将第i-5块RGB数据的Z形变换结果进行哈夫曼编码,i依次取6至m,m为目标图片划分的宏块数量。
在一可选的实施方式下,每个RGB宏块的YUV转换结果为N*N的YUV像素块,N为大于1的整数;FPGA加速卡,具体用于:
在对N*N的YUV像素块进行离散余弦变换时,针对N*N的YUV像素块依次执行N次循环计算,其中,每次循环计算并行的完成N*N的YUV像素块中N个像素点的离散余弦变换。
在一可选的实施方式下,CPU端,还用于:
对接收到的JPEG码流进行后处理,得到处理后JPEG码流;
打包处理后JPEG码流,得到目标图片对应的JPEG格式压缩图片。
通过上述本发明实施例提供的JPEG编码方法及装置,FPGA加速卡的DDR缓存端接收CPU端发送的目标图片;FPGA加速卡从DDR缓存端读取目标图片的RGB数据,并将RGB数据的JPEG编码过程,划分为多个顺序执行的编码步骤进行流水线并行处理,以得到编码后的JPEG码流;FPGA加速卡回传JPEG码流至DDR缓存端;DDR缓存端将JPEG码流发送至CPU端。从而,利用了FPGA的流水线并行特点来实现流水线并行的处理对目标图片的JPEG编码过程,通过FPGA加速了JPEG压缩的运行速度,不再单纯依赖于CPU进行JPEG编码,从而提高了JPEG编码效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种JPEG编码方法,其特征在于,包括:
FPGA加速卡的DDR缓存端接收CPU端发送的目标图片;
所述FPGA加速卡从所述DDR缓存端读取所述目标图片的RGB数据,并将所述RGB数据的JPEG编码过程,划分为多个顺序执行的编码步骤进行流水线并行处理,以得到编码后的JPEG码流;
所述FPGA加速卡回传所述JPEG码流至所述DDR缓存端;
所述DDR缓存端将所述JPEG码流发送至CPU端。
2.根据权利要求1所述的方法,其特征在于,所述FPGA加速卡的DDR缓存端接收CPU端发送的目标图片,包括:
所述DDR缓存端接收到所述CPU端发送的目标图片之后,对接收到的目标图片划分为多个RGB宏块,以供所述FPGA加速卡依次读取所述多个RGB宏块中每个RGB宏块的RGB数据。
3.如权利要求1所述的方法,其特征在于,所述将所述RGB数据的JPEG编码过程,划分为多个顺序执行的编码步骤进行流水线并行处理,包括:
所述FPGA加速卡依次从所述DDR缓存端读入所述目标图片中每块RGB宏块的RGB数据,并在读入第二块RGB数据的同时,并行将第一块RGB数据转换为YUV数据;
所述FPGA加速卡在读入第三块RGB数据的同时,并行将所述第二块RGB数据转换为YUV数据,以及并行将所述第一块RGB数据的YUV转换结果进行离散余弦变换;
所述FPGA加速卡在读入第四块RGB数据的同时,并行将所述第三块RGB数据转换为YUV数据,并行将所述第二块RGB数据的YUV转换结果进行离散余弦变换,以及并行将所述第一块RGB数据的离散余弦变换结果进行量化处理;
所述FPGA加速卡在读入第五块RGB数据的同时,并行将所述第四块RGB数据转换为YUV数据,并行将所述第三块RGB数据的YUV转换结果进行离散余弦变换,并行将所述第二块RGB数据的离散余弦变换结果进行量化处理,以及并行将所述第一块RGB数据的量化结果进行Z形变换;
所述FPGA加速卡在读入第i块RGB数据的同时,并行将所述第i-1块RGB数据转换为YUV数据,并行将所述第i-2块RGB数据的YUV转换结果进行离散余弦变换,并行将所述第i-3块RGB数据的离散余弦变换结果进行量化处理,并行将所述第i-4块RGB数据的量化结果进行Z形变换,以及并行将所述第i-5块RGB数据的Z形变换结果进行哈夫曼编码,i依次取6至m,m为所述目标图片划分的宏块数量。
4.如权利要求2所述的方法,其特征在于,每个RGB宏块的YUV转换结果为N*N的YUV像素块,N为大于1的整数;
所述FPGA加速卡在对所述N*N的YUV像素块进行离散余弦变换时,包括:
针对所述N*N的YUV像素块依次执行N次循环计算,其中,每次循环计算并行的完成N*N的YUV像素块中N个像素点的离散余弦变换。
5.根据权利要求1-4中任一所述的方法,其特征在于,在所述DDR缓存端将所述JPEG码流发送至CPU端之后,还包括:
所述CPU端对接收到的JPEG码流进行后处理,得到处理后JPEG码流;
打包所述处理后JPEG码流,得到所述目标图片对应的JPEG格式压缩图片。
6.一种JPEG编码装置,其特征在于,包含FPGA加速卡和CPU端,其中,
所述CPU端,用于将目标图片发送至所述FPGA加速卡的DDR缓存端;
所述FPGA加速卡的DDR缓存端,用于接收所述CPU端发送的目标图片;
所述FPGA加速卡,用于从所述DDR缓存端读取所述目标图片的RGB数据,并将所述RGB数据的JPEG编码过程,划分为多个顺序执行的编码步骤进行流水线并行处理,以得到编码后的JPEG码流;回传所述JPEG码流至所述DDR缓存端;
所述DDR缓存端,还用于将所述JPEG码流发送至CPU端。
7.根据权利要求6所述的装置,其特征在于,所述FPGA加速卡的DDR缓存端,具体用于:
所述DDR缓存端接收到所述CPU端发送的目标图片之后,对接收到的目标图片划分为多个RGB宏块,以供所述FPGA加速卡依次读取所述多个RGB宏块中每个RGB宏块的RGB数据。
8.如权利要求7所述的装置,其特征在于,所述FPGA加速卡,具体用于:
依次从所述DDR缓存端读入所述目标图片中每块RGB宏块的RGB数据,并在读入第二块RGB数据的同时,并行将第一块RGB数据转换为YUV数据;
在读入第三块RGB数据的同时,并行将所述第二块RGB数据转换为YUV数据,以及并行将所述第一块RGB数据的YUV转换结果进行离散余弦变换;
在读入第四块RGB数据的同时,并行将所述第三块RGB数据转换为YUV数据,并行将所述第二块RGB数据的YUV转换结果进行离散余弦变换,以及并行将所述第一块RGB数据的离散余弦变换结果进行量化处理;
在读入第五块RGB数据的同时,并行将所述第四块RGB数据转换为YUV数据,并行将所述第三块RGB数据的YUV转换结果进行离散余弦变换,并行将所述第二块RGB数据的离散余弦变换结果进行量化处理,以及并行将所述第一块RGB数据的量化结果进行Z形变换;
在读入第i块RGB数据的同时,并行将所述第i-1块RGB数据转换为YUV数据,并行将所述第i-2块RGB数据的YUV转换结果进行离散余弦变换,并行将所述第i-3块RGB数据的离散余弦变换结果进行量化处理,并行将所述第i-4块RGB数据的量化结果进行Z形变换,以及并行将所述第i-5块RGB数据的Z形变换结果进行哈夫曼编码,i依次取6至m,m为所述目标图片划分的宏块数量。
9.如权利要求7所述的装置,其特征在于,每个RGB宏块的YUV转换结果为N*N的YUV像素块,N为大于1的整数;所述FPGA加速卡,具体用于:
在对所述N*N的YUV像素块进行离散余弦变换时,针对所述N*N的YUV像素块依次执行N次循环计算,其中,每次循环计算并行的完成N*N的YUV像素块中N个像素点的离散余弦变换。
10.根据权利要求6-9中任一所述的装置,其特征在于,所述CPU端,还用于:
对接收到的JPEG码流进行后处理,得到处理后JPEG码流;
打包所述处理后JPEG码流,得到所述目标图片对应的JPEG格式压缩图片。
CN202011261407.1A 2020-11-12 2020-11-12 一种jpeg编码方法及装置 Pending CN112437309A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011261407.1A CN112437309A (zh) 2020-11-12 2020-11-12 一种jpeg编码方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011261407.1A CN112437309A (zh) 2020-11-12 2020-11-12 一种jpeg编码方法及装置

Publications (1)

Publication Number Publication Date
CN112437309A true CN112437309A (zh) 2021-03-02

Family

ID=74699565

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011261407.1A Pending CN112437309A (zh) 2020-11-12 2020-11-12 一种jpeg编码方法及装置

Country Status (1)

Country Link
CN (1) CN112437309A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645414A (zh) * 2005-01-26 2005-07-27 上海大学 基于嵌入式平台的jpeg2000图像编码与传输方法及系统
CN101742300A (zh) * 2008-11-21 2010-06-16 中国科学院空间科学与应用研究中心 一种低比特率星载图像压缩处理系统及方法
CN102547288A (zh) * 2012-01-11 2012-07-04 山东大学 运行时可重构的嵌入式安全实时图像压缩系统
CN103246499A (zh) * 2013-05-28 2013-08-14 西安电子科技大学 图像并行化处理装置和方法
CN110084739A (zh) * 2019-03-28 2019-08-02 东南大学 一种基于cnn的画质增强算法的fpga并行加速系统
CN111726634A (zh) * 2020-07-01 2020-09-29 成都傅立叶电子科技有限公司 基于fpga的高分辨率视频图像压缩传输方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645414A (zh) * 2005-01-26 2005-07-27 上海大学 基于嵌入式平台的jpeg2000图像编码与传输方法及系统
CN101742300A (zh) * 2008-11-21 2010-06-16 中国科学院空间科学与应用研究中心 一种低比特率星载图像压缩处理系统及方法
CN102547288A (zh) * 2012-01-11 2012-07-04 山东大学 运行时可重构的嵌入式安全实时图像压缩系统
CN103246499A (zh) * 2013-05-28 2013-08-14 西安电子科技大学 图像并行化处理装置和方法
CN110084739A (zh) * 2019-03-28 2019-08-02 东南大学 一种基于cnn的画质增强算法的fpga并行加速系统
CN111726634A (zh) * 2020-07-01 2020-09-29 成都傅立叶电子科技有限公司 基于fpga的高分辨率视频图像压缩传输方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
天涯海角2020: "离散余弦变换的FPGA设计", pages 9, Retrieved from the Internet <URL:https://blog.csdn.net/yinbanghui_2019/article/details/107971116> *
电子产品世界: "2D-DCT的FPGA实现", pages 1 - 3, Retrieved from the Internet <URL:https://www.eepw.com.cn/article/189676.htm> *

Similar Documents

Publication Publication Date Title
US9420299B2 (en) Method for processing an image
US20130121421A1 (en) Video decoder and method of decoding a sequence of pictures
JP4831547B2 (ja) 画像圧縮および伸張加速化のための方法
WO2021138058A1 (en) Data preprocessing and data augmentation in frequency domain
CN113473126A (zh) 视频流的处理方法、装置、电子设备及计算机可读介质
RU2265879C2 (ru) Устройство и способ для извлечения данных из буфера и загрузки их в буфер
US11284096B2 (en) Methods and apparatus for decoding video using re-ordered motion vector buffer
US20220103831A1 (en) Intelligent computing resources allocation for feature network based on feature propagation
US20110279294A1 (en) Parallel Processing of Sequentially Dependent Digital Data
CN112437309A (zh) 一种jpeg编码方法及装置
CN112437308A (zh) 一种WebP编码方法及装置
Sodsong et al. Dynamic partitioning-based JPEG decompression on heterogeneous multicore architectures
CN116668691A (zh) 一种图片压缩传输方法、装置及终端设备
USRE45300E1 (en) Context-adaptive variable length coder with simultaneous storage of incoming data and generation of syntax elements
CN114501031B (zh) 一种压缩编码、解压缩方法以及装置
Sodsong et al. JParEnt: Parallel entropy decoding for JPEG decompression on heterogeneous multicore architectures
CN112437303B (zh) 一种jpeg解码方法及装置
de Cea-Dominguez et al. High throughput image codec for high-resolution satellite images
CN111246215A (zh) 一种视频格式转换的方法及终端
CN117459727B (zh) 一种图像处理方法、装置、系统、电子设备及存储介质
CN114449280B (zh) 一种视频编解码方法、装置及设备
CN111787320B (zh) 一种变换编码系统和方法
JP5284771B2 (ja) 画像圧縮装置、および画像圧縮方法
CN112995665A (zh) 一种用于摄像装置的视频编码方法及装置
CN116668702A (zh) 一种视频编码方法、装置、终端设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination