CN109842803A - 一种图像压缩的方法及装置 - Google Patents
一种图像压缩的方法及装置 Download PDFInfo
- Publication number
- CN109842803A CN109842803A CN201811618308.7A CN201811618308A CN109842803A CN 109842803 A CN109842803 A CN 109842803A CN 201811618308 A CN201811618308 A CN 201811618308A CN 109842803 A CN109842803 A CN 109842803A
- Authority
- CN
- China
- Prior art keywords
- block
- sub
- piece
- data
- image data
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/436—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/18—Methods 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 set of transform coefficients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/40—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/547—Motion estimation performed in a transform domain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
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)
Abstract
随着图像流量的迅猛增加,服务器需要对原始图像数据或者JPEG等格式的图像数据进行压缩,且通常采用并行压缩的方法减少图像压缩时延和增加图像压缩速度。现有的图像并行压缩方法由于缺乏合理的并行压缩架构导致占用内存资源过大以及压缩率低等缺陷。本申请提供一种对图像进行并行压缩的方法,通过将原始图像数据进行离散余弦变换后的数据或者JPEG等格式的图像数据进行哈夫曼解码后的数据在以块为单位的基础上划分为若干子块,再并行进行帧内预测和算术编码等操作,从而可以在不增加内存资源消耗的基础上实现图像的并行压缩,进一步提高图像的压缩率。
Description
技术领域
本申请涉及图像处理领域,特别涉及一种图像的压缩方法及装置。
背景技术
无论是在传统互联网领域还是移动互联网领域,对于图像的处理一直占据着计算设 备的较大带宽和存储资源。由于大量的图片会被手机、网站以及其他数字设备产生,并存储在云端或者本地设备上,在对图像进行传输时,通常会先对该图像进行压缩,以降 低网络传输的数据量。目前主流的图像压缩标准是联合图像专家组(英文全称:JointPhotographic Experts Group,简称:JPEG)于1992年提出的标准,称之为JPEG标准。 每天数以百亿计的采用JPEG标准的图像(以下简称JPEG图像)会被用户从互联网中下 载。然而,JPEG图像采用哈夫曼编码方法,没有针对图像的冗余性进行进一步的优化, 导致压缩率不高,存在着被进一步无损压缩的可能。
随着图像的数量和分辨率的不断增加,图像的流量随之增加。这对图像压缩的时延 和压缩率的要求也越来越高,因此需要对JPEG等格式的图像进行压缩。现有的图像压缩方法缺少合理的并行压缩架构导致占用内存资源过大以及压缩率低等缺陷。
发明内容
本申请的实施例提供了一种图像压缩的方法和装置,可以解决现有的图像压缩方案 会出现的占用内存资源过大以及压缩率低的缺陷。
第一方面,本申请提供一种图像压缩的方法,该方法用于计算机装置,该方法包括: 获取第一图像数据中的N个块,该第一图像数据是经过对原始图像数据进行离散余弦变 换后得到的中间数据,其中,该N个块中的每个块的大小等于编码单元大小,该编码单元为原始图像数据进行离散余弦变换过程中所采用的数据单元,N为正整数;将该N个块 中的每个块切分成M个子块,得到N*M个子块,其中,M为正整数;分别对N*M个子块中 的每个子块进行压缩,并对压缩后的数据进行封装,得到第二图像数据。
上述做法是将第一图像数据中的每一块划分为若干子块,再分别对每一个子块进行 压缩,采用这种做法,可以以子块为单位并行对第一图像数据进行压缩,增加了图像压缩的效率。
在本申请的第一方面,一种可能的实现方式是,将N个块中的每个块切分为M个子块,包括:按照相同的切分方法将每个块切分为M个子块,切分后的每个块中的第i子 块互相关联,其中,任意两个块中的第i子块的位置或者坐标相同,1≤i≤M。
通过这种做法,对每个块采用相同的方法切分为M个子块,便于后续对M个子块的数据进行压缩,提供了图像压缩的效率。
在本申请的第一方面,另一种可能的实现方式是,将N个块中的每个块切分成M个子块,包括:根据N个块中的每个块的能量分布将N个块中的每个块切分成M个子块, 其中,能量分布反映每个块包含的数据的数值大小的分布。
通过这种做法,根据能量分布将第一图像数据中的N个块中的每个块切分成M个子块,使得每个子块自身所包含的数据的数值大小较为接近。在这种情况下,后续对子块 所包含的数据进行帧内预测和算术编码时,计算量会减少,从而增加了图像压缩的效率。
在本申请的第一方面,另一种可能的实现方式是,分别对N*M个子块中的每个子块包含的数据进行压缩,包括:分别对该N*M个子块中的每个子块包含的数据进行帧内预 测,得到每个子块对应的第一中间数据;分别对N*M个子块中的每个子块对应的第一中 间数据进行算术编码,得到该N*M个子块中每个子块对应的压缩后的数据。
上述做法是对第一图像数据进行压缩的步骤的细化,即对第一图像数据进行压缩具 体包括了帧内预测和算术编码。通过对第一图像数据进行帧内预测和算术编码,可以针对图像数据的冗余性进行优化,实现对第一图像数据的压缩。
在本申请的第一方面,另一种可能的实现方式是,分别对N*M个子块中的每个子块对应的第一中间数据进行算术编码,得到N*M个子块中的每个子块对应的压缩后的数据,包括:获取M个概率模型,并采用该M个概率模型分别对第一块进行算术编码,得到第 一块对应的压缩后的数据,其中,每个子块对应一个概率模型,第一块是N个块中的一 个块;根据该M个概率模型对下一个块进行算术编码,得到下一个块对应的压缩后的数 据,其中下一个块与上一个块中相关联的子块采用相同的概率模型。
在上述做法中,当完成对第一子块所对应的数据进行算术编码后,将所使用的概率 模型用于对第二子块所对应的数据进行算术编码。通过这种做法,使得计算机装置在并行进行图像压缩时,同一时间所需要保存的概率模型的大小相当于一个块所对应的概率模型的大小,从而可以减少需要预留的存储空间的大小。
在本申请的第一方面,另一种可能的实现方式是,对压缩后的数据进行封装包括:将多个子块压缩后的数据进行封装得到第二图像数据,其中,该第二图像数据包括头域 部分和数据部分,该头域部分用于指示每个子块对应的压缩数据的数据量的大小,数据 部分用于携带每个子块对应的压缩数据。
上述做法中对于将压缩后的数据进行封装这一步骤进行了细化,即封装得到的第二 图像数据包括了头域部分和数据部分。采用这种做法,在第二图像数据的数据部分,各个子块所对应的压缩数据之间不需要有间隔,从而进一步提高了图像的压缩率。如果后 续需要对第二图像数据进行解压缩来还原第一图像数据,可以根据第二图像数据的头域 部分确定每个子块对应的压缩数据的数据量的大小,从而确定每个子块所对应的压缩数 据并进一步处理。
在本申请的第一方面,另一种可能的实现方式是,获取第一图像数据中的N个块,包括:接收原始图像数据,并对原始图像数据进行离散余弦变换;或者接收JPEG图像数 据,并对JPEG图像数据进行哈夫曼解码。
由于JPEG图像数据是原始图像数据进行离散余弦变换以及哈夫曼编码得到的,而本 申请中的第一图像数据,是原始图像数据进行离散余弦变换后得到的数据。因此,获取第一图像数据中的N个块,既可以通过对原始图像数据进行离散余弦变换得到,也可以 将JPEG数据进行哈夫曼解码得到。这使得本申请所提供的技术方案既可以处理原始图像 数据,也可以处理JPEG图像数据,增加了本申请所提供的技术方案的应用范围。
在本申请的第一方面,另一种可能的实现方式是,N个块包括第一块和第二块,第二 块中的第j子块对应的第一中间数据是根据第一块中的第k子块对应的第一中间数据进行帧内预测得到的,其中,1≤j≤M,1≤k≤M。
在上述做法中,在进行帧内预测时,可以根据其他的块中的数据进行帧内预测,从而可以提高图像的压缩率。
第二方面,本申请提供一种计算机装置,该计算机装置用于压缩图像,该装置包括: 接收模块,用于获取第一图像数据中的N个块,该第一图像数据是经过对原始图像数据进行离散余弦变换得到的中间数据,其中,该N个块中的每个块的大小均等于编码单元 大小,编码单元为对原始图像数据进行离散余弦变换过程中所采用的数据单元,N为正整 数;切分模块,将N个块中的每个块切分为M个子块,得到N*M个子块,其中,M为正整 数;压缩模块,用于分别对N*M个子块中的每个子块进行压缩,并对压缩后的数据进行 封装,得到第二图像数据。
在本申请的第二方面,一种可能的实现方式是,当将N个块中的每个块切分为M个子块时,切分模块具体用于,按照相同的切分方法将每个块切分为M个子块,切分后的 每个块中的第i子块互相关联,其中,任意两个块中的第i子块的位置或者坐标相同,1 ≤i≤M。
在本申请的第二方面,另一种可能的实现方式是,当将N个块中的每个块切分为M个子块时,切分模块具体用于,根据N个块中的每个块的能量分布将该N个块中的每个 块切分成M个子块,其中,能量分布反映每个块包含的数据的数值大小的分布。
在本申请的第二方面,另一种可能的实现方式是,当分别对N*M个子块中的每个子块进行压缩时,该压缩模块具体用于:分别对N*M个子块中的每个子块包含的数据进行 帧内预测,得到每个子块对应的第一中间数据;分别对该N*M个子块中的每个子块对应 的第一中间数据进行算术编码,得到该N*M个子块中的每个子块对应的压缩后的数据。
在本申请的第二方面,另一种可能的实现方式是,当分别对N*M个子块中的每个子块对应的第一中间数据进行算术编码时,该压缩模块具体用于:获取M个概率模型,并 采用该M个概率模型分别对第一块进行算术编码,得到第一块对应的压缩后的数据,其 中,每个子块对应一个概率模型,第一块是N个块中的一个块;根据该M个概率模型对 下一个块进行算术编码,得到下一个块对应的压缩后的数据,其中下一个块与上一个块 中相关联的子块采用相同的概率模型。
在本申请的第二方面,另一种可能的实现方式是,当对压缩后的数据进行封装时,压缩模块具体用于,将多个子块压缩后的数据进行封装得到第二图像数据,其中,该第 二图像数据包括头域部分和数据部分,该头域部分用于指示每个子块对应的压缩数据的 数据量大小,数据部分用于携带每个子块对应的压缩数据。
在本申请的第二方面,另一种可能的实现方式是,当获取第一图像数据中的N个块时,接收模块具体用于:接收原始图像数据,并对该原始图像数据进行离散余弦变换; 或者接收JPEG图像数据,并对该JPEG图像数据进行哈夫曼解码。
在本申请的第二方面,另一种可能的实现方式是,N个块包括第一块和第二块,第二 块中的第j子块对应的第一中间数据是根据第一块中的第k子块对应的第一中间数据进行帧内预测得到的,其中,1≤j≤M,1≤k≤M。
第三方面,本申请提供一种计算机装置,该计算机装置包括处理器和存储器,该存储器存储程序代码,该处理器用于调用存储器中的程序代码执行如第一方面所述的图像压缩的方法。
第四方面,本申请提供一种计算机非瞬态存储介质,该计算机可读存储介质存储有 计算机程序,该计算机程序被计算设备执行时实现如第一方面所述的图像压缩的方法。
第五方面,本申请提供一种计算机程序,当该计算机程序产品在处理器上运行时,可以实现如第一方面所述的图像压缩的方法。
附图说明
图1是现有技术中的一种对JPEG图像数据并行压缩的技术方案的流程示意图。
图2是现有技术中的一种DCT变换得到的DC/AC系数的示意图。
图3是本申请的实施例所提供的一种硬件架构的示意图。
图4是本申请的实施例所提供的另一种硬件架构的示意图。
图5是本申请的一个实施例的流程示意图。
图6是本申请的实施例所提供的将以块为单位的原始图像数据转换成DC/AC系数的 示意图。
图7是本申请的实施例所提供的DC/AC系数的数值大小在块中的分布规律的示意图。
图8是本申请的实施例所提供的一种将块划分为子块的方法的示意图。
图9是本申请的实施例所提供的一种将块划分为子块的方法的示意图。
图10是本申请的实施例所提供的另一种将块切分为子块的方法的示意图。
图11是本申请的实施例所提供的一种第二图像数据的封装格式的示意图。
图12是本申请的实施例所提供的另一种第二图像数据的封装格式的示意图。
图13是本申请的另一个实施例的流程示意图。
图14是本申请的实施例所提供的一种计算机装置的模块示意图。
图15是本申请的实施例所提供的一种计算机装置的结构示意图。
具体实施方式
下面对本申请的实施例所涉及的名词进行解释。
哈夫曼编码,是指一种在计算机数据处理中用于无损数据压缩的熵编码算法。具体 来说,哈夫曼编码使用可变长编码表对信源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现几率的方法得到的,出现几率高的字母使用较短的编码,反之出现几率低的则使用较长的编码,这使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。
例如,当需要编码一个包含1000个字符的文本,文本包含a、b、c、d、e和f等6个字符,各个字符出现的频率不同,如下表所示:
表格1哈夫曼码表
a | b | c | d | e | f | |
频率(百次) | 45 | 13 | 12 | 16 | 9 | 5 |
定长码 | 000 | 001 | 010 | 011 | 100 | 101 |
变长码 | 0 | 101 | 100 | 111 | 1101 | 1100 |
如果该文本用定长编码,假设每个字符用3比特表示则编码结果共需要3000比特的存 储空间,而如果采用采用变长编码,则编码结果需要(45x1+13x3+12x3+16x3+9x4+5x4) x10=2240比特,所需的存储空间大小减少约25%。同时哈夫曼解码器采用相同的码表可以 无损的恢复原始码流。在生成JPEG图像数据时的哈夫曼编码的过程中,将哈夫曼表存储 在JPEG头域部分中,使得解码时可以通过解析JPEG头域部分即可获得哈夫曼表进行解码。
对信源符号进行哈夫曼编码通常包括以下步骤:第一步,将信源符号的概率按照从 大到小的顺序排列;第二步,把两个最小的概率相加,并重复这一步骤,始终将较高的概率分支放在右边,直到最后概率相加的和为1;第三步,将每对组合的左边一个指定 为0,右边一个指定为1(或相反);第四步,画出从概率1处到每个信源符号的路径, 顺序记下沿路径的0和1,所得就是该符号对应的哈夫曼码字(英文:code word)。
帧内预测,是指根据选定的像素的值生成预测值,用于预测同一帧图像的邻近的像 素的值,从而减少表示邻近的像素的值所需的比特数。之所以可以采用帧内预测,是因为同一帧图像的色彩通常是平滑过渡的,这使得同一帧图像中距离相近的若干像素的值之间具有相关性,因此可以使用同一帧图像中邻近的像素的值来预测某一像素的像素值,以达到有效减少图像数据冗余,增加图像压缩率的目的。帧内预测通常包含以下步骤: 第一步,对于某一像素,以同一帧图像中的临近像素作为参考,计算该像素的预测值P; 第二步,以该像素的原始值X和预测值P的差值D来表示该像素。当进行数据还原时, 根据差值D,将其与预测值P进行相加,则可以还原原始值X。
算术编码(英文:arithmetic coding),是指一种在计算机数据处理中用于无损数据压缩的熵编码算法,可以直接把输入的数据编码为大于等于0且小于1的一个小数(英文:decimals)。具体来说,先选定一原始区间,通常该原始区间为[0,1),当进行算术 编码时,按照待编码数据各元素出现的概率,将原始区间分成若干段,每个元素对应一 定的区间。每对一个元素进行编码后,根据该元素的种类将原来的区间缩小到新的区间。 依次根据待编码数据的元素的种类调整区间,直到将待编码数据的所有元素编码完成。 此时取当前区间内的任意一个数即可作为编码结果输出。
举例来说,假设待编码数据由A、B和C三个元素组成,且A的概率是30%,B的概 率是20%,C的概率是50%,则可以认为A对应0-30%,B对应30%-50%,C对应50%-100%。 当对“ABC”进行编码时,首先根据A所对应的范围0-30%,将初始区间[0,1)缩小为[0,0.3);再根据B所对应的范围30%-50%,取当前区间[0,0.3)的30%-50%,为[0.09,0.15);再 根据C所对应的范围50%-100%,将当前区间进一步缩小为[0.120,0.150)。那么,对于 “ABC”的编码结果是从当前区间中任意选择一个数,例如0.130。在图像处理领域,往 往是对二进制数据进行算术编码,因此待编码数据的每一个比特位只有0和1两种情况, 其编码的原理与上述对于算术编码的介绍相同。
编码单元,在本申请中,指的是原始图像数据进行离散余弦变换(英文全称:Discrete Cosine Transform,简称:DCT)的单元以及JPEG格式的图像数据进行哈夫曼解码的单 元。具体来说,原始图像数据是由每一个像素点所对应的数据组成的,当进行DCT变换时,通常是以8行8列或者16行16列的像素点对应的数据为单位进行DCT变换,该8 行8列或者16行16列的像素点称之为编码单元。对于JPEG等格式的图像数据,由于是 根据原始图像数据进行DCT编码以及哈夫曼编码得到的,因此在进行哈夫曼解码时,也 会以原先进行DCT变换的8行8列或者16行16列的像素点对应的数据为单位进行哈夫 曼解码,因此编码单元在本申请中是原始图像数据进行DCT变换的单元以及JPEG格式的 图像数据进行哈夫曼解码的单元。
图1是现有技术中的一种对JPEG图像数据并行压缩的技术方案的流程示意图。
S110:对输入的JPEG图像数据进行哈夫曼解码得到DC/AC系数。
JPEG图像数据是对原始图像数据进行压缩所得到的。在这次压缩时,原始图像进行 了DCT变换和哈夫曼编码。其中,原始图像数据指的是指未经过处理的图像数据,通常是通过RGB分量依次表示图像中的每个像素点的值得到的。
DCT变换将原始图像数据是将原始图像数据从时域转换到频域,得到交流/直流系数 (英文全称:Direct coefficient/Alternate coefficient,简称DC/AC)。结合DCT 变换的公式,
当u和v均等于0时,所得到的DCT变换结果为直流系数,其余的DCT变换结果为 交流系数,其中u和v分别指的是原始图像数据的横坐标和纵坐标,均从0开始计数。 当原始图像进行DCT变换时,往往是以8行8列或16行16列数据为单位进行的,而一 次进行DCT变换的数据大小即为编码单元。图2是现有技术中的一种DCT变换得到的 DC/AC系数的示意图。如图2所示,一个8行8列的编码单元共包含64个系数。在图2 所示的经过DCT变换得到的系数中,只有坐标为(0,0),也即编码单元中第一行第一列 的系数为直流系数,其余的63个系数为交流系数。
当接收到待压缩的JPEG图像数据后,对JPEG图像数据进行解析后得到图像的大小信息以及DC/AC系数的哈夫曼表等信息,根据上述信息对JPEG图像数据进行哈夫曼解码 后得到DCT变换后的DC/AC系数,并将图像的DC/AC系数存储在预留的缓存中。
S120:根据图像分辨率和预设的子图个数将该图像分成若干子图。
当将整帧图像划分为若干子图时,由于解码后得到的数据并不一定按照数据对应的 像素点在图像中的顺序进行排列,因此通常需要先将整帧图像的数据进行缓存,再进行子图的切分。这就要求预留的缓存能够存储整帧图像。且由于需要先完成对整帧JPEG图 像的哈夫曼解码才能进行后续的并行编码,增大了图像压缩的时延。
S130:对各个子图并行进行帧内预测。
通过对各个子图进行帧内预测,改用子图中各个元素的真实值与预测值的差值来替 代原始的DC/AC系数,从而减少了所要存储的数据量,并减少了后续进行算术编码的计算量。
如果一个子图中的A元素是根据另一个子图中的B元素进行帧内预测得到的,则对A 元素的值进行还原时,需要先将B元素所在的子图中的所有数据进行还原,才可以还原A元素的值,这样会导致效率大幅下降,因此只会将各个子图内的元素相互进行帧内预测,而不会根据其他子图的元素进行帧内预测。采用这种做法,将会损失部分因为帧内预测 而带来的消除冗余的收益,降低图像的压缩率。
S140:将各个子图帧内预测后的结果送入对应的算术编码器进行算术编码。
当完成对各个子图的帧内预测后,分别将各个子图帧内预测后的结果进行二值化处 理后送入对应的算术编码器进行编码,其中二值化处理指的是将各个子图预测后的结果 转换为值为0或1的二进制码流。当对子图包含的数据进行算术编码时,需要使用概率模型(英文:probability bin)。概率模型是用于预测待编码的下一比特位各种元素出 现的概率,通常包括3个变量,其中count_0变量用于记录已经编码的码流中0的出现 次数;count_1变量用于记录编码的码流中1出现的次数;PROB变量用于表示当前待编 码比特为0的概率。
由于子图和子图间相互独立,因此对应的算术编码也相互独立,根据各自独立的概 率模型将将二值化的图像数据进行算术编码。在这种情况下,当将待压缩的图像分割成N 个子图时,需要存储N个概率模型。
由于每个子图中需要编码的数据包括DC/AC系数、位宽信息、符号信息以及预测值信息等。对于每一种信息都需要在概率模型中给出对应的概率,所以一帧JPEG图像所对 应的概率模型通常需要较大的存储空间,以使得概率模型能够包含编码中可能出现的所 有情况。例如,多宝箱公司(Dropbox)于2016年所发布的无损图片压缩技术“Lepton” 中的概率模型共有721564个概率表,每个概率表需要24比特的存储空间,即每个概率 表的三个变量中的每个变量采用8比特标识,因此每个概率模型至少需要2MB的存储空 间。也就是说,当将待压缩的图像分割成N个子图时,对其并行编码大约需要提供2*N MB 大小的内存空间用于存储概率模型。
S150:将各个相互独立的编码器得到的编码结果进行组合和封装,得到压缩后的图 像数据。
S160:输出压缩后的图像数据。
上述对于JPEG图像进行并行压缩的方案是将一帧完整的图像分割成若干相互独立的 子图,再分别进行帧内预测和算术编码。但是由于该做法需要将整帧图像全部缓存下来 以及存储多个概率模型,导致对于内存资源的消耗较大。且JPEG图像通过压缩产生压缩收益的关键在于通过帧内预测消除图像中的数据的冗余性。而现在将图像分成了若干个子图,各个子图间的数据相互独立,无法作为整体进行帧内预测,从而减少了通过帧内 预测消除图像中的数据的冗余性所带来的收益,降低了图像的压缩率。
为了解决现有技术中并行对JPEG图像进行压缩时所出现的内存资源消耗大以及压缩 率低的问题,本申请提供一种新的并行压缩的方法,将对JPEG图像数据进行哈夫曼解码 后的数据直接以编码单元大小的块(英文:Block)为单位进行输出,从而不需要缓存整帧图像。进一步的,可以将每个块再划分为若干子块(英文:Slice),将每个块包含的 子块并行进行帧内预测和算术编码。由于每个块仅仅是编码单元大小,因此可以在各个 块以及各个子块之间进行帧内预测,而不会对还原时的效率产生过大的影响。并且在算 术编码时,每个块所包含的子块的算术模型可以复用前一个编码的块中相应的子块的算 术模型,从而可以减少需要存储的概率模型的大小,节省内存资源消耗。
图3是本申请的实施例所提供的一种硬件架构的示意图。如图3所示,本申请可以由计算机装置300执行,计算机装置300包括内存301、中央处理器(英文全称:centralprocessing unit,简称:CPU)302、存储介质303。CPU通过总线与现场可编程逻辑门 阵列(英文全称:Field-Programmable Gate Array,简称:FPGA)压缩卡310相连。其 中,该总线可以采用周边设备高速互联(英文全称:Peripheral Component Interconnect Express,简称:PCIe)标准。PCIe属于高速串行点对点双通道高带宽传输,可以实现 CPU和FPGA压缩卡的端到端的可靠性传输。FPGA压缩卡310以插卡的形式连接在服务器 上,FPGA压缩卡包括图像处理引擎311、内存312和其余一些压缩卡应包含的电子元器 件。其中,图像处理引擎311是关于本申请所提供的图像压缩方案的相关程序,可以对 JPEG图像进行哈夫曼解码,并通过帧内预测和算术编码操作完成图像数据的压缩,并将 图像数据压缩后所得到的文件写入内存301。
当进行图像数据的压缩时,CPU302将待压缩的图像数据存入内存301中,并将待压缩的图像数据发送给FPGA压缩卡301。FPGA压缩卡310从内存301中读取图像,并将其 送入图像处理引擎311,并将图像压缩过程中产生的中间数据缓存到内存312中。待整帧 图像完成压缩后,从内存312中读取并进行封装,通过PCIe接口送入内存301中,完成 图像的压缩。其中,FPGA压缩卡310从内存301中读取图像可以采用PCIe直接内存存 取(英文全称:Direct Memory Access,简称:DMA)的方式,该方式可以通过DMA控制 器直接从内存301中读取数据,从而降低CPU302的资源占用率。
需要指出的是,在本申请中,压缩卡除了可以是FPGA外,也可以是图形处理器(英文全称:Graphic Processing Unit,GPU)或者数字信号处理(英文全称:Digital SignalProcessing,简称:DPS)芯片,本申请不对此进行限定。计算机装置也可以不包括FPGA 压缩卡310,图像处理引擎311可以作为程序存储在内存301或者存储介质303中,当需 要进行图像的压缩时,CPU302调用内存301或者存储介质303中的图像处理引擎311完 成相应的操作。本申请不对图像处理引擎311的存在形式进行限定。
图4是本申请的实施例所提供的另一种硬件架构的示意图。
如图4所示,本申请所提供的技术方案可以由计算机集群400执行。计算机集群400包括至少两台计算机装置(图示为三台计算机装置),其中计算机装置430为本申请所 必须的。计算机装置430包括FPGA压缩卡434,用于专门为整个计算机集群400提供图 像压缩和解压缩服务。当计算机集群400中的计算机装置,例如计算机装置410有图像 需要进行压缩时,将该图像通过网络440发送给计算机装置430。连接计算机装置410 和计算机装置430的网络440既可以是网线或光纤等有线网络,也可以是无线局域网(英 文全称:wirelesslocal area networks,简称:WLAN)、蓝牙(全称:bluetooth,简称: BT)等无线网络,本申请不对此进行限定。采用图4所示的计算机集群400执行本申请所 提供的技术方案,通过将计算机集群400中部分配置较高、适合进行图像处理的计算机 装置专门用作进行图像压缩操作,有利于更好地对计算资源进行配置。
图5是本申请的一个实施例的流程示意图。
S510:接收JPEG图像数据,解析该JPEG图像数据的基本参数。
通过对JPEG图像数据的解析,得到的数据包括以下两个部分:一部分是原始图像数 据经DCT变换和哈夫曼编码后的数据,称为scan域;另一部分是JPEG头域数据,包括 用于量化DCT变换后的DC/AC系数的量化表、图像的宽度和高度信息、DC/AC系数对应的 哈夫曼表等。
S520:对scan域数据进行哈夫曼解码,得到第一图像数据。
首先根据解析图像所得到的DC/AC系数对应的哈夫曼表进行哈夫曼树的重建,然后 对scan域数据进行哈夫曼解码,得到采用YCbCr方案表示的数据。
YCbCr方案是在世界数字组织视频标准研制过程中所给出的一种彩色模型的方案。彩 色模型是用于在一定的标准下用通常可接受的方式对彩色进行说明的模型。彩色模型主 要有RGB、YUV和YCbCr等方案。其中,RGB方案分别代表红(Red)、绿(Green)和蓝(Blue),是依据人眼识别的颜色定义出的空间,可以表示大部分颜色。由于RGB方案 难以对细节进行数字化的调整,且将色调、亮度和饱和度三个量放在一起表示,具有一 定的局限性。现在主要作为面向硬件的彩色模型的方案。YUV方案在RGB方案的基础上, 从全彩色图像中产生一个黑白图像,然后将提取出的三个主要的颜色变成两个额外的信 号来描述,再将三个信号组合起来即可还原全彩色图像。YCbCr方案是YUV方案经过缩放 和偏移产生的,其中Y用来表示图像中的亮度分量,Cr和Cb分别用来表示图像中的红色 和蓝色的色度分量。RGB方案、YUV方案和YCbCr方案之间可以根据公式相互转换,因此 本申请也可能得到以RGB方案或者YUV方案表示的数据,本申请不对此进行限定。为了 方便说明,在本申请中,采用YCbCr方案进行说明。
在得到YCbCr方案表示的第一图像数据后,将该第一图像数据以块为单位进行后续 处理,其中,块的大小和编码单元的大小相同,也就是原始图像数据进行DCT变换的单位的大小,通常为8行8列,也可以是其他大小,例如4行4列或16行16列,本申请 的实施例不对此进行限定。由于原始图像在进行DCT变换时是以编码单元为单位进行的, 因此在步骤S520对JPEG图像的scan域数据进行哈夫曼解码后,可以直接得到以块为单 位的数据。
可选的,在将原始图像数据转换成JPEG图像数据的过程中,可能会对图像数据进行 量化,即按照一定的比例进行放大。如果在转换的过程中存在量化这一步骤,则在步骤S520中可以根据JPEG头域数据中的量化表等信息对得到的数据进行反量化。
可选的,本实施例也可以用于处理与JPEG图像的格式类似的图像数据,例如webp格式等图像数据。这些图像数据需是由原始图像数据经过DCT变换以及其他操作后得到的,因此只要相应地进行一些反操作,即可以得到原始图像经过DCT变换后的数据,并 被用于本实施例接下来的步骤。
S530:对得到的每个块的数据进行切分,得到若干个子块(英文:Slice)。
块中所包含的数据是原始图像数据经过DCT变换后的数据。原始图像数据在转换为 JPEG图像数据时,由于相邻的像素点之间具有很强的相关性,其在时域上的能量一般为平均分布。因此需要将原始图像数据经过DCT变换后再进行处理。
图6是本申请的实施例所提供的将以块为单位的原始图像数据转换成DC/AC系数的 示意图。从图中可以看出,转换后的DC/AC系数矩阵的右下角的元素大多为0,而矩阵左上角的元素的绝对值则相对较大。也就是说,当原始图像数据进行DCT转换后,能量大 多集中在块的左上角部分。
图7是本申请的实施例所提供的DC/AC系数的数值大小在块中的分布规律的示意图。 为了更清楚地体现上述特征,图7是分析统计了大量JPEG图像数据中DC/AC系数的大小在块中的分布所得出的示意图,其中,图7的水平面表示DC/AC系数所组成的块,垂直 面表示块的某一位置上DC/AC系数的大小,也即该位置对应的能量的大小。从图7中可 以看出,DC/AC系数对应的能量在块的左上角处最高,向右下移动时能量也渐次降低,而 块的右下角的能量为0。
针对上述DC/AC系数的数值大小在块中的分布规律,图8示出了本申请的实施例所提供的一种将块划分成子块的方法。如图8所示,在该示例中根据块中能量的分布规律 将块切成4份,其中,第一子块位于块的最左边;第二子块位于块的最上边且不与第一 子块重叠;第四子块位于块的右下角;块的剩余部分为第三子块。
图9进一步示出了将块划分为子块的方法。如图9所示,块的大小为8行8列,按 照从上到下、从左到右的顺序将每个块包括的64个元素从0-63依次标号(也可以按横 纵坐标对块中的元素进行编号)。所分成的第一子块为块的最左边,所分成的第二子块 为块的最上边且不与第一子块重叠,第四子块位于块的右下角,其余部分为第三子块。 其中,本申请采用相同的切分方法将每个块切分为子块,切分后的每个块中的第i子块 互相关联,且任意两个块中的第i子块的位置或者坐标相同,1≤i≤M。例如,当某个 块切分的第一子块位于块的最左边,包括编号为0、8、16、24、32、40、48和56的元 素时,其余块所切分的第一子块也必须位于所在块的最左边,包括编号为0、8、16、24、 32、40、48和56的元素。
需要指出的是,本申请的实施例对于块的切分方式可以有多种扩展,而不对所切分 的子块的个数和切分的方式进行限定。图10是本申请的实施例所提供的另一种将块切分 为子块的方法的示意图。如图10所示,可以对L*L大小的块进行纵向切分,得到两个宽度为L的子块;也可以对L*L大小的块进行横向切分,得到四个长度为L的子块。
S540:对多个子块对应的数据并行进行帧内预测。
本申请的实施例所提供的图像处理引擎可以并行对多个子块中的第一图像数据进行 帧内预测,得到每个子块中的像素所对应的预测值和差值。其中,对于帧内预测,是以同一帧图像内的临近像素作为参考,计算待编码像素的预测值P,再以待编码像素的实 际值X和预测值P的差值D来对该像素进行后续的算术编码。为了便于说明,将后续用 于算术编码的差值称作第一中间数据。
对于预测值P的确定,可以有若干种方法,本申请的实施例不对此进行限定。例如,对于每个子块中的元素的预测值P,该预测值P的值可以为与该元素同一行的第一个元素的值,或者为与该元素同一列的第一个元素的值。
由于每个块的大小足够小,因此即使以其他块中的像素点对应的第一图像数据为基 础进行帧内预测,在还原时也不会对效率造成较大的影响,因此本实施例中,不同块、不同子块中像素点对应的第一图像数据均可以作为帧内预测的基础,可以实现最大化消除冗余的目的,从而提高图像的压缩率。
S550:依次对每一个块所切分的不同子块包含的第一中间数据并行进行算术编码。
由于算术编码是用待编码的各种数据所出现的概率和它的编码间隔两个基本参数来 描述的。算术编码可以分成两种,即静态算术编码和自适应算术编码。其中,在静态算术编码中,各种数据所出现的概率是固定的;而在自适应算术编码中,各种数据的概率 不是固定的,而是根据编码时各种数据出现的频繁程度动态地进行修改。具体来说,在 自适应算术编码之前,先假设每种数据所出现的概率相等,当接收到一个数据并对它进 行算术编码后,更新数据所出现的概率。
下面以采用自适应算术编码的方式对本申请提供的技术方案进行具体说明。当块的 大小为8行8列时,每个块包含64个像素点对应的数据,每个像素点对应的数据包含了该像素点在块中的位置信息以及该像素点的预测值,当用8比特大小的二进制数值来表 示该像素点的预测值时(即预测值的范围是0至255),每个块对应的概率模型需包含 64*256个概率,其中,每个像素点所可能的预测值取值都对应一个概率。例如,将块所 包含的64个像素点按照从0-63进行编号,当对编号为20的像素点进行算术编码时,首 先确定编号为20的像素点的预测值和差值(即第一中间数据),根据该像素点的预测值 以及编号从概率模型中找到相应的概率,并根据该概率对该像素点的差值进行编码。
当采用自适应算术编码时,概率模型中的每个概率的初始值均为0.5,表示每个像素 点对应的实际值的每个比特位的值是0或者1的概率均为0.5。当对第一块中的第一子块进行算术编码时,根据当前的概率模型进行算术编码,并自适应地修改其所使用的概率,从而更新概率模型。当对第二块中的第一子块进行编码时,可以使用第一块中的第一子 块进行算术编码时更新的概率模型,以此类推。也就是说,相关联的子块可以依次使用 并更新一份概率模型且该概率模型与子块的大小相匹配。采用这种做法依次对根据每一 个块所切分的不同子块包含的第一中间数据并行进行算术编码时,同一时刻只需要存储 包含64*256个概率的概率模型,也就是一个块所对应的算术模型的大小,该概率模型会 随着算术编码的进行而更新。
S560:对算术编码后得到的数据进行封装。
根据各个子块算术编码后得到的数据以及在步骤S510中解析得到的JPEG头域数据, 将算术编码后的数据和JPEG头域数据封装,得到第二图像数据。
图11是本申请的实施例所提供的一种第二图像数据的封装格式的示意图。如图11所示,第二图像数据封装格式由3部分组成,包括:
子块信息部分,该部分是用于记录整个图像所切分的子块的个数,以及每个子块的 长度,图像处理引擎可以在解码时根据子块信息部分,将相同子块的数据放入同一个解码模块,从而实现并行解码。
压缩后的JPEG头域数据部分,该部分是将原JPEG头域数据压缩后得到。由于将JPEG 图像数据进行压缩后,需要能够将压缩后的图片无损地解压回原来的JPEG图像数据。由 于JPEG图像数据除头域数据外的其他部分已经按照上述方案进行了压缩,因此需要单独 将JPEG头域数据部分进行无损压缩,作为压缩后的第二图像数据封装格式的一部分。此处压缩JPEG头域数据的压缩算法可以是通用压缩算法的任意一种,例如差分编码、哈夫 曼编码、LZW压缩算法等,本申请不对此进行限定。可选的,如果本实施例处理的是其他 格式的图像数据,则将此处压缩后的JPEG头域数据部分改为相应格式的头域数据部分。
压缩后的子块部分,用于存储经过帧内预测和算术编码后得到的子块的数据。由于 在子块信息部分已经记载了子块的个数以及各个子块对应的数据量的大小,因此在压缩 后的子块部分,各个子块的数据可以紧密地排列,各个子块之间不需要插入其他数据作为间隔,以提高报文的效率。
本实施例中所生成的第二图像数据还可以采用其他的封装格式。图12是本申请实施 例所提供的另一种第二图像数据的封装格式的示意图。如图12所示,压缩的子块部分中的子块顺序有所变化。由于在本申请的实施例中,对于块的切分采用了统一的方法。因 此,可以将相同块切分出来的子块所包含的数据放在一起,并使每个块中的子块的排列 顺序保持一致。例如,在图8的示例中,将每个块分成了4个子块,并按照子块1至子 块4的顺序进行了编号,那么在这种封装方法中,将同一个块分出的4个子块放在一起, 且按一定的顺序进行排列,例如按照子块2、子块3、子块1和子块4的顺序。那么对于 其他的块,也需要按照该顺序对子块进行排列。采用这种方法,只要在子块信息部分记 录每个块所切分的子块数量、每种子块的长度和每种子块在块内的位置即可进行解码, 可以进一步提高报文封装的效率。
图13是本申请的另一个实施例的流程示意图。
图5所示的实施例是从JPEG图像数据出发,通过对JPEG图像数据进行哈夫曼解码等操作,得到原始图像数据经过DCT变换后的数据。在图13所示的实施例中,将从原始 图像数据出发进行压缩处理。如图13所示,本实施例包括以下步骤:
S1310:接收原始图像数据,对原始图像数据进行DCT变换,得到以块为单位的第一图像数据。
原始图像数据指的是相机、传感器、摄像头等装置所直接获得的未经过处理的数据。 原始图像数据通常是用彩色模型对图像中的每个像素点进行描述所得到的,例如用RGB、 YCbCr等方案对图像中的每个像素点进行描述。与JPEG图像数据不同,原始图像数据不 包括头域部分,因此不需要对原始图像数据进行解析。
由于原始图像数据进行DCT变换是以编码单元为单位进行的,因此DCT变换后可以得到以块为单位的数据,其中,块的大小和编码单元的大小相同。
S1320:将每个块包含的数据进行切分,得到若干个子块。
S1330:对多个子块对应的数据并行进行帧内预测,得到第一中间数据。
S1340:依次对每一个块所切分的不同子块对应的第一中间数据并行进行算术编码。
S1350:对算术编码后得到的数据进行封装,得到第二图像数据。
由于原始图像数据没有头域数据,因此封装后得到的图像数据包括两部分,具体为:
子块信息部分,用于记录整帧图像所切分的子块的个数,以及每个子块的长度;
压缩后的子块部分,用于存储压缩后的子块。
和步骤S560类似,本实施例中数据封装所产生的图像数据还可以有其他的格式,本 申请不对此进行限定。
图14是本申请的实施例所提供的一种计算机装置的模块示意图。如图14所示,计算机装置1400包括:
接收模块1410,用于获取第一图像数据中的N个块,该第一图像数据是经过对原始图像数据进行离散余弦变换后得到的中间数据,其中,该N个块中的每个块的大小等于 编码单元大小,该编码单元为原始图像数据进行离散余弦变换过程中所采用的数据单元, N为正整数;
切分模块1420,用于将N个块中的每个块切分为M个子块,得到N*M个子块,其中, M为正整数;
压缩模块1430,用于分别对N*M个子块中的每个子块进行压缩,并对压缩后的数据进行封装,得到第二图像数据。
上述计算机装置还用于执行如图5和图13所示的图像数据压缩的操作,具体来说,接收模块1410用于执行S510、S520和S1310等步骤,切分模块1420用于执行S530和 S1320等步骤,压缩模块1430用于执行S540-S560、S1330-S1350等步骤,此处不再赘述。
图15为依据本申请的实施例的计算机装置1500的结构示意图。
如图8所示,计算机装置1500包括包括处理器1501,处理器1501与系统内存1505连接。处理器1501可以为中央处理器(英文全称:Central Processing Unit,缩写: CPU),图形处理器(英文全称:Graphics Processing Unit,缩写:GPU),现场可编 程门阵列(英文全称:Field Programmable Gate Array,缩写:FPGA),或数字信号处 理器(英文全称:Digital Signal Processor,缩写:DSP)等计算逻辑或以上任意计算 逻辑的组合。处理器1501可以为单核处理器或多核处理器。
总线1509用于在计算机装置1500的各部件之间传递信息,总线1509可以使用有线的连接方式或采用无线的连接方式,本申请并不对此进行限定。总线1509还连接有辅 助存储器(英文:secondary storage)1502,输入/输出接口1503和通信接口1504。
辅助存储器1502一般也称为外存,辅助存储器1507的存储介质可以是磁性介质,(例 如,软盘、硬盘、磁带)、光介质(例如光盘)、或者半导体介质(例如固态硬盘(英文全称:solid state disk,缩写:SSD))等。在一些实施例中,辅助存储器1502还可能进 一步包括与处理器801分离的远程存储器,例如通过通信接口1504和网络1511进行访 问的网盘(包括网络文件系统(英文全称:Network File System,缩写:NFS)等网络或 机群文件系统)。
输入/输出接口1503连接有输入/输出设备,用于接收输入的信息,输出操作结果。输入/输出设备可以为鼠标、键盘、显示器、或者光驱等。
通信接口1504使用例如但不限于收发器一类的收发装置,来实现与其他设备或网络 1511之间的通信,通信接口1504可以通过有线或者无线的形式与网络1511互连。
本申请实施例的一些特征可以由处理器1501执行系统内存1505中的软件代码来完 成/支持。系统内存1505可以包括一些软件,例如,操作系统1508(例如Darwin、RTXC、LINUX、UNIX、OS X、WINDOWS或嵌入式操作系统(例如Vxworks)),应用程序1507等。
此外,图15仅仅是一个计算机装置1500的例子,计算机装置1500可能包含相比于图15展示的更多或者更少的组件,或者有不同的组件配置方式。例如,在一种可能的实 现方式中,本申请所提供的计算机装置1500的处理器1501为FPGA,且计算机装置1500 不包括独立的系统内存1505,而是将软件代码存储在处理器1501中。在这种情况下,本 申请实施例中的一些特征可以由处理器1501执行自身存储的软件代码来完成/支持。
同时,图15中展示的各种组件可以用硬件、软件或者硬件与软件的结合方式实施,本申请不对此进行限定。
本发明实施例还提供一种计算机非瞬态存储介质,所述计算机非瞬态存储介质中存 储有指令,当其在处理器上运行时,图5或图13所示的方法流程得以实现。
本发明实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行 时,图5或图13所示的方法流程得以实现。
Claims (18)
1.一种图像压缩方法,其特征在于,所述方法用于计算机装置,所述方法包括:
获取第一图像数据中的N个块,所述第一图像数据是经过对原始图像数据进行离散余弦变换后得到的中间数据,其中,所述N个块中的每个块的大小等于编码单元大小,所述编码单元为所述原始图像数据进行离散余弦变换过程中所采用的数据单元,N为正整数;
将所述N个块中的每个块切分为M个子块,得到N*M个子块,其中,M为正整数;
分别对所述N*M个子块中的每个子块进行压缩,并对压缩后的数据进行封装,得到第二图像数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述N个块中的每个块切分为M个子块,包括:
按照相同的切分方法将每个块切分为M个子块,切分后的每个块中的第i子块互相关联,其中,任意两个块中的第i子块的位置或者坐标相同,1≤i≤M。
3.根据权利要求2所述的方法,其特征在于,
所述将所述N个块中的每个块切分为M个子块,包括:
根据所述N个块中的每个块的能量分布将所述N个块中的每个块切分成M个子块,其中,所述能量分布反映每个块包含的数据的数值大小的分布。
4.根据权利要求2或3所述的方法,其特征在于,所述分别对所述N*M个子块中的每个子块进行压缩包括:
分别对所述N*M个子块中的每个子块包含的数据进行帧内预测,得到每个子块对应的第一中间数据;
分别对所述N*M个子块中的每个子块对应的所述第一中间数据进行算术编码,得到所述N*M个子块中的每个子块对应的压缩后的数据。
5.根据权利要求4所述的方法,其特征在于,所述分别对所述N*M个子块中的每个子块对应的所述第一中间数据进行算术编码,得到所述N*M个子块中的每个子块对应的压缩后的数据,包括:
获取M个概率模型,并采用所述M个概率模型分别对第一块进行算术编码,得到所述第一块对应的压缩后的数据,其中,每个子块对应一个概率模型,所述第一块是所述N个块中的一个块;
根据所述M个概率模型对下一个块进行算术编码,得到下一个块对应的压缩后的数据,其中所述下一个块与上一个块中相关联的子块采用相同的概率模型。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述对压缩后的数据进行封装包括:
将多个子块压缩后的数据进行封装得到第二图像数据,其中,所述第二图像数据包括头域部分和数据部分,所述头域部分用于指示每个子块对应的压缩数据的数据量大小,所述数据部分用于携带每个子块对应的压缩数据。
7.根据权利要求1-6任一项所述的方法,其特征在于,
所述获取第一图像数据中的N个块,包括:
接收原始图像数据,并对所述原始图像数据进行离散余弦变换;或者
接收联合图像专家组JPEG图像数据,并对所述JPEG图像数据进行哈夫曼解码。
8.根据权利要求4或5所述的方法,其特征在于,所述N个块包括第一块和第二块,
所述第二块中的第j子块对应的第一中间数据是根据所述第一块中的第k子块对应的第一中间数据进行帧内预测得到的,其中,1≤j≤M,1≤k≤M。
9.一种计算机装置,其特征在于,所述计算机装置用于压缩图像,所述装置包括:
接收模块,用于获取第一图像数据中的N个块,所述第一图像数据是经过对原始图像数据进行离散余弦变换后得到的中间数据,其中,所述N个块中的每个块的大小等于编码单元大小,所述编码单元为所述原始图像数据进行离散余弦变换过程中所采用的数据单元,N为正整数;
切分模块,将所述N个块中的每个块切分为M个子块,得到N*M个子块,其中,M为正整数;
压缩模块,用于分别对所述N*M个子块中的每个子块进行压缩,并对压缩后的数据进行封装,得到第二图像数据。
10.根据权利要求9所述的装置,其特征在于,当将所述N个块中的每个块切分为M个子块时,所述切分模块具体用于,
按照相同的划分方法将每个块切分为M个子块,划分后的每个块中的第i子块互相关联,其中,任意两个块中的第i子块的位置或者坐标相同,1≤i≤M。
11.根据权利要求10所述的装置,其特征在于,
当将所述N个块中的每个块切分为M个子块时,所述切分模块具体用于,
根据所述N个块中的每个块的能量分布将所述N个块中的每个块切分成M个子块,其中,所述能量分布反映每个块包含的数据的数值大小的分布。
12.根据权利要求10或11所述的装置,其特征在于,当分别对所述N*M个子块中的每个子块进行压缩时,所述压缩模块具体用于:
分别对所述N*M个子块中的每个子块包含的数据进行帧内预测,得到每个子块对应的第一中间数据;
分别对所述N*M个子块中的每个子块对应的所述第一中间数据进行算术编码,得到所述N*M个子块中的每个子块对应的压缩后的数据。
13.根据权利要求12所述的方法,其特征在于,当分别对所述N*M个子块中的每个子块对应的所述第一中间数据进行算术编码,得到所述N*M个子块中的每个子块对应的压缩后的数据时,所述压缩模块具体用于:
获取M个概率模型,并采用所述M个概率模型分别对第一块进行算术编码,得到所述第一块对应的压缩后的数据,其中,每个子块对应一个概率模型,所述第一块是所述N个块中的一个块;
根据所述M个概率模型对下一个块进行算术编码,得到下一个块对应的压缩后的数据,其中所述下一个块与上一个块中相关联的子块采用相同的概率模型。
14.根据权利要求9-13任一项所述的装置,其特征在于,当对压缩后的数据进行封装时,所述压缩模块具体用于,
将多个子块压缩后的数据进行封装得到第二图像数据,其中,所述第二图像数据包括头域部分和数据部分,所述头域部分用于指示每个子块对应的压缩数据的数据量大小,所述数据部分用于携带每个子块对应的压缩数据。
15.根据权利要求9-14任一项所述的装置,其特征在于,当获取第一图像数据中的N个块时,所述接收模块具体用于:
接收原始图像数据,并对所述原始图像数据进行离散余弦变换;或者
接收联合图像专家组JPEG图像数据,并对所述JPEG图像数据进行哈夫曼解码。
16.根据权利要求12或13所述的装置,其特征在于,所述N个块包括第一块和第二块,
所述第二块中的第j子块对应的第一中间数据是根据所述第一块中的第k子块对应的第一中间数据进行帧内预测得到的,其中,1≤j≤M,1≤k≤M。
17.一种计算机装置,其特征在于,所述计算机装置包括处理器和存储器,所述存储器存储程序代码,所述处理器用于调用所述存储器中的程序代码执行如权利要求1-8任一项所述的方法。
18.一种计算机非瞬态存储介质,其特征在于,所述计算机非瞬态存储介质存储有计算机程序,所述计算机程序被计算设备执行时实现如权利要求1-8任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/090773 WO2020057182A1 (zh) | 2018-09-19 | 2019-06-11 | 一种图像压缩的方法及装置 |
US17/206,742 US20210211728A1 (en) | 2018-09-19 | 2021-03-19 | Image Compression Method and Apparatus |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811096203 | 2018-09-19 | ||
CN201811096203X | 2018-09-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109842803A true CN109842803A (zh) | 2019-06-04 |
CN109842803B CN109842803B (zh) | 2021-06-29 |
Family
ID=66883412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811618308.7A Active CN109842803B (zh) | 2018-09-19 | 2018-12-28 | 一种图像压缩的方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210211728A1 (zh) |
CN (1) | CN109842803B (zh) |
WO (1) | WO2020057182A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020057182A1 (zh) * | 2018-09-19 | 2020-03-26 | 华为技术有限公司 | 一种图像压缩的方法及装置 |
CN110969672A (zh) * | 2019-11-14 | 2020-04-07 | 杭州飞步科技有限公司 | 图像压缩方法及装置 |
CN112449191A (zh) * | 2019-08-27 | 2021-03-05 | 华为技术有限公司 | 压缩多个图像的方法、解压缩图像的方法和装置 |
CN113115050A (zh) * | 2021-04-08 | 2021-07-13 | 联捷计算科技(深圳)有限公司 | 一种Webp图像压缩系统、压缩方法以及可读存储介质 |
CN113613022A (zh) * | 2021-06-18 | 2021-11-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种jpeg图像的压缩方法、装置、设备及可读介质 |
CN113613004A (zh) * | 2021-09-14 | 2021-11-05 | 百果园技术(新加坡)有限公司 | 图像编码方法、装置、电子设备及存储介质 |
CN116055743A (zh) * | 2023-03-29 | 2023-05-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种图像压缩方法、系统、电子设备及存储介质 |
US11646983B1 (en) | 2019-07-16 | 2023-05-09 | Whatsapp Llc | Methods and systems for transmitting an image with thumbnail data |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112437303B (zh) * | 2020-11-12 | 2024-06-21 | 北京深维科技有限公司 | 一种jpeg解码方法及装置 |
CN113068040A (zh) * | 2021-06-02 | 2021-07-02 | 苏州浪潮智能科技有限公司 | 一种图像压缩方法、装置、电子设备及可读存储介质 |
CN113706493B (zh) * | 2021-08-20 | 2024-03-22 | 北京航空航天大学 | 基于dct频率自适应选择的数字病理全切片分割方法 |
CN118055256A (zh) * | 2024-04-15 | 2024-05-17 | 浙江芯劢微电子股份有限公司 | 一种基于dct变换的图像压缩编码方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0674448A2 (en) * | 1994-03-25 | 1995-09-27 | Nec Corporation | Video image reproduction with high speed |
CN1855996A (zh) * | 2005-04-19 | 2006-11-01 | 展讯通信(上海)有限公司 | 一种静态图像压缩的编码方法 |
CN101133649A (zh) * | 2005-12-07 | 2008-02-27 | 索尼株式会社 | 编码装置、编码方法、编码程序、解码装置、解码方法和解码程序 |
CN101771868A (zh) * | 2008-12-31 | 2010-07-07 | 华为技术有限公司 | 对图像的量化处理方法及装置 |
CN102801977A (zh) * | 2012-08-07 | 2012-11-28 | 合肥极光科技股份有限公司 | H.264中基于视频复杂度分析的鲁棒数字水印嵌入方法 |
CN103703776A (zh) * | 2011-07-19 | 2014-04-02 | 高通股份有限公司 | 在视频译码中的系数扫描 |
EP2396770B1 (en) * | 2009-02-13 | 2016-04-20 | BlackBerry Limited | Adaptive quantization with balanced pixel-domain distortion distribution in image processing |
CN107105245A (zh) * | 2017-05-26 | 2017-08-29 | 西安电子科技大学 | 基于tms320c6678芯片的高速jpeg图像压缩方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621689A (zh) * | 2009-07-28 | 2010-01-06 | 天津大学 | Mpeg到h.264/avc视频编码转换系统 |
US8331703B2 (en) * | 2011-02-18 | 2012-12-11 | Arm Limited | Parallel image encoding |
CN102572435B (zh) * | 2012-01-16 | 2014-03-12 | 中南民族大学 | 基于压缩采样的视频编解码系统及其方法 |
CN105049880B (zh) * | 2015-07-13 | 2017-12-26 | 太原科技大学 | 一种视频信号调制中的非平等保护方法 |
CN109842803B (zh) * | 2018-09-19 | 2021-06-29 | 华为技术有限公司 | 一种图像压缩的方法及装置 |
-
2018
- 2018-12-28 CN CN201811618308.7A patent/CN109842803B/zh active Active
-
2019
- 2019-06-11 WO PCT/CN2019/090773 patent/WO2020057182A1/zh active Application Filing
-
2021
- 2021-03-19 US US17/206,742 patent/US20210211728A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0674448A2 (en) * | 1994-03-25 | 1995-09-27 | Nec Corporation | Video image reproduction with high speed |
CN1855996A (zh) * | 2005-04-19 | 2006-11-01 | 展讯通信(上海)有限公司 | 一种静态图像压缩的编码方法 |
CN101133649A (zh) * | 2005-12-07 | 2008-02-27 | 索尼株式会社 | 编码装置、编码方法、编码程序、解码装置、解码方法和解码程序 |
CN101771868A (zh) * | 2008-12-31 | 2010-07-07 | 华为技术有限公司 | 对图像的量化处理方法及装置 |
EP2396770B1 (en) * | 2009-02-13 | 2016-04-20 | BlackBerry Limited | Adaptive quantization with balanced pixel-domain distortion distribution in image processing |
CN103703776A (zh) * | 2011-07-19 | 2014-04-02 | 高通股份有限公司 | 在视频译码中的系数扫描 |
CN102801977A (zh) * | 2012-08-07 | 2012-11-28 | 合肥极光科技股份有限公司 | H.264中基于视频复杂度分析的鲁棒数字水印嵌入方法 |
CN107105245A (zh) * | 2017-05-26 | 2017-08-29 | 西安电子科技大学 | 基于tms320c6678芯片的高速jpeg图像压缩方法 |
Non-Patent Citations (2)
Title |
---|
吴强: "基于离散余弦变换域采样和重建的低码率图像压缩算法", 《科学技术与工程》 * |
廖醒宇: "嵌入式多核构架JPEG编码优化与实现", 《中国优秀硕士论文全文数据库(电子期刊)》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020057182A1 (zh) * | 2018-09-19 | 2020-03-26 | 华为技术有限公司 | 一种图像压缩的方法及装置 |
US11646983B1 (en) | 2019-07-16 | 2023-05-09 | Whatsapp Llc | Methods and systems for transmitting an image with thumbnail data |
CN112449191A (zh) * | 2019-08-27 | 2021-03-05 | 华为技术有限公司 | 压缩多个图像的方法、解压缩图像的方法和装置 |
CN112449191B (zh) * | 2019-08-27 | 2024-05-17 | 华为技术有限公司 | 压缩多个图像的方法、解压缩图像的方法和装置 |
CN110969672A (zh) * | 2019-11-14 | 2020-04-07 | 杭州飞步科技有限公司 | 图像压缩方法及装置 |
CN113115050A (zh) * | 2021-04-08 | 2021-07-13 | 联捷计算科技(深圳)有限公司 | 一种Webp图像压缩系统、压缩方法以及可读存储介质 |
CN113115050B (zh) * | 2021-04-08 | 2023-02-17 | 联捷计算科技(深圳)有限公司 | 一种Webp图像压缩系统、压缩方法以及可读存储介质 |
CN113613022A (zh) * | 2021-06-18 | 2021-11-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种jpeg图像的压缩方法、装置、设备及可读介质 |
CN113613022B (zh) * | 2021-06-18 | 2023-11-14 | 山东云海国创云计算装备产业创新中心有限公司 | 一种jpeg图像的压缩方法、装置、设备及可读介质 |
CN113613004A (zh) * | 2021-09-14 | 2021-11-05 | 百果园技术(新加坡)有限公司 | 图像编码方法、装置、电子设备及存储介质 |
WO2023040600A1 (zh) * | 2021-09-14 | 2023-03-23 | 百果园技术(新加坡)有限公司 | 图像编码方法、图像解码方法、装置、电子设备及介质 |
CN116055743A (zh) * | 2023-03-29 | 2023-05-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种图像压缩方法、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109842803B (zh) | 2021-06-29 |
US20210211728A1 (en) | 2021-07-08 |
WO2020057182A1 (zh) | 2020-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109842803A (zh) | 一种图像压缩的方法及装置 | |
CN102523367B (zh) | 基于多调色板的实时图像压缩和还原方法 | |
CN105120293B (zh) | 基于cpu和gpu的图像协同解码方法及装置 | |
WO2005027506A1 (en) | Methods of compressing still pictures for mobile devices | |
CN111131828B (zh) | 一种图像压缩方法、装置、电子设备和存储介质 | |
CN110099280A (zh) | 一种无线自组织网络带宽受限下的视频业务质量增强方法 | |
US20090262126A1 (en) | System and Method for Separated Image Compression | |
CN110996127B (zh) | 图像编解码方法、设备及系统 | |
KR101277712B1 (ko) | 영상 처리 방법 및 장치 | |
CN109474824A (zh) | 图像压缩方法 | |
CN103957426A (zh) | 一种rgb565真彩色图像有损压缩及解压方法 | |
CN104575427A (zh) | 一种适合嵌入式系统解码的高压缩比无损图像压缩方法 | |
CN106817584A (zh) | 一种基于fpga的mjpeg压缩实现方法和fpga | |
CN117560511A (zh) | 基于图分割技术电力巡检的间隔棒图像压缩方法及系统 | |
JP2024505798A (ja) | 点群符号化・復号化方法及びシステム、点群符号器並びに点群復号器 | |
CN109474826B (zh) | 图片压缩方法、装置、电子设备及存储介质 | |
CN105306941B (zh) | 一种视频编码方法 | |
CN110855990B (zh) | 图像编码、解码方法、计算机设备和图像处理系统 | |
CN108184113B (zh) | 一种基于图像间参考的图像压缩编码方法和系统 | |
CN105007483B (zh) | 一种与h264标准兼容的屏幕内容编码解码方法 | |
CN105007490B (zh) | 基于OmapL138芯片的Jpeg压缩算法 | |
CN114339226B (zh) | 一种提高画面的流畅度的方法、装置及介质 | |
CN118317115A (zh) | 等比特精度预测、映射和分段编码的数据解码方法和装置 | |
WO2024212688A1 (zh) | 图像文件编解码方法、图像文件编码器和图像文件解码器 | |
WO2024187388A1 (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 |