CN112422985A - 适用于jpeg的多核并行硬件编码方法和装置 - Google Patents

适用于jpeg的多核并行硬件编码方法和装置 Download PDF

Info

Publication number
CN112422985A
CN112422985A CN202011154936.1A CN202011154936A CN112422985A CN 112422985 A CN112422985 A CN 112422985A CN 202011154936 A CN202011154936 A CN 202011154936A CN 112422985 A CN112422985 A CN 112422985A
Authority
CN
China
Prior art keywords
mcu
coding
jpeg
code
lines
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.)
Granted
Application number
CN202011154936.1A
Other languages
English (en)
Other versions
CN112422985B (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.)
Mouxin Technology Shanghai Co ltd
Original Assignee
Mouxin Technology Shanghai 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 Mouxin Technology Shanghai Co ltd filed Critical Mouxin Technology Shanghai Co ltd
Priority to CN202011154936.1A priority Critical patent/CN112422985B/zh
Publication of CN112422985A publication Critical patent/CN112422985A/zh
Application granted granted Critical
Publication of CN112422985B publication Critical patent/CN112422985B/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/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/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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • 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/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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明公开了适用于JPEG的多核并行硬件编码方法和装置,涉及图像编码技术领域。所述方法包括步骤:获取待编码图像,将待编码图像分割为多个MCU行;通过编码器进行多线程JPEG并行编码;其中,所述编码器包括多个JPEG编码核,通过多个JPEG编码核同时启动各自所在MCU行的编码以并行编码,在压缩完各自MCU行的末尾MCU块后,插入一个各自的重启标识符进行数据阻断;整张图像编码完成后,将多组MCU行的码流按顺序进行码流重组。本发明的多核基于MCU行展开并行计算,显著提升了JPEG图像的编码速度,并且不会降低压缩率,不带来额外内存开销。

Description

