CN110913225B - 图像编码方法、装置、电子设备和计算机可读存储介质 - Google Patents

图像编码方法、装置、电子设备和计算机可读存储介质 Download PDF

Info

Publication number
CN110913225B
CN110913225B CN201911136067.7A CN201911136067A CN110913225B CN 110913225 B CN110913225 B CN 110913225B CN 201911136067 A CN201911136067 A CN 201911136067A CN 110913225 B CN110913225 B CN 110913225B
Authority
CN
China
Prior art keywords
coding
cpu
fpga
image
pixel blocks
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.)
Active
Application number
CN201911136067.7A
Other languages
English (en)
Other versions
CN110913225A (zh
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 QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and 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 QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201911136067.7A priority Critical patent/CN110913225B/zh
Publication of CN110913225A publication Critical patent/CN110913225A/zh
Application granted granted Critical
Publication of CN110913225B publication Critical patent/CN110913225B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/186Methods 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 a colour or a chrominance component
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种图像编码方法、装置、设备和计算机可读存储介质。该方法包括:获取待编码的原始图像;对原始图像中的像素块进行提取,得到至少两种类型的像素块;将目标类型的像素块传送到FPGA,以通过FPGA对目标类型的像素块执行编码处理,接收FPGA发送的第一编码结果;对其余类型的像素块执行编码处理,并得到第二编码结果;根据第一编码结果和第二编码结果,生成目标编码格式的图像。本发明通过将部分类型的像素块传送到FPGA执行编码处理,将部分类型的像素块保留在CPU执行编码处理,可以解决CPU编码目标图像时编码吞吐率低的问题,在将部分像素块的编码移植到FPGA之后,可以加速编码速度,降低CPU资源的使用率,提升图像编码效率,提升CPU编码的吞吐率。

Description

图像编码方法、装置、电子设备和计算机可读存储介质
技术领域
本发明涉及图像处理技术领域,特别是涉及一种图像编码方法、装置、电子设备和计算机可读存储介质。
背景技术
在图像处理领域中,图像编码技术应用较为广泛。目前,图像编码一般由CPU执行,但是,对于一些计算密集且计算耗时的图像编码方式会占用大量CPU资源,降低CPU的编码吞吐率低。
例如:Google(谷歌)的WebP编码格式是一种常用的图像编码格式。相较于其他图像编码格式而言,WebP编码格式具有如下优势:
1、在图像质量相同的前提下,WebP编码格式的图像文件更小。
2、WebP编码格式同时具备无损压缩和有损压缩两种压缩格式。
3、应用WebP编码格式可以降低图像传输的网络带宽和时延,并且可以节省图像的存储空间。
虽然WebP编码格式具有以上优势,但是由于WebP图像编码算法的复杂性大,导致WebP图像编码的速度慢,与JPG(Joint Photographic Experts Group,联合图像专家组)相比较,WebP编码格式的图像编码速度要慢10倍。由于WebP图像的编码过程全都部署在CPU(central processing unit,中央处理器)上,而且WebP编码格式的编码速度慢,使得CPU编码吞吐率低,而且随着编码需求的增加,WebP图像编码需要耗费更多CPU资源。
发明内容
本发明实施例的目的在于提供一种图像编码方法、装置、设备和计算机可读存储介质,以解决CPU编码图像时编码吞吐率低的问题。
具体技术方案如下:
在本发明实施的第一方面,首先提供了一种图像编码方法,在中央处理器CPU执行的步骤,包括:获取待编码的原始图像;对所述原始图像中的像素块进行提取,得到至少两种类型的像素块;在所述至少两种类型的像素块中,将目标类型的像素块传送到现场可编程逻辑门阵列FPGA,以通过所述FPGA对所述目标类型的像素块执行编码处理,接收所述FPGA发送的第一编码结果;对其余类型的像素块执行编码处理,并得到第二编码结果;根据所述第一编码结果和所述第二编码结果,生成目标编码格式的图像。
其中,在所述将目标类型的像素块传送到FPGA之前,还包括:利用预设的性能剖析工具,对所述至少两种类型的像素块分别对应的编码模块进行性能剖析,确定各个编码模块的CPU资源占比;根据所述各个编码模块的CPU资源占比,确定至少一个编码模块,将所述至少一个编码模块设置到FPGA;将所述至少一个编码模块对应的类型的像素块确定为目标类型的像素块。
其中,所述目标类型的像素块,包括:16×16亮度块和/或4×4亮度块;所述其余类型的像素块,包括:8×8色度块。
其中,在所述获取待编码的原始图像之前,包括:在所述CPU设置多个线程;所述多个线程用于并行的对多张待编码的原始图像执行图像编码;其中,每个所述线程对应一张原始图像。
其中,所述目标编码格式的图像为WebP编码格式的图像。
在本发明实施的第二方面,还提供了一种图像编码方法,在FPGA执行的步骤,包括:接收CPU传送的目标类型的像素块;对所述目标类型的像素块执行编码处理,并将得到的第一编码结果传送给所述CPU。
其中,在对所述目标类型的像素块执行编码处理之前,还包括:在所述FPGA设置至少一个编码模块;所述至少一个编码模块用于对所述目标类型的像素块执行编码处理。
其中,所述目标类型的像素块,包括:16×16亮度块和/或4×4亮度块。
其中,对所述目标类型的像素块执行编码处理,并将得到的第一编码结果传送给所述CPU,包括:对多张原始图像分别对应的目标类型的像素块并行执行编码处理,并分别得到每张所述原始图像对应的第一编码结果;针对每张所述原始图像,将所述原始图像对应的第一编码结果传送给所述CPU中与所述原始图像对应的线程。
本发明实施例的第三个方面,还提供了一种图像编码装置,设置在CPU,包括:获取模块,用于获取待编码的原始图像;提取模块,用于对所述原始图像中的像素块进行提取,得到至少两种类型的像素块;传送模块,用于在所述至少两种类型的像素块中,将目标类型的像素块传送到现场可编程逻辑门阵列FPGA,以通过所述FPGA对所述目标类型的像素块执行编码处理,接收所述FPGA发送的第一编码结果;第一编码模块,用于对其余类型的像素块执行编码处理,并得到第二编码结果;生成模块,用于根据所述第一编码结果和所述第二编码结果,生成目标编码格式的图像。
本发明实施例的第四个方面,还提供了一种图像编码装置,其特征在于,设置在FPGA,包括:接收模块,用于接收CPU传送的目标类型的像素块;其中,所述目标类型的像素块是所述CPU对原始图像中的像素块进行提取而得到的像素块;第二编码模块,用于对所述目标类型的像素块执行编码处理;发送模块,用于将得到的第一编码结果传送给所述CPU。
在本发明实施的第五个方面,还提供了电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现上述任一所述的在CPU执行的方法步骤,或者实现上述任一所述的在FPGA执行的方法步骤。
其中,所述处理器为CPU或者FPGA;其中,所述CPU用于执行存储器上所存放的程序时,实现上述在CPU执行的任一所述的方法步骤;所述FPGA用于执行存储器上所存放的程序时,实现上述在FPGA执行的任一所述的方法步骤。
在本发明实施的第六个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的在CPU执行的方法步骤,或者实现上述任一所述的在FPGA执行的方法步骤。
在本发明实施的第七个方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的图像编码方法。
本发明实施例提供的图像编码方法、装置、电子设备和计算机可读存储介质,通过将部分类型的像素块传送到FPGA执行编码处理,将部分类型的像素块保留在CPU执行编码处理,可以解决CPU编码目标图像时编码吞吐率低的问题,由于FPGA的性能优于CPU,在将部分像素块的编码移植到FPGA之后,可以加速编码速度,降低CPU资源的使用率,提升图像编码效率,提升CPU编码的吞吐率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是根据本发明一实施例的在CPU执行的图像编码方法的流程图;
图2是根据本发明一实施例的图像编码方法的示意图;
图3是根据本发明另一实施例的在CPU执行的图像编码方法流程图;
图4是根据本发明一实施例的在FPGA执行的图像编码方法的流程图;
图5是根据本发明一实施例的设置在CPU的图像编码装置的结构图;
图6是根据本发明一实施例的设置在FPGA的图像编码装置的结构图;
图7是根据本发明一实施例的电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
本发明实施例提供了一种图像编码方法。本实施例在CPU执行。
图1是根据本发明一实施例的在CPU执行的图像编码方法的流程图。图2是根据本发明一实施例的图像编码方法的示意图。
步骤S110,获取待编码的原始图像。
原始图像为RGB(Red、Green、Blue,红绿蓝)图像或者YUV图像。
在YUV图像中,Y表示明亮度(Luminance或Luma),即灰阶值,UV表示色度(Chrominance或Chroma),可以描述色彩和饱和度,指定像素的颜色。
在本实施例中,如果原始图像为RGB图像,则将RGB图像转换为YUV图像。
步骤S120,对所述原始图像中的像素块进行提取,得到至少两种类型的像素块。
按照从上到下,从左到右的顺序,对所述原始图像进行宏块分割,得到多个宏块(Macroblock),在每个宏块中提取多种预设类型的像素块。
像素块的类型,包括:16×16亮度块(luma16×16),4×4亮度块(luma4×4)和8×8色度块。具体的,在对原始图像进行分割之后,在每个宏块中提取像素点的亮度和色度,由于在YUV图像中,一个像素点可以提取出一个亮度(Y),相邻两个像素点可以提取出一个色度(UV),所以从原始图像的每个宏块中可以提取到一个16×16亮度块(luma16×16),四个4×4亮度块(luma4×4)和一个8×8色度块。其中,4×4亮度块是16×16亮度块的子集。
在对所述原始图像进行分割之后,将得到的多种类型的像素块缓存到YUV缓冲寄存器(YUV buffer)中,在需要传送像素块时,从YUV buffer中获取即可。进一步地,在将所述原始图像分割为亮度块和色度块之后,将亮度块存储到亮度块Y buffer中,将色度块存储到色度块UV buffer中。
步骤S130,在所述至少两种类型的像素块中,将目标类型的像素块传送到FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列),以通过所述FPGA对所述目标类型的像素块执行编码处理,接收所述FPGA发送的第一编码结果。
步骤S140,对其余类型的像素块执行编码处理,并得到第二编码结果。
在本实施例中,FPGA和CPU同步执行编码处理。
在本实施例中,确定用于执行编码处理的多个编码模块,其中,每个编码模块用于对应处理一种类型的像素块;将部分编码模块设置到FPGA,其余编码模块设置在CPU,其中,在执行图像编码时,设置在FPGA的编码模块占用的资源高于设置在CPU的编码模块。根据FPGA设置的编码模块对应的像素块的类型,将该类型的像素块传送到FPGA,利用该类型对应的编码模块对该类型的像素块执行编码处理;将其余类型的像素块在CPU利用对应类型的编码模块执行编码处理。
下面提供两种编码模块的设置方式,当然,本领域技术人员应当知道的是,以下两种方式仅为说明本实施例,而不用于限定本实施例。
方式一,将色度块编码模块设置在CPU,亮度块编码模块设置在FPGA,这样可以将色度块在CPU利用色度块编码模块进行色度块编码,将亮度块传送到FPGA利用亮度块编码模块进行亮度块编码。
具体而言,目标类型的像素块,包括:16×16亮度块和/或4×4亮度块;所述其余类型的像素块,包括:8×8色度块。这样,在将预设类型的像素块传送到FPGA执行编码处理之前,将16×16亮度块编码模块和/或4×4亮度块编码模块设置到所述FPGA;将8×8色度块编码模块设置在CPU。16×16亮度块编码模块用于对16×16亮度块执行亮度块编码,4×4亮度块编码模块用于对4×4亮度块执行亮度块编码,8×8色度块编码模块用于对8×8色度块执行色度块编码。将预设类型的像素块传送到FPGA执行编码处理之时,在所述多种类型的像素块中,将16×16亮度块和/或4×4亮度块传送到所述FPGA执行亮度块编码,将8×8色度块在所述CPU执行色度块编码;通过所述FPGA中的所述16×16亮度块编码模块对所述16×16亮度块执行亮度块编码,通过所述FPGA中的所述4×4亮度块编码模块对所述4×4亮度块执行亮度块编码;通过CPU中的8×8色度块编码模块对8×8色度块执行色度块编码。
方式二,在将预设类型的像素块传送到FPGA执行编码处理之前,可以利用预设的性能剖析工具,对所述多种类型的像素块分别对应的编码模块进行性能剖析,确定各个编码模块的CPU资源占比;根据所述各个编码模块的CPU资源占比,至少一个编码模块,将所述至少一个编码模块设置到FPGA;将所述至少一个编码模块对应的类型的像素块确定为目标类型的像素块。
在将编码模块设置到所述FPGA之前,利用预设种类的编程语言实现所述编码模块。该编码模块为编码kernel(内核)。进一步地,所述预设种类的编程语言为OpenCL(OpenComputing Language,开放运算语言)或者HDL(Hardware Description Language,硬件描述语言)。利用OpenCL语言或者HDL语言开发、编译、调试16×16亮度块编码模块和4×4亮度块编码模块。
步骤S150,根据所述第一编码结果和所述第二编码结果,生成目标编码格式的图像。
也即是说,根据所述FPGA得到的编码结果和所述CPU得到的编码结果,生成目标编码格式的图像。
在本实施例中,目标编码格式的图像,可以是WebP编码格式的图像。
进一步地,根据所述FPGA得到的编码结果和所述CPU得到的编码结果进行熵编码,生成WebP编码格式的图像。
在本实施例中,将部分类型的像素块传送到FPGA执行编码处理,将部分类型的像素块保留在CPU执行编码处理,由于FPGA的性能优于CPU,在将部分像素块的编码移植到FPGA之后,可以加速编码速度,降低CPU资源的使用率,提升图像编码效率,提升图像编码的吞吐率,也即是提升CPU图像编码的吞吐率。
在本实施例中,可以将并发计算密集和时间消耗多的亮度块传送到性能优于CUP的FPGA执行编码处理,从而通过FPGA实现图像编码加速,色度块保留在CPU执行编码处理,结合FPGA的编码结果和CPU的编码结果,保证WebP编码的正确性。
本实施例可以应用在多种需要对图像进行编码的应用场景中。进一步地,本实施例可以应用在图像上传、图像转码、图像存储等应用场景中。
下面给出一种较为具体的实施例来说明本发明的图像编码方法。如图3所示,为根据本发明另一实施例的图像编码方法的流程图。
步骤S310,利用预设的性能剖析工具,对至少两种类型的像素块分别对应的编码模块进行性能剖析,确定各个编码模块的CPU资源占比。
利用性能剖析工具valgrind和kcachegrind来执行Profile(性能剖析),确定各个编码模块的调用关系和运算消耗时间,进而可以确定各个编码模块的CPU资源占比,以便CPU资源占比较多的编码模块移植到FPGA。
步骤S320,按照CPU资源占比从大到小的顺序,对所述各个编码模块进行排序,将排序中的前N个编码模块设置到FPGA;其中,N为大于等于1的正整数。
在本实施例中,被剖析的前N个编码模块可以是通过C语言实现的,在将该前N个编码模块设置到FPGA之前,需要利用OpenCL语言或者HDL语言实现该前N个编码模块,以便该前N个编码模块可以在FPGA运行。
例如:N为2,如果在各个编码模块中,16×16亮度块编码模块和4×4亮度块编码模块的CPU资源占比排序在前2个,那么确定将16×16亮度块编码模块和4×4亮度块编码模块设置到FPGA,以OpenCL语言开发16×16亮度块编码模块和4×4亮度块编码模块,完成16×16亮度块编码模块和4×4亮度块编码模块的OpenCL前端编译,形成16×16亮度块编码模块对应的FPGA bitstream(可编码位流数据)和4×4亮度块编码模块对应的FPGA bitstream,将16×16亮度块编码模块对应的FPGA bitstream和4×4亮度块编码模块对应的FPGAbitstream设置到FPGA。其中,FPGA bitstream为编码模块的文件形式。
步骤S330,获取待编码的原始图像。
步骤S340,通过对所述原始图像进行分割,在所述原始图像中提取出所述至少两种类型的像素块。
在本实施例中,像素块的类型,包括:16×16亮度块、4×4亮度块和8×8色度块。
步骤S350,在所述至少两种类型的像素块中,将所述前N个编码模块分别对应的类型的像素块传送到所述FPGA执行编码处理,其余类型的像素块在CPU执行编码处理。
在本实施例中,将16×16亮度块编码模块和4×4亮度块编码模块设置到FPGA之后,在所述多种类型的像素块中,将16×16亮度块和4×4亮度块传送到FPGA,8×8色度块保留在CPU。
步骤S360,根据所述FPGA得到的编码结果和所述CPU得到的编码结果,生成WebP编码格式的图像。
在本实施例中,通过Profile分析,把CPU资源占比较多的编码模块移植到FPGA硬件,由于FPGA的性能优于CPU,所以,向FPGA移植编码模块的方式可以加速编码速度。
在本实施例中,可以将并发计算密集和时间耗费多的亮度块编码模块移植到FPGA,将亮度块编码在FPGA加速,通过这种方式融合CPU和FPGA的计算资源,使CPU和FPGA并行进行编码,进而可以对多个图像进行逐个编码,也可以并发的对多路图像进行WebP编码。
针对单路图像编码,具体而言:
对于单张图像,利用CPU和FPGA的异构特性,在CPU执行部分编码,在FPGA并行的执行另一部分编码,对于多张图像,逐张进行编码,实现计算流水线,提升WebP编码的吞吐率。在将预设类型的像素块传送到FPGA执行编码处理之前,可以在所述CPU设置OpenCL HostCode(OpenCL主机代码)。该OpenCL Host Code可以作为CPU和FPGA之间交互的接口。该OpenCL HostCode可以用于管理FPGA,调用FPGA的编码模块。
在CPU设置用于图像编码的线程,CPU中的线程通过所述OpenCL HostCode将所述预设类型的像素块传送到所述FPGA,并调用所述FPGA中的所述类型对应的编码模块执行编码处理。在所述FPGA编码处理完成之后,所述OpenCL Host Code获取所述FPGA得到该像素块对应的编码结果,以便所述CPU根据该像素块对应的编码结果以及其他像素块对应的编码结果,生成WebP编码格式的图像。
针对多路图像编码,具体而言:
在将编码模块设置到所述FPGA之后,可以对所述编码模块执行资源优化处理,以便在所述FPGA设置多个所述编码模块;其中,每个所述编码模块针对一张原始图像的对应类型的像素块执行编码处理。
针对FPGA的编码模块执行的资源优化处理,包括但不限于以下方式:
1、利用局部内存(Local memory)降低全局内存(Global memory)的访问量。具体可以通过预加载数据的方式,先将全局内存数据先加载到内部RAM(Random AccessMemory,随机存取存储器),常量区和寄存器区,再进行相关编码计算,以便降低全局内存的访问量;
2、针对寄存器区使用多级缓冲方案,以便减少对内部RAM读写访问;
3、使用存储合并读写(memory coalescing)方式,以便减少全局内存的传输时延;
4、分析编码模块中的循环模块,去除循环逻辑内部的循环依赖,以便降低资源占用率,提高编码速度;
5、分析编码模块内部变量的取值范围,使用低比特数据类型替换内部变量。FPGA支持低比特数据类型,比如1bit、2bit和4bit,通过该方式可以降低变量字长,降低资源占用率。
在对单独的编码模块执行资源优化处理之后,可以根据该编码模块在该FPGA占用资源在FPGA的总体资源中的占比,确定在该FPGA设置该编码模块的数量,以便实现多路编码,进一步增加CPU的图像编码吞吐率。
通过资源优化处理,在FPGA设置多个用于处理所述预设类型的像素块的编码模块。当然,在CPU也可以设置多个用于处理所述其余类型的像素块的编码模块。
如果预设类型的像素块为多个种类,则在FPGA设置的多个编码模块为多组,每组编码模块对应一张原始图像,每组编码模块中的每个编码模块用于处理一张原始图像的一个种类的像素块;如果其余类型的像素块为多个种类,则在CPU设置的多个编码模块为多组,每组编码模块对应一张原始图像,每组编码模块中的每个编码模块用于处理一张原始图像的一个种类的像素块。
例如:在FPGA设置M组编码模块,每组编码模块包括一个16×16亮度块编码模块和一个4×4亮度块编码模块。在CPU设置M个8×8色度块编码模块。其中,一组16×16亮度块编码模块和4×4亮度块编码模块和一个8×8色度块编码模块,用于处理一张原始图像的图像编码。
进一步地,如果在该FPGA设置多个用于处理相同类型的像素块的编码模块,则需要在CPU设置多个线程,所述多个线程用于并行的对多张待编码的原始图像执行图像编码;每个线程对应一张原始图像。进一步地,每个线程对应获取一张原始图像,对所述原始图像中的像素块进行提取,得到至少两种类型的像素块;将目标类型的像素块传送到FPGA执行编码处理,使其余类型的像素块在CPU执行编码处理;根据FPGA得到的编码结果和CPU得到的编码结果,生成目标编码格式的图像。
具体的,通过与原始图像对应的线程,调用所述FPGA中与所述原始图像的预设类型对应的编码模块,使所述编码模块对所述预设类型的像素块执行编码处理,并将得到的编码结果存储到所述原始图像对应的缓存中;通过与原始图像对应的线程,调用所述CPU中与所述原始图像的其余类型的像素块对应的编码模块,使所述编码模块对所述其余类型的像素块执行编码处理,并得到编码结果;通过与原始图像对应的线程,从所述原始图片对应的缓存中获取所述FPGA对所述原始图像的预设类型的像素块的编码结果,并且从所述CPU获取对所述原始图像的其余类型的像素块的编码结果,根据所述预设类型的像素块的编码结果和所述其余类型的像素块的编码结果,生成目标编码格式的图像。
如果利用OpenCL语言实现FPGA中的编码模块,则在CPU设置支持多个线程的OpenCL Host Code,每个线程对应一路图像编码,CPU中的线程通过OpenCL Host Code将一路图像的像素块传送到FPGA中,并调用该像素块的类型对应的编码模块对该像素块执行编码处理。
例如:在将所述原始图像分割为亮度块和色度块之后,将亮度块存储到亮度块Ybuffer中,将色度块存储到色度块UV buffer中,FPGA中的亮度块编码模块在对亮度块执行编码处理之后,通过OpenCL Host Code将亮度编码结果存储到Y buffer中,CPU在对色度块执行编码处理之后,色度编码结果存储到UVbuffer中;CPU从Y buffer获取亮度编码结果,从UV buffer获取色度编码结果,根据亮度编码结果和色度编码结果生成WebP编码格式的图像。
本实施例在测试阶段,可以针对原始图像同时执行软件图像编码(单纯CPU编码)和FPGA加速编码(本实施例的图像编码),对软件图像编码获得的WebP编码格式的图像和FPGA加速编码获得的WebP编码格式的图像进行一致性比较,如果两张WebP编码格式的图像不一致,则调整OpenCL Host Code和设置在FPGA的编码模块;如果两张WebP编码格式的图像一致,则表示本实施的图像编码结果正确,可以应用。
在本实施例的图像编码结果正确的情况下,由于本实施例通过FPGA加快了编码速度的原因,相较于软件图像编码的方式,本实施例用时短,CPU占用率低,因此本实施例可以实现高并发,高吞吐量的图像编码。
本发明实施例还提供了一种在FPGA执行的图像编码方法。如图4所示,为根据本发明一实施例的在FPGA执行的图像编码方法的流程图。
步骤S410,接收CPU传送的目标类型的像素块;其中,所述目标类型的像素块是所述CPU对原始图像中的像素块进行提取而得到的像素块。
所述目标类型的像素块,包括但不限于:16×16亮度块和/或4×4亮度块。
步骤S420,对所述目标类型的像素块执行编码处理,并将得到的第一编码结果传送给所述CPU。
将得到的第一编码结果传送给所述CPU,以便所述CPU在对从原始图像中提取出的其余类型的像素块执行编码处理并得到第二编码结果之后,根据第一编码结果和第二编码结果生成目标编码格式的图像。
在对所述目标类型的像素块执行编码处理之前,还包括:在所述FPGA设置至少一个编码模块;其中,每个编码模块对应处理一种类型的像素块;所述至少一个编码模块用于对所述目标类型的像素块执行编码处理。
FPGA可以配合CPU对多张原始图像并行执行图像编码处理。具体的,对多张原始图像分别对应的目标类型的像素块并行执行编码处理,并分别得到每张所述原始图像对应的第一编码结果;针对每张所述原始图像,将所述原始图像对应的第一编码结果传送给所述CPU中与所述原始图像对应的线程。通过该方式可以增加CPU的编码吞吐率。
本发明实施例还提供了一种设置在CPU的图像编码装置。如图5所示,为根据本发明一实施例的设置在CPU的图像编码装置的结构图。
该设置在CPU的图像编码装置,包括:获取模块510,提取模块520,传送模块530,第一编码模块540和生成模块550。
获取模块510,用于获取待编码的原始图像。
提取模块520,用于对所述原始图像中的像素块进行提取,得到至少两种类型的像素块。
传送模块530,用于在所述至少两种类型的像素块中,将目标类型的像素块传送到FPGA,以通过所述FPGA对所述目标类型的像素块执行编码处理,接收所述FPGA发送的第一编码结果。
第一编码模块540,用于对其余类型的像素块执行编码处理,并得到第二编码结果。
生成模块550,用于根据所述第一编码结果和所述第二编码结果,生成目标编码格式的图像。
本实施例所述的装置的功能已经在上述方法实施例中进行了描述,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
本发明实施例还提供了一种设置的FPGA的图像编码装置。如图6所示,为根据本发明一实施例的设置在FPGA的图像编码装置的结构图。
该设置在FPGA的图像编码装置,包括:接收模块610,第二编码模块620和发送模块630。
接收模块610,用于接收CPU传送的目标类型的像素块;其中,所述目标类型的像素块是所述CPU对原始图像中的像素块进行提取而得到的像素块。
第二编码模块620,用于对所述目标类型的像素块执行编码处理。
发送模块630,用于将得到的第一编码结果传送给所述CPU。
本实施例所述的装置的功能已经在上述方法实施例中进行了描述,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器710、通信接口720、存储器730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信,
存储器730,用于存放计算机程序;
处理器710,用于执行存储器730上所存放的程序时,实现上述任一所述的在CPU执行的方法步骤,或者实现上述任一所述的在FPGA执行的方法步骤。
具体而言:在CPU执行的步骤,包括:获取待编码的原始图像;对所述原始图像中的像素块进行提取,得到至少两种类型的像素块;在所述至少两种类型的像素块中,将目标类型的像素块传送到FPGA,以通过所述FPGA对所述目标类型的像素块执行编码处理,接收所述FPGA发送的第一编码结果;对其余类型的像素块执行编码处理,并得到第二编码结果;根据所述第一编码结果和所述第二编码结果,生成目标编码格式的图像。
其中,在所述将目标类型的像素块传送到FPGA之前,还包括:利用预设的性能剖析工具,对所述至少两种类型的像素块分别对应的编码模块进行性能剖析,确定各个编码模块的CPU资源占比;根据所述各个编码模块的CPU资源占比,确定至少一个编码模块,将所述至少一个编码模块设置到FPGA;将所述至少一个编码模块对应的类型的像素块确定为目标类型的像素块。
其中,所述目标类型的像素块,包括:16×16亮度块和/或4×4亮度块;所述其余类型的像素块,包括:8×8色度块。
其中,在所述获取待编码的原始图像之前,包括:在所述CPU设置多个线程;所述多个线程用于并行的对多张待编码的原始图像执行图像编码;其中,每个所述线程对应一张原始图像。
其中,所述目标编码格式的图像为WebP编码格式的图像。
在FPGA执行的步骤,包括:接收CPU传送的目标类型的像素块;对所述目标类型的像素块执行编码处理,并将得到的第一编码结果传送给所述CPU。
其中,在对所述目标类型的像素块执行编码处理之前,还包括:在所述FPGA设置至少一个编码模块;所述至少一个编码模块用于对所述目标类型的像素块执行编码处理。
其中,所述目标类型的像素块,包括:16×16亮度块和/或4×4亮度块。
其中,对所述目标类型的像素块执行编码处理,并将得到的第一编码结果传送给所述CPU,包括:对多张原始图像分别对应的目标类型的像素块并行执行编码处理,并分别得到每张所述原始图像对应的第一编码结果;针对每张所述原始图像,将所述原始图像对应的第一编码结果传送给所述CPU中与所述原始图像对应的线程。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
进一步地,当处理器为CPU时,该CPU用于执行存储器上所存放的程序时,实现上述在CPU执行的任一所述的方法步骤;当处理器为FPGA时,该FPGA用于执行存储器上所存放的程序时,实现上述在FPGA执行的任一所述的方法步骤。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的图像编码方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的图像编码方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (14)