适用于JPEG的多核并行硬件编码方法和装置
技术领域
本发明涉及图像编码技术领域,尤其涉及一种适用于JPEG的多核并行硬件编码方法和装置。
背景技术
随着工业机器视觉逐步替代人工检测,技术上对捕捉图像的分辨率、捕捉帧率要求越来越高。要实现机器视觉完全替代人工检测,首先就要求机器能够对高清图像进行快速压缩存储,特别是在诸如安防监控、航拍等领域,对图像基本要求实时压缩,这对高清图像快速压缩技术提出了新的挑战。
JPEG作为通用的国际图像压缩标准,能够在提供良好的压缩性能的同时,具有比较好的重建质量,被广泛应用于图像、视频处理领域。在高清摄像时代,动则千万像素的图片用软件压缩会带来较大的CPU、功耗等开销,尤其是在一些如高清图像快速连拍、多路摄像等应用场景下,软件压缩编码速度难以满足要求。因此在工业相机等很多领域采用专门的硬件加速器来进行图像压缩。JPEG硬件编码器多采用流水线设计,以MCU(即,MinimumCoded Unit,最小编码单元)作为流水单元,其主要流水级划分参见图1所示。图1中包括3个层级,各级功能描述如下:第1级Src Fetch处理:从内存预取图像源,及一些简单转换处理;第2级DCT、QT处理:对MCU内8x8 block做DCT变换,及量化;第3级Entropy Enc处理:对量化后DC、AC值分别进行熵编码。
传统的JPEG的编码流程参见图2所示。主要包括以下几个步骤:
1)从内存预取图像,执行一些如零电平偏置、角度旋转(0/90/180/270度)等简单操作后存入流水缓存内。
2)对MCU内各8×8像素块进行DCT变换,得到直流DC、交流AC系数,以去除图像的空间冗余。
3)分别对DC、AC系数展开量化。利用根据人眼视觉特性设计的DC、AC量化矩阵,对低频细量化,高频粗量化,进而减少视觉冗余。
4)对DC系数进行差分编码(即,DPCM)和熵编码(即,Huffman),对AC系数进行zig-zag扫描和游程编码(即,Run-Level)后再进行熵编码,减少数据冗余。
在JPEG以上编码流程中,由于直流DC系数反映了该DCT单元(8x8像素块)中包含的直流成分,通常数据较大,而两个相邻的DCT单元的直流系数又通常具有较大的相关性,因此在上述4)步骤对DC系数进行差分编码时,是对本8x8块直流系数与前一8x8块直流系数的差值进行无损编码,如图3所示Diffi(差值)。
上述编码流程中,由于对DC系数进行DPCM编码在MCU间存在明显的数据依赖,难以实现并行算法。因为要实现并行计算,必须保证MCU数据的独立性。
对于JPEG的并行编码问题,现有技术也提供了多核解决方案,比如中国专利申请CN201910032350.9,其公开了一种基于nvidia gpu的黑白图像jpeg数据编码方法:基于JPEG编码原理将黑白数据编码移植到nvidia gpu CUDA库,利用GPU本身的速度快并行性高的特点,结合nvidia gpu CUDA库实现加速。对于多核的cpu,可以在PC端通过软件指定编码算法在某一个核上或某几个核上运行,提升编码速度。然而,上述多核并行编码方案不仅需要设置专门的nvidia gpu CUDA库作为移植库,而且仅适用于黑白数据,适用范围小。
如何提供一种多核可扩展、不带来额外内存开销且适用范围广的JPEG图像编码方法是当前亟需解决的技术问题。
发明内容
本发明的目的在于:克服现有技术的不足,提供了一种适用于JPEG的多核并行硬件编码方法和装置。本发明提供的编码方案,多核基于JPEG MCU行展开并行计算,多核可扩展可大大加速JPEG图像的编码过程,满足实时压缩要求,并且不会降低压缩率,不带来额外内存开销。
为实现上述目标,本发明提供了如下技术方案:
一种适用于JPEG的多核并行硬件编码方法,包括步骤:
获取待编码图像,将待编码图像分割为多个MCU行,每个MCU行包括多个MCU块;
通过编码器进行多线程JPEG并行编码;其中,所述编码器包括多个JPEG编码核,通过多个JPEG编码核同时启动各自所在MCU行的编码以并行编码,在压缩完各自MCU行的末尾MCU块后,插入一个各自的重启标识符进行数据阻断,每个JPEG编码核各自对应一组MCU行的码流;
整张图像编码完成后,将多组MCU行的码流按顺序进行码流重组。
进一步,每隔一个MCU行间插一个重启标识符。
进一步,编码时,循环利用所述重启标识符来阻断DC系数值的传递;重启标识符间插间隔用0xFFDD标记,0xFFDD后接两字节数据表明每隔多少个MCU块间插一个重启标识符;
重启标识符用0xFFD0-0xFFD7标记,插入重启标识符时,从0xFFD0递增到0xFFD7再回到0xFFD0,如此依序循环利用。
可选的,为每个JPEG编码核分配独立的输出码流存储区,从而将各JPEG编码核处理的对应的MCU行的码流进行独立分段存放。
或者,可选的,在DRAM中预设一个X字节存储空间以存储各组MCU行的码流;
在多个JPEG编码核并行对上下相邻的多个MCU行进行编码时,将多行码流设置为每隔X字节交替填入前述DRAM,使得上下相邻的多行码流数据能限定在预设大小的存储区间内存放;
在重组时,读取完整的多行码流并重新拼接写入DRAM后,将前述多行已重组完的多行码流对应的存储空间进行回收,并用于最终码流的存放。
进一步,所述编码器包括4个JPEG编码核,分别为Core0、Core1、Core2和Core3,所述Core0负责第4N个MCU行的编码,Corel负责第4N+1个MCU行的编码,Core2负责第4N+2个MCU行的编码,Core3负责第4N+3个MCU行的编码,其中,N为大于等于0的整数。
进一步,在每个MCU行编码完成后,存放该MCU行码流的起始地址和码流长度,将4组MCU行的码流进行重组的步骤如下:
获取每个MCU行的码流起始地址和码流长度信息;
根据上述信息依次读取相应的4个MCU行码流;
将MCU行码流按顺序完成拼接,并写到DRAM上。
进一步,分配Stream_st_addr作为最终码流的起始地址,设定一个起始行偏移距离为line_offset_gap;
令Core_st_addr=Stream_st_addr+line_offset_gap,将第1-4个MCU行对应的子码流填入Core_st_addr中;重组时,读取第1-4个MCU行的子码流并拼接,写入Stream_st_addr后,回收Core_st_addr中已经完成重组的第1-4个MCU行的子码流空间并用于最终码流的存放;后续进行第5-8个MCU行的重组,读取第5-8个MCU行的子码流并拼接,写入Stream_st_addr时利用前述回收的第1-4个MCU行的子码流空间;如此循环递进,直至所有的MCU行的码流完成重组。
本发明还提供了一种适用于JPEG的多核并行硬件编码装置,包括如下结构:
数据划分模块,用于获取待编码图像,将待编码图像分割为多个MCU行,每个MCU行包括多个MCU块;
编码模块,用于通过编码器进行多线程JPEG并行编码;其中,所述编码器包括多个JPEG编码核,通过多个JPEG编码核同时启动各自所在MCU行的编码以并行编码,在压缩完各自MCU行的末尾MCU块后,插入一个各自的重启标识符进行数据阻断,每个JPEG编码核各自对应一组MCU行的码流;
重组模块,用于将各码流按顺序进行拼接并写到DRAM上以完成多组MCU行的码流的重组。
进一步,在DRAM中预设一个X字节存储空间以存储各组MCU行的码流;
所述编码模块被配置为,在多个JPEG编码核并行对上下相邻的多个MCU行进行编码时,将多行码流设置为每隔X字节交替填入前述DRAM,使得上下相邻的多行码流数据能限定在预设大小的存储区间内存放;
所述重组模块被配置为,在重组时,读取完整的多行码流并重新拼接写入DRAM后,将前述多行已重组完的多行码流对应的存储空间进行回收,并用于最终码流的存放。
本发明由于采用以上技术方案,与现有技术相比,作为举例,具有以下的优点和积极效果:本发明提供的编码方案,多核基于JPEG MCU行展开并行计算,多核可扩展可大大加速JPEG图像的编码过程,满足实时压缩要求,并且不会降低压缩率,不带来额外内存开销。
一方面,本发明借用重启标识符实现了基于MCU行的多核并行编码,按行多插入1字节(Byte)的RST给压缩率带来的影响非常小。同时,多核还可根据图像尺寸进行任意调整,根据需要设置更多核,可扩展性好,适用性广。
另一方面,本发明还提出了一种码流重组动态回收循环利用方法,可显著降低多核并行编码带来的额外内存开销。
附图说明
图1为现有技术中的JPEG硬件编码器的流水线设计示意图。
图2为现有技术中的JPEG的编码流程图。
图3为现有技术中的直流系数的差值Diffi
图4为本发明实施例提供的四核并行编码插入RST的示例图。
图5为本发明实施例提供的每个编码核的输出码流的存放和重组过程示意图。
图6为本发明实施例提供的码流重组动态回收循环利用的操作示意图。
具体实施方式
以下结合附图和具体实施例对本发明公开的适用于JPEG的多核并行硬件编码方法和装置作进一步详细说明。应当注意的是,下述实施例中描述的技术特征或者技术特征的组合不应当被认为是孤立的,它们可以被相互组合从而达到更好的技术效果。在下述实施例的附图中,各附图所出现的相同标号代表相同的特征或者部件,可应用于不同实施例中。因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
需说明的是,本说明书所附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在不影响发明所能产生的功效及所能达成的目的下,均应落在发明所揭示的技术内容所能涵盖的范围内。本发明的优选实施方式的范围包括另外的实现,其中可以不按所述的或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
实施例
要实现并行计算,就必须保证各MCU数据独立。根据JPEG标准,其在制定时为允许部分压缩流数据传输出错后能够重新同步,定义了一种可选的“重启标识”机制(ReStartMarker,以下简称RST)。由于目前大多数JPEG图像都是通过无错误通道传输的,前述RST(或称重启标识符)在正常编码时几乎不被用到,这种重启标识符插入编码块后,会重置其内部首个像素块DC值为0。
基于上述原理,本发明提出了借用重启标识符实现基于MCU行的多核并行编码方案。所述MCU被插入重启标识符后,会重置MCU内部首个像素块的DC值为0,如此便可以阻断DC系数进行DPCM编码的数据依赖,实现多线程JPEG并行编码。由于重启标记符可每间隔任意个MCU插入,使得编码器能够将压缩任务分成N个线程并行处理,最后将压缩流数据拼接以形成最终压缩流。
本发明提供的适用于JPEG的多核并行硬件编码方法,具体包括如下步骤:
S100,待编码图像,将待编码图像分割为多个MCU行,每个MCU行包括多个MCU块。
S200通过编码器进行多线程JPEG并行编码;其中,所述编码器包括多个JPEG编码核,通过多个JPEG编码核同时启动各自所在MCU行的编码以并行编码,在压缩完各自MCU行的末尾MCU块后,插入一个各自的重启标识符进行数据阻断,每个JPEG编码核各自对应一组MCU行的码流。
S300整张图像编码完成后,将多组MCU行的码流按顺序进行码流重组。
本实施例中,在编码时可以循环利用所述重启标识符来阻断DC系数值的传递。根据JPEG协议,重启标识符间插间隔可以用0xFFDD标记,0xFFDD后接两字节数据表明每隔多少个MCU块间插一个重启标识符。重启标识符用0xFFD0-0xFFD7一共8个标记,插入重启标识符时,从0xFFD0递增到0xFFD7再回到0xFFD0,如下表所示,如此依序循环利用。
Figure BDA0002742470200000071
虽然理论上每个MCU之后都可间插一个RST,使得每个MCU都可以并行计算,但频繁插入0xFFD0-0xFFD7会降低压缩率。本实施例为保证压缩率和减小多核调度复杂度,优选的,每隔一个MCU行间插一个RST。
以设置4个JPEG编码核构造的四核并行编码方案为例,结合图4至6详细描述本实施例。
参见图4所示,所述编码器包括4个JPEG编码核,分别为编码核Core0、Core1、Core2和Core3。按前述并行方案,4个JPEG编码核同时启动所在MCU行的独立编码,所述Core0负责第4N个MCU行的编码,Core1负责第4N+1个MCU行的编码,Core2负责第4N+2个MCU行的编码,Core3负责第4N+3个MCU行的编码,其中,N为大于等于0的整数。
在压缩完各自的MCU行的行末尾MCU块后,插入一个各自的RST符。行末插入RST符时,按行序,按0xFFD0到0xFFD7的顺序依次插入,从0xFFD0递增到0xFFD7再回到0xFFD0,依序循环。在编码过程中,每个编码核会各自输出其所在行的压缩码流。
本实施例的一个实施方式中,为每个JPEG编码核分配独立的输出码流存储区,从而将各JPEG编码核处理的对应的MCU行的码流进行独立分段存放。如此,整张图像的码流需分4个空间存放。参见图5所示,DRAM被分为了至少5个空间,其中4个分别用于存放编码核Core0、Core1、Core2和Core3处理的分段子码流,1个用于存放最终码流。符号Core0_st_addr、Core1_st_addr、Core2_st_addr、Core3_st_addr分别表示各分段子码流起始地址,符号Stream_st_addr表示最终码流起始地址。
整张图像编码完成后,需将4组MCU行的码流进行重组(即,Reorder)。
本实施例中,可以在每个MCU行编码完成后,存放该MCU行的码流起始地址和码流长度,以确保重组时各码流能正确拼接上。结合图5,将4组MCU行的码流进行重组的步骤如下:
获取每个MCU行的码流起始地址和码流长度信息;
根据上述信息依次读取相应的4个MCU行码流;
将MCU行码流按顺序完成拼接,并写到DRAM上。
本实施例的另一实施方式中,考虑到设置四个内存空间分别分配给第4N个MCU行、第4N+1个MCU行、第4N+2个MCU行、第4N+3个MCU行进行子压缩流存储时,会带来额外一倍的内存开销,进一步提出了一种码流重组动态回收循环利用方法,可显著降低多核并行编码带来的额外内存开销。
参见图6所示,上下相邻4个MCU行进行并行编码时,可以预先设定一个固定大小的X字节存储空间,将前述分段存储的4段码流变换为每隔X字节交替填入DRAM(内存),如此可以将一组上下相邻的4行压缩码流限定在一定的DRAM区间内。在重组时,读取完完整的4行码流并重新拼接写入DRAM后,此4行已重组完的子码流空间可回收,并用于最终码流的存放。
具体的,作为典型方式的举例而非限制,比如分配Stream_st_addr作为最终码流的起始地址,设定一个起始行偏移距离为line_offset_gap;本实施例中,所述行偏移距离为至少4行。
令Core_st_addr=Stream_st_addr+line_offset_gap(at least 4 lines),进行如下步骤:
1)编码时,将第1-4个MCU行(MCU的line0-line3)对应的子码流填入Core_st_addr中。
2)重组(Reorder)时,读取第1-4个MCU行(MCU的line0-line3)的子码流并拼接,写入Stream_st_addr后,回收Core_st_addr中已经完成重组的line0-line3的4行子码流空间,并用于最终码流的存放;
3)后续进行下一周期的第5-8个MCU行(MCU line4-line7)的重组时,重组模块读取第5-8个MCU行的子码流并拼接,写入Stream_st_addr时,因为可以利用line0-line3的4行子码流空间,完成拼接后写入的空间地址一定会小于line4-line7子码流所在地址。
以此循环,通过对完成重组的前一周期的4个MCU行码流存放空间进行回收,并用于在后周期的4个MCU行码流的最终码流的写入,直至所有的MCU行的码流完成重组。由于分段子码流读完后就回收用于后续重组后最终码流的填入,拼接后码流数据不会打乱未完成重组(Reorder)的子码流数据,如此动态循环利用可节省前文所述的额外内存开销。
本发明的另一实施例,还提供了一种适用于JPEG的多核并行硬件编码装置。
所述装置包括数据划分模块,编码模块和重组模块。
所述数据划分模块,用于获取待编码图像,将待编码图像分割为多个MCU行,每个MCU行包括多个MCU块。
所述编码模块,用于通过编码器进行多线程JPEG并行编码;其中,所述编码器包括多个JPEG编码核,通过多个JPEG编码核同时启动各自所在MCU行的编码以并行编码,在压缩完各自MCU行的末尾MCU块后,插入一个各自的重启标识符进行数据阻断,每个JPEG编码核各自对应一组MCU行的码流。
所述重组模块,用于将各码流按顺序进行拼接并写到DRAM上以完成多组MCU行的码流的重组。
本实施例中,在DRAM中预设一个X字节存储空间以存储各组MCU行的码流。
此时,所述编码模块被配置为:在多个JPEG编码核并行对上下相邻的多个MCU行进行编码时,将多行码流设置为每隔X字节交替填入前述DRAM,使得上下相邻的多行码流数据能限定在预设大小的存储区间内存放。
所述重组模块被配置为:在重组时,读取完整的多行码流并重新拼接写入DRAM后,将前述多行已重组完的多行码流对应的存储空间进行回收,并用于最终码流的存放。
其它技术特征参见在前实施例的描述,在此不再赘述。
在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其他方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