1.一种图像编码方法,其特征在于,在中央处理器CPU执行的步骤,包括:
获取待编码的原始图像;
对所述原始图像中的像素块进行提取,得到至少两种类型的像素块;
在所述至少两种类型的像素块中,将目标类型的像素块传送到现场可编程逻辑门阵列FPGA,以通过所述FPGA对所述目标类型的像素块执行编码处理,接收所述FPGA发送的第一编码结果;
对其余类型的像素块执行编码处理,得到第二编码结果;
根据所述第一编码结果和所述第二编码结果,生成目标编码格式的图像。
2.根据权利要求1所述的方法,其特征在于,在所述将目标类型的像素块传送到FPGA之前,还包括:
利用预设的性能剖析工具,对所述至少两种类型的像素块分别对应的编码模块进行性能剖析,确定各个编码模块的CPU资源占比;
根据所述各个编码模块的CPU资源占比,确定至少一个编码模块,将所述至少一个编码模块设置到FPGA;
将所述至少一个编码模块对应的类型的像素块确定为目标类型的像素块。
3.根据权利要求1所述的方法,其特征在于,
所述目标类型的像素块,包括:16×16亮度块和/或4×4亮度块;
所述其余类型的像素块,包括:8×8色度块。
4.根据权利要求1所述的方法,其特征在于,在所述获取待编码的原始图像之前,包括:
在所述CPU设置多个线程;所述多个线程用于并行的对多张待编码的原始图像执行图像编码;其中,每个所述线程对应一张原始图像。
5.根据权利要求1~4中任一项所述的方法,其特征在于,所述目标编码格式的图像为WebP编码格式的图像。
6.一种图像编码方法,其特征在于,在可编程逻辑门阵列FPGA执行的步骤,包括:
接收中央处理器CPU传送的目标类型的像素块;其中,所述目标类型的像素块是所述CPU对原始图像中的像素块进行提取而得到的像素块;
对所述目标类型的像素块执行编码处理,并将得到的第一编码结果传送给所述CPU,以使所述CPU根据所述第一编码结果和第二编码结果生成目标编码格式的图像,其中,所述第二编码结果是所述CPU对提取得到的像素块中,除所述目标类型的像素块以外的其余类型的像素块执行编码处理所得到的编码结果。
7.根据权利要求6所述的方法,其特征在于,在对所述目标类型的像素块执行编码处理之前,还包括:
在所述FPGA设置至少一个编码模块;所述至少一个编码模块用于对所述目标类型的像素块执行编码处理。
8.根据权利要求6所述的方法,其特征在于,所述目标类型的像素块,包括:16×16亮度块和/或4×4亮度块。
9.根据权利要求6所述的方法,其特征在于,对所述目标类型的像素块执行编码处理,并将得到的第一编码结果传送给所述CPU,包括:
对多张原始图像分别对应的目标类型的像素块并行执行编码处理,并分别得到每张所述原始图像对应的第一编码结果;
针对每张所述原始图像,将所述原始图像对应的第一编码结果传送给所述CPU中与所述原始图像对应的线程。
10.一种图像编码装置,其特征在于,设置在CPU,包括:
获取模块,用于获取待编码的原始图像;
提取模块,用于对所述原始图像中的像素块进行提取,得到至少两种类型的像素块;
传送模块,用于在所述至少两种类型的像素块中,将目标类型的像素块传送到现场可编程逻辑门阵列FPGA,以通过所述FPGA对所述目标类型的像素块执行编码处理,接收所述FPGA发送的第一编码结果;
第一编码模块,用于对其余类型的像素块执行编码处理,并得到第二编码结果;
生成模块,用于根据所述第一编码结果和所述第二编码结果,生成目标编码格式的图像。
11.一种图像编码装置,其特征在于,设置在FPGA,包括:
接收模块,用于接收CPU传送的目标类型的像素块;其中,所述目标类型的像素块是所述CPU对原始图像中的像素块进行提取而得到的像素块;
第二编码模块,用于对所述目标类型的像素块执行编码处理;
发送模块,用于将得到的第一编码结果传送给所述CPU,以使所述CPU根据所述第一编码结果和第二编码结果生成目标编码格式的图像,其中,所述第二编码结果是所述CPU对提取得到的像素块中,除所述目标类型的像素块以外的其余类型的像素块执行编码处理所得到的编码结果。
12.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1~5中任一所述的方法步骤,或者,实现权利要求6~9中任一所述的方法步骤。
13.根据权利要求12所述的电子设备,其特征在于,
所述处理器为CPU或者FPGA;其中,
所述CPU,用于执行存储器上所存放的程序时,实现权利要求1~5中任一所述的方法步骤;
所述FPGA,用于执行存储器上所存放的程序时,实现权利要求6~9中任一所述的方法步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1~5中任一所述的方法步骤,或者,实现权利要求6~9中任一所述的方法步骤。
CN201911136067.7A 2019-11-19 2019-11-19 图像编码方法、装置、电子设备和计算机可读存储介质 Active CN110913225B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911136067.7A CN110913225B (zh) 2019-11-19 2019-11-19 图像编码方法、装置、电子设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911136067.7A CN110913225B (zh) 2019-11-19 2019-11-19 图像编码方法、装置、电子设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN110913225A CN110913225A (zh) 2020-03-24
CN110913225B true CN110913225B (zh) 2022-03-08

Family

ID=69817876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911136067.7A Active CN110913225B (zh) 2019-11-19 2019-11-19 图像编码方法、装置、电子设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110913225B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111815502B (zh) * 2020-07-08 2023-11-28 上海雪湖科技有限公司 基于WebP压缩算法的多图处理的FPGA加速方法
CN111818339A (zh) * 2020-07-10 2020-10-23 逢亿科技(上海)有限公司 基于FPGA的Webp图像压缩算法的多核处理方法
CN112437308A (zh) * 2020-11-12 2021-03-02 北京深维科技有限公司 一种WebP编码方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107483948A (zh) * 2017-09-18 2017-12-15 郑州云海信息技术有限公司 一种webp压缩处理中像素宏块处理方法
JP2018057034A (ja) * 2017-12-04 2018-04-05 株式会社東芝 電子機器、符号化方法及びプログラム
CN109451317A (zh) * 2018-12-27 2019-03-08 郑州云海信息技术有限公司 一种基于fpga的图像压缩系统及方法
CN110225353A (zh) * 2019-06-11 2019-09-10 苏州浪潮智能科技有限公司 一种图像解码方法、装置、设备及计算机可读存储介质
CN110324629A (zh) * 2019-06-27 2019-10-11 北京奇艺世纪科技有限公司 图片转码方法、装置及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107483948A (zh) * 2017-09-18 2017-12-15 郑州云海信息技术有限公司 一种webp压缩处理中像素宏块处理方法
JP2018057034A (ja) * 2017-12-04 2018-04-05 株式会社東芝 電子機器、符号化方法及びプログラム
CN109451317A (zh) * 2018-12-27 2019-03-08 郑州云海信息技术有限公司 一种基于fpga的图像压缩系统及方法
CN110225353A (zh) * 2019-06-11 2019-09-10 苏州浪潮智能科技有限公司 一种图像解码方法、装置、设备及计算机可读存储介质
CN110324629A (zh) * 2019-06-27 2019-10-11 北京奇艺世纪科技有限公司 图片转码方法、装置及电子设备