Claims (10)

1.一种适用于JPEG的多核并行硬件编码方法,其特征在于包括步骤:
获取待编码图像,将待编码图像分割为多个MCU行,每个MCU行包括多个MCU块;
通过编码器进行多线程JPEG并行编码;其中,所述编码器包括多个JPEG编码核,通过多个JPEG编码核同时启动各自所在MCU行的编码以并行编码,在压缩完各自MCU行的末尾MCU块后,插入一个各自的重启标识符进行数据阻断,每个JPEG编码核各自对应一组MCU行的码流;
整张图像编码完成后,将多组MCU行的码流按顺序进行码流重组。
2.根据权利要求1所述的方法,其特征在于:每隔一个MCU行间插一个重启标识符。
3.根据权利要求1或2所述的方法,其特征在于:编码时,循环利用所述重启标识符来阻断DC系数值的传递;重启标识符间插间隔用0xFFDD标记,0xFFDD后接两字节数据表明每隔多少个MCU块间插一个重启标识符;
重启标识符用0xFFD0-0xFFD7标记,插入重启标识符时,从0xFFD0递增到0xFFD7再回到0xFFD0,如此依序循环利用。
4.根据权利要求3所述的方法,其特征在于:为每个JPEG编码核分配独立的输出码流存储区,从而将各JPEG编码核处理的对应的MCU行的码流进行独立分段存放。
5.根据权利要求3所述的方法,其特征在于:在DRAM中预设一个X字节存储空间以存储各组MCU行的码流;
在多个JPEG编码核并行对上下相邻的多个MCU行进行编码时,将多行码流设置为每隔X字节交替填入前述DRAM,使得上下相邻的多行码流数据能限定在预设大小的存储区间内存放;
在重组时,读取完整的多行码流并重新拼接写入DRAM后,将前述多行已重组完的多行码流对应的存储空间进行回收,并用于最终码流的存放。
6.根据权利要求1所述的方法,其特征在于:所述编码器包括4个JPEG编码核,分别为Core0、Core1、Core2和Core3,所述Core0负责第4N个MCU行的编码,Core1负责第4N+1个MCU行的编码,Core2负责第4N+2个MCU行的编码,Core3负责第4N+3个MCU行的编码,其中,N为大于等于0的整数。
7.根据权利要求6所述的方法,其特征在于:在每个MCU行编码完成后,存放该MCU行码流的起始地址和码流长度,将4组MCU行的码流进行重组的步骤如下:
获取每个MCU行的码流起始地址和码流长度信息;
根据上述信息依次读取相应的4个MCU行码流;
将MCU行码流按顺序完成拼接,并写到DRAM上。
8.根据权利要求7所述的方法,其特征在于:分配Stream_st_addr作为最终码流的起始地址,设定一个起始行偏移距离为line_offset_gap;
令Core_st_addr=Stream_st_addr+line_offset_gap,将第1-4个MCU行对应的子码流填入Core_st_addr中;重组时,读取第1-4个MCU行的子码流并拼接,写入Stream_st_addr后,回收Core_st_addr中已经完成重组的第1-4个MCU行的子码流空间并用于最终码流的存放;后续进行第5-8个MCU行的重组,读取第5-8个MCU行的子码流并拼接,写入Stream_st_addr时利用前述回收的第1-4个MCU行的子码流空间;如此循环递进,直至所有的MCU行的码流完成重组。
9.一种适用于JPEG的多核并行硬件编码装置,其特征在于包括:
数据划分模块,用于获取待编码图像,将待编码图像分割为多个MCU行,每个MCU行包括多个MCU块;
编码模块,用于通过编码器进行多线程JPEG并行编码;其中,所述编码器包括多个JPEG编码核,通过多个JPEG编码核同时启动各自所在MCU行的编码以并行编码,在压缩完各自MCU行的末尾MCU块后,插入一个各自的重启标识符进行数据阻断,每个JPEG编码核各自对应一组MCU行的码流;
重组模块,用于将各码流按顺序进行拼接并写到DRAM上以完成多组MCU行的码流的重组。
10.根据权利要求9所述的装置,其特征在于:在DRAM中预设一个X字节存储空间以存储各组MCU行的码流;
所述编码模块被配置为,在多个JPEG编码核并行对上下相邻的多个MCU行进行编码时,将多行码流设置为每隔X字节交替填入前述DRAM,使得上下相邻的多行码流数据能限定在预设大小的存储区间内存放;所述重组模块被配置为,在重组时,读取完整的多行码流并重新拼接写入DRAM后,将前述多行已重组完的多行码流对应的存储空间进行回收,并用于最终码流的存放。
CN202011154936.1A 2020-10-26 2020-10-26 适用于jpeg的多核并行硬件编码方法和装置 Active CN112422985B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011154936.1A CN112422985B (zh) 2020-10-26 2020-10-26 适用于jpeg的多核并行硬件编码方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011154936.1A CN112422985B (zh) 2020-10-26 2020-10-26 适用于jpeg的多核并行硬件编码方法和装置