Also Published As

Publication number Publication date
CN110913225A (zh) 2020-03-24

Similar Documents

Publication Publication Date Title
CN110913225B (zh) 图像编码方法、装置、电子设备和计算机可读存储介质
US8977066B2 (en) Image compression using sub-resolution images
US11394970B2 (en) Image encoding and decoding method and device
CN107155093B (zh) 一种视频预览方法、装置及设备
US20220100576A1 (en) Video processing method and device, electronic equipment and storage medium
US11259029B2 (en) Method, device, apparatus for predicting video coding complexity and storage medium
US10771792B2 (en) Encoding data arrays
CN113473148B (zh) 一种用于视频编码的计算系统及视频编码方法
CN105828081A (zh) 编码方法及编码装置
CN109089120B (zh) 分析辅助编码
CN110418138A (zh) 视频处理方法、装置、电子设备及存储介质
CN103975583A (zh) 捕获多个视频通道用于视频分析和编码
CN116193160A (zh) 一种数字水印嵌入方法、装置、设备和介质
US6369848B1 (en) Picture data transmission device and picture signal coding method thereof
CN113438482B (zh) 基于感兴趣区域的视频编码
CN115760539A (zh) 图像处理方法、装置及网络设备
CN103891272B (zh) 用于视频分析和编码的多个流处理
CN114945096A (zh) 基于cpu+gpu异构平台的无损解压缩算法及存储介质
WO2019041219A1 (zh) 编码方法、解码方法以及编码装置和解码装置
US11683509B1 (en) Prediction unit skip detection in encoder
CN107770543B (zh) 多类匹配参数中按顺序递增截断值的数据压缩方法和装置
EP1410335A1 (en) Method and system for image compression with improved colour palette selection
CN107172425B (zh) 缩略图生成方法、装置及终端设备
CN116883691B (zh) 一种边缘设备的高帧率多路目标检测方法
CN113259675B (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
GR01 Patent grant
GR01 Patent grant