Publications (2)

Publication Number Publication Date
CN112422985A true CN112422985A (zh) 2021-02-26
CN112422985B CN112422985B (zh) 2023-07-25

Family

ID=74840412

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011154936.1A Active CN112422985B (zh) 2020-10-26 2020-10-26 适用于jpeg的多核并行硬件编码方法和装置

Country Status (1)

Country Link
CN (1) CN112422985B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116055743A (zh) * 2023-03-29 2023-05-02 山东云海国创云计算装备产业创新中心有限公司 一种图像压缩方法、系统、电子设备及存储介质
CN117061759A (zh) * 2023-10-11 2023-11-14 苏州元脑智能科技有限公司 图像压缩方法、装置、计算机设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7161714B1 (en) * 1999-11-25 2007-01-09 Ricoh Company, Ltd. Apparatus and method for processing images, and computer product
US20080247653A1 (en) * 2007-04-03 2008-10-09 Micron Technology, Inc. Method and apparatus for parallelization of image compression encoders
US9542760B1 (en) * 2014-12-18 2017-01-10 Amazon Technologies, Inc. Parallel decoding JPEG images
CN108496364A (zh) * 2017-06-21 2018-09-04 深圳市大疆创新科技有限公司 视频传输方法、视频处理器、网络处理器和视频传输设备
CN110121072A (zh) * 2018-02-06 2019-08-13 Arm有限公司 对数据阵列进行编码
CN110490805A (zh) * 2019-08-16 2019-11-22 上海昌岛医疗科技有限公司 一种显微镜病理切片扫描图片的拼接方法
CN110557669A (zh) * 2019-08-05 2019-12-10 视联动力信息技术股份有限公司 一种视频数据显示方法和装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7161714B1 (en) * 1999-11-25 2007-01-09 Ricoh Company, Ltd. Apparatus and method for processing images, and computer product
US20080247653A1 (en) * 2007-04-03 2008-10-09 Micron Technology, Inc. Method and apparatus for parallelization of image compression encoders
US9542760B1 (en) * 2014-12-18 2017-01-10 Amazon Technologies, Inc. Parallel decoding JPEG images
CN108496364A (zh) * 2017-06-21 2018-09-04 深圳市大疆创新科技有限公司 视频传输方法、视频处理器、网络处理器和视频传输设备
CN110121072A (zh) * 2018-02-06 2019-08-13 Arm有限公司 对数据阵列进行编码
CN110557669A (zh) * 2019-08-05 2019-12-10 视联动力信息技术股份有限公司 一种视频数据显示方法和装置
CN110490805A (zh) * 2019-08-16 2019-11-22 上海昌岛医疗科技有限公司 一种显微镜病理切片扫描图片的拼接方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HSING-BUNG CHEN: "Parallel Erasure Coding: Exploring Task Parallelism in Erasure Coding for Enhanced Bandwidth and Energy Efficiency", 《 2016 IEEE INTERNATIONAL CONFERENCE ON NETWORKING, ARCHITECTURE AND STORAGE (NAS)》 *
徐潇审;姜宏旭;肖朝升;: "面向遥感图像高速压缩的多FPGA处理器设计", 北京航空航天大学学报, no. 03 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116055743A (zh) * 2023-03-29 2023-05-02 山东云海国创云计算装备产业创新中心有限公司 一种图像压缩方法、系统、电子设备及存储介质
CN117061759A (zh) * 2023-10-11 2023-11-14 苏州元脑智能科技有限公司 图像压缩方法、装置、计算机设备及存储介质
CN117061759B (zh) * 2023-10-11 2024-02-06 苏州元脑智能科技有限公司 图像压缩方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN112422985B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
EP1974539B1 (en) Processing of images in imaging systems
CN110996105B (zh) 可变速率压缩的方法和可变速率解压缩的方法
JP4130207B2 (ja) 画像処理表示装置および画像処理表示方法
JP2017184250A (ja) 係数圧縮を用いて復号するための装置及び方法
CN101990095B (zh) 压缩文件生成方法和设备、相关的相机模块和终端
US8254700B1 (en) Optimized method and system for entropy coding
CN112422985B (zh) 适用于jpeg的多核并行硬件编码方法和装置
US20110262052A1 (en) Image coding apparatus, control method thereof, and storage medium
WO2022095797A1 (zh) 图像的压缩方法、装置、智能终端及计算机可读存储介质
GB2561152A (en) Data processing systems
EP2787738B1 (en) Tile-based compression for graphic applications
JP3940672B2 (ja) 画像処理装置及び画像処理方法
CN111510717B (zh) 图像拼接方法和装置
US7529412B2 (en) Image processing apparatus and method for converting image data between raster scan order and block scan order
US20070127570A1 (en) Image processor and image processing method
JP2002524007A (ja) イメージ圧縮方法および装置
Weißenberger et al. Accelerating jpeg decompression on gpus
US6212300B1 (en) Image processing apparatus, method and computer-executable program product for converting the format of data for specific image data
US9066111B2 (en) Image encoder and method for encoding images
JP2009522698A (ja) 画像およびビデオ処理のためのメモリ体系化スキームおよびコントローラ・アーキテクチャ
US20230054523A1 (en) Enhancing 360-degree video using convolutional neural network (cnn)-based filter
CN111479116A (zh) 等比特精度预测、映射和分段编码的数据压缩方法和装置
US7469068B2 (en) Method and apparatus for dimensionally transforming an image without a line buffer
JP2004234476A (ja) 画像データ符号化方式、画像データ復号化方式、および画像データ復号化装置
JP2004328178A (ja) 画像処理装置

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