CN103581673A - 视频数据的压缩/解压缩方法及*** - Google Patents
视频数据的压缩/解压缩方法及*** Download PDFInfo
- Publication number
- CN103581673A CN103581673A CN201210277852.6A CN201210277852A CN103581673A CN 103581673 A CN103581673 A CN 103581673A CN 201210277852 A CN201210277852 A CN 201210277852A CN 103581673 A CN103581673 A CN 103581673A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- quantization parameter
- budget
- compression
- 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
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种视频数据的压缩/解压缩方法及***,该方法包括:1)将视频数据分割为多个具有统一规格的基本单元,每个所述基本单元包括至少一个数据块;2)读取所述基本单元,3)对读取的所述基本单元中的各个数据块按照各自的指定压缩预算并行地进行压缩编码,获得所述各个数据块的压缩数据,其中每个数据块的压缩数据的长度与该数据块的指定的压缩预算一致,4)根据每个数据块的压缩预算确定每个数据块的压缩数据在输出缓冲器中的位置,从而将读取的基本单元中的各个数据块的压缩数据并行地分配到输出缓冲器中;5)所述输出缓冲器串行输出所述各个数据块的压缩数据,从而获得读取的基本单元的压缩数据。
Description
技术领域
本发明涉及一种压缩/解压缩方法及***,特别是针对视频数据的压缩/解压缩方法及***。
背景技术
现有的视频数据压缩方法设计的重点主要在数据压缩的效率,主要应用于视频数据的存储和传输领域,目的是降低视频数据存储所需要的空间和视频数据在网络传输过程中所需要的带宽。
然而在多媒体ASIC设计中,ASIC内部的主要带宽需求和带宽瓶颈集中在视频数据的读写阶段,例如视频解码获得的重建视频图像数据的写出,视频解码获得的重建图像数据的显示等等都会占用大量的片内带宽资源。如果对输出的视频数据先进行压缩编码再写出,在读取视频数据时先进行解码处理再显示,将有效地降低数据在ASIC内部各模块之间传输的带宽。
传统的以压缩效率为设计目标的视频数据的压缩方法,自然会导致压缩后的数据的上下文之间具有很强的数据相关性,难以实现精确到宏块级别、甚至块级别等小尺度的视频数据的随机存取,因此难于应用于上述场合。
传统的以压缩效率为设计目标的视频数据的压缩方法,由于各块之间压缩数据相互关联,生成码流的尺寸也各不相同,难以实现各编码单元块之间的完全并行压缩和无缝码流装配。
发明内容
本发明提出了一种视频数据的压缩/解压缩方法及***,该方法和***能够优化多媒体ASIC数据读写环节的带宽,且可以实现对各压缩数据单元的随机读写以及压缩数据单元之间完全并行的压缩处理和无缝码流装配。
根据本发明的一方面,提出了一种视频数据的压缩方法,该方法包括:
1)将视频数据分割为多个具有统一规格的基本单元,每个所述基本单元包括至少一个数据块;
2)读取所述基本单元,
3)对读取的所述基本单元中的各个数据块按照各自的指定压缩预算并行地进行压缩编码,获得所述各个数据块的压缩数据,其中每个数据块的压缩数据的长度与该数据块的指定的压缩预算一致,
4)根据每个数据块的压缩预算确定每个数据块的压缩数据在输出缓冲器中的位置,从而将读取的基本单元中的各个数据块的压缩数据并行地分配到输出缓冲器中;
5)所述输出缓冲器串行输出所述各个数据块的压缩数据,从而获得读取的基本单元的压缩数据;以及
其中,在步骤3)中,针对每个数据块的压缩编码包括:
3.1)对数据块进行离散余弦变换得到系数矩阵,并对系数矩阵中的系数进行量化得到多个量化系数;以及
3.2)对所述多个量化系数逐个进行编码,并监控该数据块的压缩预算的使用状态,当已完成的量化系数的编码结果达到该数据块的压缩预算时,停止当前量化系数的编码,并丢弃未进行编码的量化系数,以已完成的量化系数的编码结果作为数据块的压缩数据。
优选地,在步骤3.1)中,对所述系数矩阵进行分层,并对各层中的系数采取不同的量化分辨率进行量化以获得量化系数。
优选地,步骤3.2)包括:
a)判断剩余的压缩预算是否为0,如果剩余的压缩预算为0,则立即停止对当前量化系数的编码,并输出已经完成的量化系数的编码结果作为数据块的压缩数据;如果剩余的压缩预算不为0,则进入步骤b);
b)判断剩余的压缩预算是否大于或等于当前量化系数的编码结果的长度,如果剩余的压缩预算大于或等于当前量化系数的编码结果的长度,则完成当前量化系数的编码,记录剩余的压缩预算,并返回步骤a);否则进入步骤c);
c)以剩余压缩预算的长度截断当前量化系数的编码结果,并输出所有完成的量化系数的编码结果作为数据块的压缩数据。
优选地,采用熵编码的方法对量化系数进行编码,并将符号位布置在表项前端。
优选地,以固定的压缩比例对基本单元进行压缩,得到具有统一尺寸的基本单元的压缩数据。
根据本发明的另一方面,提出了一种视频数据的压缩***,该***包括:
存储器,存储分割为多个具有统一规格的基本单元的视频数据,每个所述基本单元包括至少一个数据块;
输入寄存器,读取并保存所述基本单元中的各个数据块;
压缩装置,包括至少一个编码器,通过所述至少一个编码器对读取的所述基本单元中的各个数据块按照各自的指定压缩预算并行地进行压缩编码,获得所述各个数据块的压缩数据,其中每个数据块的压缩数据的长度与该数据块的指定的压缩预算一致;
预算分配控制器,为压缩装置中的每个编码器指定压缩预算,并根据该压缩预算确定每个数据块的压缩数据在输出缓冲器中的位置,从而将读取的基本单元中的各个数据块的压缩数据并行地分配到输出缓冲器中;
输出缓冲器,串行输出所述各个数据块的压缩数据,从而获得读取的基本单元的压缩数据;以及
其中,每个所述编码器对数据块进行离散余弦变换得到系数矩阵,并对系数矩阵中的系数进行量化得到多个量化系数;以及对每个数据块的所述多个量化系数逐个进行编码,同时监控该数据块的压缩预算的使用状态,当已完成的量化系数的编码结果达到压缩预算时,停止当前量化系数的编码,并丢弃未进行编码的量化系数,以已经完成的量化系数的编码结果作为数据块的压缩数据。
优选地,所述编码器对所述系数矩阵进行分层,并对各层中的系数采取不同的量化分辨率进行量化以获得量化系数。
优选地,所述编码器执行以下操作:
a)判断剩余的压缩预算是否为0,如果剩余的压缩预算为0,则立即停止对当前量化系数的编码,并输出已经完成的量化系数的编码结果作为数据块的压缩数据;如果剩余的压缩预算不为0,则进入步骤b);
b)判断剩余的压缩预算是否大于或等于当前量化系数的编码结果的长度,如果剩余的压缩预算大于或等于当前量化系数的编码结果的长度,则完成当前量化系数的编码,记录剩余的压缩预算,并返回步骤a);否则进入步骤c);
c)以剩余压缩预算的长度截断当前量化系数的编码结果,并输出所有完成的量化系数的编码结果作为数据块的压缩数据。
优选地,采用熵编码的方法对量化系数进行编码,并将符号位布置在表项前端。
优选地,以固定的压缩比例对基本单元进行压缩,得到具有统一尺寸的基本单元的压缩数据。
根据本发明的另一方面,提出了一种视频数据的解压缩方法,该方法包括:
1)从存储器中读取基本单元的压缩数据,所述基本单元的压缩数据是通过上述压缩方法对基本单元进行压缩而获得的;
2)根据所述基本单元的压缩数据中的每个数据块的压缩数据的相应的压缩预算确定每个数据块的压缩数据在输入缓冲器中的位置,从而将各个数据块的压缩数据并行地从输入缓冲器分配到各个解码器;
3)通过各个解码器对各个数据块的压缩数据并行地进行解压缩,获得所述各个数据块的解压缩数据;
4)输出所述各个数据块的解压缩数据,从而获得解压缩后的基本单元;
其中,在步骤3)中对每个数据块的解压缩包括:
3.1)对数据块的压缩数据中的量化系数的编码结果逐个进行解码,并监控该数据块的压缩预算的使用状态,当已完成对应于预定压缩预算的数据块的压缩数据的解码时,停止对该数据块的解码;
3.2)对完成解码的量化系数进行反量化得到系数矩阵,并进行离散余弦逆变换得到数据块的解压缩数据。
优选地,步骤3.1)包括:
a)判断剩余的压缩预算是否为0,如果剩余的压缩预算为0,则立即停止对该数据块的量化系数的解码;如果剩余的压缩预算不为0,则进入步骤b);
b)判断剩余的压缩预算是否大于或等于当前要解码的量化系数的编码结果长度,如果剩余的压缩预算是否大于或等于当前要解码的量化系数的编码结果长度,则对当前要解码的量化系数进行解码,记录剩余的压缩预算,并返回步骤a),否则进入步骤c);
c)判断剩余的压缩预算对应的编码结果是否包含符号位,如果包含符号位,则将该编码结果在编码过程中被丢弃的比特位以0补齐后进行解码,得到最后一个量化系数的解码结果,如果不包含符号位,则将该最后一个量化系数的解码结果设为0。
根据本发明的另一方面,提出了一种视频数据的解压缩***,该***包括:
存储器,存储基本单元的压缩数据,所述基本单元的压缩数据是通过权利要求5到8中任意一项所述的***对基本单元进行压缩而获得的;
输入缓冲器,读取并缓冲所述基本单元的压缩数据;
预算分配控制器,根据所述基本单元的压缩数据中的每个数据块的压缩数据的相应的压缩预算确定每个数据块的压缩数据在输入缓冲器中的位置,从而将各个数据块的压缩数据并行地从输入缓冲器分配到各个解码器;
解压缩装置,包括至少一个解码器,通过各个解码器对各个数据块的压缩数据并行地进行解压缩,获得所述各个数据块的解压缩数据并提供给输出寄存器;
输出寄存器,接收并输出所述各个数据块的解压缩数据,从而获得解压缩后的基本单元;
其中,每个所述解码器对数据块的压缩数据中的量化系数的编码结果逐个进行解码,并监控该数据块的压缩预算的使用状态,当已完成对应于预定压缩预算的数据块的压缩数据的解码时,停止对该数据块的解码,对完成解码的量化系数进行反量化得到系数矩阵,并进行离散余弦逆变换得到数据块的解压缩数据。
优选地,所述编码器执行以下操作:
a)判断剩余的压缩预算是否为0,如果剩余的压缩预算为0,则立即停止对该数据块的量化系数的解码;如果剩余的压缩预算不为0,则进入步骤b);
b)判断剩余的压缩预算是否大于或等于当前要解码的量化系数的编码结果长度,如果剩余的压缩预算是否大于或等于当前要解码的量化系数的编码结果长度,则对当前要解码的量化系数进行解码,记录剩余的压缩预算,并返回步骤a),否则进入步骤c);
c)判断剩余的压缩预算对应的编码结果是否包含符号位,如果包含符号位,则将该编码结果在编码过程中被丢弃的比特位以0补齐后进行解码,得到最后一个量化系数的解码结果,如果不包含符号位(步骤S503:否),则将该最后一个量化系数的解码结果设为0。
本发明的方法和***实现了可随机访问的视频数据压缩和解压缩。该方案可以有效降低多媒体ASIC设计中视频数据的传输带宽,提高了性能,同时可以节省保存该类数据的内存空间。
由于每个数据块的编解码相互独立进行,并具有预先已知的压缩预算分配信息。便于并行编解码和码流装配的高效实现方案,编码器的性能可以得到显著提高。
附图说明
图1显示了根据本发明的视频数据的压缩方法的一个实施例的流程图;
图2显示了根据本发明的视频数据的压缩方法中系数矩阵的分层量化的示意图;
图3显示了根据本发明的视频数据的压缩方法中对每个数据块的量化系数进行编码的一个实施例的流程;
图4显示了根据本发明的视频数据的压缩装置的一个实施例的结构图;
图5显示了根据本发明的视频数据的解压缩方法的一个实施例的流程图;
图6显示了根据本发明的视频数据的解压缩方法中对每个数据块的量化系数进行解码的一个实施例的流程图;
图7显示了根据本发明的视频数据的解压缩装置的一个实施例的结构图。
具体实施方式
本发明的原理在于,将视频数据分割为具有统一尺寸的基本单元(TILE),以该基本单元作为压缩或解压缩处理的基本对象,对每个基本单元独立地进行压缩或解压缩操作,使得每个基本单元的压缩或解压缩结果之间不具备相关性,从而实现对每个基本单元的随机访问。具有统一尺寸的每个基本单元可由多个数据块组成,在对每个基本单元进行压缩或解压缩的过程中,并行地对每个数据块进行压缩或解压缩,并为每个数据块设定压缩预算,从而实现对每个基本单元所包含的所有数据块的完全并行处理和无缝码流装配。
图1显示了根据本发明的视频数据的压缩方法的一个实施例的流程图,在该实施例中,该方法包括:
S101,将视频数据分割为多个具有统一规格的基本单元,每个所述基本单元包括至少一个数据块;
S102,读取所述基本单元,
S103,对读取的所述基本单元中的各个数据块按照各自的指定压缩预算并行地进行压缩编码,获得所述各个数据块的压缩数据,其中每个数据块的压缩数据的长度与该数据块的指定的压缩预算一致,
S104,根据每个数据块的压缩预算确定每个数据块的压缩数据在输出缓冲器中的位置,从而将读取的基本单元中的各个数据块的压缩数据并行地分配到输出缓冲器中;
S105,所述输出缓冲器串行输出所述各个数据块的压缩数据,从而获得读取的基本单元的压缩数据;以及
其中,在步骤S103中针对每个数据块的压缩编码包括:
S1031,对数据块进行离散余弦变换得到系数矩阵,并对系数矩阵中的系数进行量化得到多个量化系数;以及
S1032,对所述多个量化系数逐个进行编码,并监控该数据块的压缩预算的使用状态,当已完成的量化系数的编码结果达到该数据块的压缩预算时,停止当前量化系数的编码,并丢弃未进行编码的量化系数,以已完成的量化系数的编码结果作为数据块的压缩数据。
所述基本单元中的各个数据块的压缩预算的总和等于基本单元的压缩数据的长度,优选地,该压缩预算的总和与基本单元的数据长度之比(即基本单元的压缩比)为固定值,即得到的基本单元的压缩数据的长度固定且相等,从而实现基本单元的压缩数据的简单寻址和随机存取。
在该实施例中,由于每个基本单元具有统一的规格,并且对每个基本单元的压缩独立于其他基本单元,因此可实现对任意基本单元的随机存取。
优选地,所述基本单元中的数据块具有一定的排列顺序,这种排列顺序可取决于所采用的视频编解码标准等应用背景。在步骤S105中,可按照所述排列顺序串行地输出各个数据块的压缩数据,从而获得所述基本单元的压缩数据。
优选地,可根据实际应用需要来选择所述基本单元的统一规格,例如统一的尺寸,统一的数据结构等。并且可根据实际应用需要来选择每个基本单元所包含的至少一个数据块的数量、尺寸、排列顺序、和数据内容等。举例来说,对于符合H.264标准的视频数据,其常规的视频数据处理最小单元为4×4数据矩阵,因此可以4×4数据矩阵作为数据块,对于符合JPEG标准的视频数据来说则可以8×8数据矩阵作为数据块。每个基本单元可由任意数量的数据块组成,每个基本单元中的数据块可具有相同的尺寸或不同的尺寸。
在步骤S103中的通过编码器对各个数据块分别进行并行压缩编码的过程中,为每个数据块预先分配了压缩预算,也就是说,每个数据块经过相应的编码器编码之后所得的压缩数据的长度(或称为压缩预算)是预先指定的,优选地,每个数据块的压缩预算可以相同也可以不同。该实施例的优点是,由于每个数据块的压缩预算已被预先指定,即每个数据块的压缩数据的长度是可预知的。由于预先知道了每个数据块的压缩数据的长度,也就预先知道了每个数据块的压缩数据在输出缓冲器中的起点和终点,也就是说,每个数据块的压缩数据在输出缓冲器中的位置是可以预知的,因此可以自动地、无缝地、并行地将所有数据块的压缩数据分配到输出缓冲器中的相应位置,并由输出缓冲器串行输出。该实施例可实现压缩数据的无缝装配,大大提高该压缩方法的工作效率。
优选地,在步骤S1031中,可按照一定的原则对系数矩阵进行分层,并对各层中的系数采取不同的量化分辨率进行量化以获得量化系数。图2以4×4的系数矩阵为例,描述了对系数矩阵进行分层的示意图。图2的实施例是按照系数的重要性进行分层的,其中以不同的灰度表示了系数矩阵中具有不同重要性的系数,以系数0作为第一层,系数1-5作为第二层,系数6-9作为第三层,系数10-15作为第四层。由离散余弦变换(DCT)的原理可知,在一个4×4的数据块经过DCT变换后的到的4×4的系数矩阵中,系数0的信息量最大,其重要性也最高,系数矩阵中远离系数0的位置上的系数的重要性较低。因此,从第一层到第四层,系数的重要性逐渐降低,因此可为第一层指定较高的量化分辨率,进行较“细”的量化,并从第二层到第五层逐渐降低量化分辨率,进行较“粗”的量化,得到16个量化系数,从而在达到预定压缩预算的条件下,实现最佳的压缩效果。尽管图中以4×4的系数矩阵为例,事实上数据块以及系数矩阵的尺寸并不限于4×4,也可根据需要选择8×8或其他尺寸,系数矩阵的分层方式也不限于图2所示的特定方式,而可以是任意其他方式,只要其能实现对系数矩阵进行分层量化,以尽可能改善压缩效果的目的。
在步骤S1032中,对量化系数逐个进行编码,并在编码的过程中监控压缩预算的使用状态,并根据该状态判断是否进行当前量化系数的编码。可以通过记录已得到的编码结果占用的压缩预算,或记录可用的剩余的压缩预算等各种方式来监控压缩预算的使用状态,只要能够通过监控使得对每个数据块的编码结果等于预定的压缩预算即可。
图3描述了该过程的一个优选实施方式,该实施例采用了监控剩余的压缩预算的方式,当前数据块的预定的压缩预算与该数据块的目前已完成的编码结果的长度(即已经用掉的压缩预算)之差,即为剩余的压缩预算。在图3的实施例中,对每个待编码的当前量化系数进行编码之前,先判断剩余的压缩预算是否为0(步骤S301),如果剩余的压缩预算为0(步骤S301:是),则立即停止对当前量化系数的编码,并输出已经完成的量化系数的编码结果作为数据块的压缩数据(S302);如果剩余的压缩预算不为0(步骤S301:否),则判断剩余的压缩预算是否大于或等于当前量化系数的编码结果的长度(步骤S303),该编码结果的长度可以通过查找编码表中的对应表项得到;如果剩余的压缩预算大于或等于当前量化系数的编码结果的长度(步骤S303:是),则完成当前量化系数的编码,记录剩余的压缩预算,并返回步骤S301(S304);否则(步骤S303:否),则以剩余压缩预算的长度截断当前量化系数的编码结果,并输出所有完成的量化系数的编码结果作为数据块的压缩数据(步骤S305)。
由于图3所示的实施例采用了“截断”最后一个量化系数的编码结果的方法来保证预定的压缩预算,也就是说,在判断出最后一个量化系数的编码结果会导致压缩数据的总长度超出压缩预算时,仅保留最后一个量化系数的编码结果中排在前面的(例如高位)与压缩压缩预算长度相等的比特位,抛弃剩余的比特位,因此,若采用该实施例的方法,优选地,可在编码码表中将代表量化系数的符号位等重要信息的编码数据尽量排在表项的前面,以避免后续解码过程中最后一个量化系数的重建误差。
优选地,采用熵编码的方法对量化系数进行编码,以进一步提高压缩效果。更优选地,在设计熵编码码表时,可将符号位等重要信息在码字中尽量提前,以避免后续解码过程中在固定压缩预算条件下最后一个量化系数的重建误差。
图4显示了根据本发明的视频数据的压缩***的一个实施例的结构框图,在该实施例中,该***包括:
存储器401,存储分割为多个具有统一规格的基本单元的视频数据,每个所述基本单元包括至少一个数据块;
输入寄存器402(REG0,REG1,REG2),读取并保存所述基本单元中的各个数据块;
压缩装置403,包括至少一个编码器(ENC0,ENC1,ENC2),通过所述至少一个编码器(ENC0,ENC1,ENC2)对读取的所述基本单元中的各个数据块按照各自的指定压缩预算并行地进行压缩编码,获得所述各个数据块的压缩数据,其中每个数据块的压缩数据的长度与该数据块的指定的压缩预算一致;
预算分配控制器404,为压缩装置403中的每个编码器指定压缩预算,并根据该压缩预算确定每个数据块的压缩数据(BUD0,BUD1,BUD2)在输出缓冲器中的位置,从而将读取的基本单元中的各个数据块的压缩数据并行地分配到输出缓冲器中;
输出缓冲器405,串行输出所述各个数据块的压缩数据,从而获得读取的基本单元的压缩数据;以及
其中,每个所述编码器(ENC0,ENC1,ENC2)对数据块进行离散余弦变换得到系数矩阵,并对系数矩阵中的系数进行量化得到多个量化系数;以及对每个数据块的所述多个量化系数逐个进行编码,同时监控该数据块的压缩预算的使用状态,当已完成的量化系数的编码结果达到压缩预算时,停止当前量化系数的编码,并丢弃未进行编码的量化系数,以已经完成的量化系数的编码结果作为数据块的压缩数据。
优选地,所述编码器(ENC0,ENC1,ENC2)可按照一定的原则对系数矩阵进行分层,并对各层中的系数采取不同的量化分辨率进行量化以获得量化系数,从而进一步提高压缩效果。
优选地,编码器(ENC0,ENC1,ENC2)对量化系数逐个进行编码,并在编码的过程中监控压缩预算的使用状态,并根据该状态判断是否进行当前量化系数的编码。可以通过记录已得到的编码结果占用的压缩预算,或记录可用的剩余的压缩预算等各种方式来监控压缩预算的使用状态,只要能够通过监控使得对每个数据块的编码结果等于预定的压缩预算即可。优选地,编码器可采用图3所示的过程对数据块进行基于预定压缩比的压缩编码。
优选地,编码器采用熵编码的方法对量化系数进行编码,以进一步提高压缩效果。更优选地,在设计熵编码码表时,可将符号位信息在码字中尽量提前,以避免后续解码过程中在固定压缩预算条件下最后一个量化系数的重建误差。
图5显示了根据本发明的视频数据的解压缩方法的一个实施例的流程图,在该实施例中,该方法包括:
S501,从存储器中读取基本单元的压缩数据,所述基本单元的压缩数据是通过图1的实施例中的方法对基本单元进行压缩而获得的;
S502,根据所述基本单元的压缩数据中的每个数据块的压缩数据的相应的压缩预算确定每个数据块的压缩数据在输入缓冲器中的位置,从而将各个数据块的压缩数据并行地从输入缓冲器分配到各个解码器;
S503,通过各个解码器对各个数据块的压缩数据并行地进行解压缩,获得所述各个数据块的解压缩数据;
S504,输出所述各个数据块的解压缩数据,从而获得解压缩后的基本单元;
其中,在步骤S503中对每个数据块的解压缩包括:
S5031,对数据块的压缩数据中的量化系数的编码结果逐个进行解码,并监控该数据块的压缩预算的使用状态,当已完成对应于预定压缩预算的数据块的压缩数据的解码时,停止对该数据块的解码;
S5032,对完成解码的量化系数进行反量化得到系数矩阵,并进行离散余弦逆变换得到数据块的解压缩数据。
优选地,在步骤S5031中,逐一对数据块的压缩数据中的每个量化系数的编码结果进行解码,并在解码的过程中监控该数据块的压缩预算的使用状态,这里的压缩预算实际上就是数据块的压缩数据的长度。可以通过监控已完解码的压缩数据长度(已完成的压缩预算),或监控剩余的未解码的压缩数据长度(剩余的压缩预算)等各种方式来监控压缩预算的使用状态,只要能达到通过监控保证完成对预定压缩预算的压缩数据的解码即可。
图6描述了对每个数据块的量化系数进行解码的过程的一个优选实施方式,在图6的实施例中,对每个待解码当前量化系数进行解码之前,先判断剩余的压缩预算是否为0(步骤S601),如果剩余的压缩预算为0(步骤S601:是),则立即停止对该数据块的量化系数的解码(S602),以该数据块的目前完成的量化系数的解码结果作为后续反量化和逆变换的对象;如果剩余压缩预算不为0(S601:否),则判断剩余压缩预算是否大于或等于当前要解码的量化系数的编码结果长度(S603),如果大于或等于(S603:是),则对当前要解码的量化系数进行解码,记录剩余的压缩预算,并返回步骤S601(S604),如果小于(S603:否),再判断剩余的压缩预算对应的编码结果是否包含符号位或其他重要信息(S605),如果包含符号位或其他重要信息(步骤S605:是),则将该编码结果在编码过程中被丢弃的比特位以0补齐后进行解码,得到最后一个量化系数的解码结果(S606),如果不包含符号位(步骤605:否),则将该最后一个量化系数的解码结果设为0(S607)。完成最后一个量化系数的解码结果之后,以目前完成的该数据块的所有量化系数的解码结果作为后续反量化和逆变换的对象,从而得到数据块的解压缩结果。
由于在编码过程中,对于最后一个量化系数的编码结果可能进行了“截断”,因此在图6所示的实施例中,最后一个量化系数的编码结果可能是不完整的,其可能包含符号位或不包含符号位,对于不包含符号位的编码结果,由于其丢弃了重要信息因此将其解码结果设为0,对于包含符号位的编码结果,尽管数据不完整,仍可“以0补齐”在编码过程中被“截断”丢弃的比特位,并对补齐后的编码结果进行解码,作为最后一个量化系数的解码结果。因此,在编码码表中,可将量化系数的符号位等重要信息尽量排在表项的前面,以避免后续解码过程中最后一个量化系数的重建误差。
优选地,采用熵编码的方法对量化系数进行编码,以进一步提高压缩效果。更优选地,在设计熵编码码表时,可将符号位信息在码字中尽量提前,以避免后续解码过程中在固定压缩预算条件下最后一个量化系数的重建误差。
图7显示了根据本发明的视频数据的解压缩***的一个实施例的结构框图,在该实施例中,该***包括:
存储器701,存储基本单元的压缩数据,所述基本单元的压缩数据是通过图4的实施例中的***对基本单元进行压缩而获得的;
输入缓冲器702,读取并缓冲所述基本单元的压缩数据;
预算分配控制器703,根据所述基本单元的压缩数据中的每个数据块的压缩数据的相应的压缩预算确定每个数据块的压缩数据(BUD0,BUD1,BUD2)在输入缓冲器中的位置,从而将各个数据块的压缩数据并行地从输入缓冲器分配到各个解码器;
解压缩装置704,包括至少一个解码器(DEC0,DEC1,DEC2),通过各个解码器(DEC0,DEC1,DEC2)对各个数据块的压缩数据并行地进行解压缩,获得所述各个数据块的解压缩数据并提供给输出寄存器705;
输出寄存器705(REG0,REG1,REG2),接收并输出所述各个数据块的解压缩数据,从而获得解压缩后的基本单元;
其中,每个所述解码器(DEC0,DEC1,DEC2)对数据块的压缩数据中的量化系数的编码结果逐个进行解码,并监控该数据块的压缩预算的使用状态,当已完成对应于预定压缩预算的数据块的压缩数据的解码时,停止对该数据块的解码;对完成解码的量化系数进行反量化得到系数矩阵,并进行离散余弦逆变换得到数据块的解压缩数据。
优选地,在每个解码器中,逐一对数据块的压缩数据中的每个量化系数的编码结果进行解码,并在解码的过程中监控该数据块的压缩预算的使用状态,这里的压缩预算实际上就是数据块的压缩数据的长度。可以通过监控已完解码的压缩数据长度(已完成的压缩预算),或监控剩余的未解码的压缩数据长度(剩余的压缩预算)等各种方式来监控压缩预算的使用状态,只要能达到通过监控保证完成对预定压缩预算的压缩数据的解码即可。解码器可采用如图6所示的方式进行基于固定压缩预算的解码。
优选地,采用熵编码的方法对量化系数进行编码,以进一步提高压缩效果。更优选地,在设计熵编码码表时,可将符号位信息在码字中尽量提前,以避免后续解码过程中在固定压缩预算条件下最后一个量化系数的重建误差。
Claims (14)
1.一种视频数据的压缩方法,该方法包括:
1)将视频数据分割为多个具有统一规格的基本单元,每个所述基本单元包括至少一个数据块;
2)读取所述基本单元,
3)对读取的所述基本单元中的各个数据块按照各自的指定压缩预算并行地进行压缩编码,获得所述各个数据块的压缩数据,其中每个数据块的压缩数据的长度与该数据块的指定的压缩预算一致,
4)根据每个数据块的压缩预算确定每个数据块的压缩数据在输出缓冲器中的位置,从而将读取的基本单元中的各个数据块的压缩数据并行地分配到输出缓冲器中;
5)所述输出缓冲器串行输出所述各个数据块的压缩数据,从而获得读取的基本单元的压缩数据;以及
其中,在步骤3)中,针对每个数据块的压缩编码包括:
3.1)对数据块进行离散余弦变换得到系数矩阵,并对系数矩阵中的系数进行量化得到多个量化系数;以及
3.2)对所述多个量化系数逐个进行编码,并监控该数据块的压缩预算的使用状态,当已完成的量化系数的编码结果达到该数据块的压缩预算时,停止当前量化系数的编码,并丢弃未进行编码的量化系数,以已完成的量化系数的编码结果作为数据块的压缩数据。
2.根据权利要求1所述的视频数据的压缩方法,其中,在步骤3.1)中,对所述系数矩阵进行分层,并对各层中的系数采取不同的量化分辨率进行量化以获得量化系数。
3.根据权利要求1所述的视频数据的压缩方法,其中,步骤3.2)包括:
a)判断剩余的压缩预算是否为0,如果剩余的压缩预算为0,则立即停止对当前量化系数的编码,并输出已经完成的量化系数的编码结果作为数据块的压缩数据;如果剩余的压缩预算不为0,则进入步骤b);
b)判断剩余的压缩预算是否大于或等于当前量化系数的编码结果的长度,如果剩余的压缩预算大于或等于当前量化系数的编码结果的长度,则完成当前量化系数的编码,记录剩余的压缩预算,并返回步骤a);否则进入步骤c);
c)以剩余压缩预算的长度截断当前量化系数的编码结果,并输出所有完成的量化系数的编码结果作为数据块的压缩数据。
4.根据权利要求1到3中任意一项所述的视频数据的压缩方法,采用熵编码的方法对量化系数进行编码,并将符号位布置在表项前端。
5.根据权利要求1到3中任意一项所述的视频数据的压缩方法,以固定的压缩比例对基本单元进行压缩,得到具有统一尺寸的基本单元的压缩数据。
6.一种视频数据的压缩***,该***包括:
存储器,存储分割为多个具有统一规格的基本单元的视频数据,每个所述基本单元包括至少一个数据块;
输入寄存器,读取并保存所述基本单元中的各个数据块;
压缩装置,包括至少一个编码器,通过所述至少一个编码器对读取的所述基本单元中的各个数据块按照各自的指定压缩预算并行地进行压缩编码,获得所述各个数据块的压缩数据,其中每个数据块的压缩数据的长度与该数据块的指定的压缩预算一致;
预算分配控制器,为压缩装置中的每个编码器指定压缩预算,并根据该压缩预算确定每个数据块的压缩数据在输出缓冲器中的位置,从而将读取的基本单元中的各个数据块的压缩数据并行地分配到输出缓冲器中;
输出缓冲器,串行输出所述各个数据块的压缩数据,从而获得读取的基本单元的压缩数据;以及
其中,每个所述编码器对数据块进行离散余弦变换得到系数矩阵,并对系数矩阵中的系数进行量化得到多个量化系数;以及对每个数据块的所述多个量化系数逐个进行编码,同时监控该数据块的压缩预算的使用状态,当已完成的量化系数的编码结果达到压缩预算时,停止当前量化系数的编码,并丢弃未进行编码的量化系数,以已经完成的量化系数的编码结果作为数据块的压缩数据。
7.根据权利要求6所述的视频数据的压缩***,其中,所述编码器对所述系数矩阵进行分层,并对各层中的系数采取不同的量化分辨率进行量化以获得量化系数。
8.根据权利要求6所述的视频数据的压缩***,其中,所述编码器执行以下操作:
a)判断剩余的压缩预算是否为0,如果剩余的压缩预算为0,则立即停止对当前量化系数的编码,并输出已经完成的量化系数的编码结果作为数据块的压缩数据;如果剩余的压缩预算不为0,则进入步骤b);
b)判断剩余的压缩预算是否大于或等于当前量化系数的编码结果的长度,如果剩余的压缩预算大于或等于当前量化系数的编码结果的长度,则完成当前量化系数的编码,记录剩余的压缩预算,并返回步骤a);否则进入步骤c);
c)以剩余压缩预算的长度截断当前量化系数的编码结果,并输出所有完成的量化系数的编码结果作为数据块的压缩数据。
9.根据权利要求6到8中任意一项所述的视频数据的压缩***,采用熵编码的方法对量化系数进行编码,并将符号位布置在表项前端。
10.根据权利要求6到8中任意一项所述的视频数据的压缩***,以固定的压缩比例对基本单元进行压缩,得到具有统一尺寸的基本单元的压缩数据。
11.一种视频数据的解压缩方法,该方法包括:
1)从存储器中读取基本单元的压缩数据,所述基本单元的压缩数据是通过权利要求1到4中任意一项的方法对基本单元进行压缩而获得的;
2)根据所述基本单元的压缩数据中的每个数据块的压缩数据的相应的压缩预算确定每个数据块的压缩数据在输入缓冲器中的位置,从而将各个数据块的压缩数据并行地从输入缓冲器分配到各个解码器;
3)通过各个解码器对各个数据块的压缩数据并行地进行解压缩,获得所述各个数据块的解压缩数据;
4)输出所述各个数据块的解压缩数据,从而获得解压缩后的基本单元;
其中,在步骤3)中对每个数据块的解压缩包括:
3.1)对数据块的压缩数据中的量化系数的编码结果逐个进行解码,并监控该数据块的压缩预算的使用状态,当已完成对应于预定压缩预算的数据块的压缩数据的解码时,停止对该数据块的解码;
3.2)对完成解码的量化系数进行反量化得到系数矩阵,并进行离散余弦逆变换得到数据块的解压缩数据。
12.根据权利要求11所述的视频数据的解压缩方法,其中,步骤3.1)包括:
a)判断剩余的压缩预算是否为0,如果剩余的压缩预算为0,则立即停止对该数据块的量化系数的解码;如果剩余的压缩预算不为0,则进入步骤b);
b)判断剩余的压缩预算是否大于或等于当前要解码的量化系数的编码结果长度,如果剩余的压缩预算是否大于或等于当前要解码的量化系数的编码结果长度,则对当前要解码的量化系数进行解码,记录剩余的压缩预算,并返回步骤a),否则进入步骤c);
c)判断剩余的压缩预算对应的编码结果是否包含符号位,如果包含符号位,则将该编码结果在编码过程中被丢弃的比特位以0补齐后进行解码,得到最后一个量化系数的解码结果,如果不包含符号位,则将该最后一个量化系数的解码结果设为0。
13.一种视频数据的解压缩***,该***包括:
存储器,存储基本单元的压缩数据,所述基本单元的压缩数据是通过权利要求5到8中任意一项所述的***对基本单元进行压缩而获得的;
输入缓冲器,读取并缓冲所述基本单元的压缩数据;
预算分配控制器,根据所述基本单元的压缩数据中的每个数据块的压缩数据的相应的压缩预算确定每个数据块的压缩数据在输入缓冲器中的位置,从而将各个数据块的压缩数据并行地从输入缓冲器分配到各个解码器;
解压缩装置,包括至少一个解码器,通过各个解码器对各个数据块的压缩数据并行地进行解压缩,获得所述各个数据块的解压缩数据并提供给输出寄存器;
输出寄存器,接收并输出所述各个数据块的解压缩数据,从而获得解压缩后的基本单元;
其中,每个所述解码器对数据块的压缩数据中的量化系数的编码结果逐个进行解码,并监控该数据块的压缩预算的使用状态,当已完成对应于预定压缩预算的数据块的压缩数据的解码时,停止对该数据块的解码,对完成解码的量化系数进行反量化得到系数矩阵,并进行离散余弦逆变换得到数据块的解压缩数据。
14.根据权利要求13所述的所述的视频数据的解压缩***,其中,所述编码器执行以下操作:
a)判断剩余的压缩预算是否为0,如果剩余的压缩预算为0,则立即停止对该数据块的量化系数的解码;如果剩余的压缩预算不为0,则进入步骤b);
b)判断剩余的压缩预算是否大于或等于当前要解码的量化系数的编码结果长度,如果剩余的压缩预算是否大于或等于当前要解码的量化系数的编码结果长度,则对当前要解码的量化系数进行解码,记录剩余的压缩预算,并返回步骤a),否则进入步骤c);
c)判断剩余的压缩预算对应的编码结果是否包含符号位,如果包含符号位,则将该编码结果在编码过程中被丢弃的比特位以0补齐后进行解码,得到最后一个量化系数的解码结果,如果不包含符号位,则将该最后一个量化系数的解码结果设为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210277852.6A CN103581673A (zh) | 2012-08-07 | 2012-08-07 | 视频数据的压缩/解压缩方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210277852.6A CN103581673A (zh) | 2012-08-07 | 2012-08-07 | 视频数据的压缩/解压缩方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103581673A true CN103581673A (zh) | 2014-02-12 |
Family
ID=50052451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210277852.6A Pending CN103581673A (zh) | 2012-08-07 | 2012-08-07 | 视频数据的压缩/解压缩方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103581673A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984528A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 基于飞腾处理器平台的多线程并发数据压缩方法 |
CN105609087A (zh) * | 2015-12-23 | 2016-05-25 | 天津天地伟业数码科技有限公司 | 一种图像缩放器处理图像的方法 |
CN107566733A (zh) * | 2017-09-29 | 2018-01-09 | 深圳市聚宝汇科技有限公司 | 一种图片传输方法及*** |
CN110012292A (zh) * | 2018-01-05 | 2019-07-12 | 澜至电子科技(成都)有限公司 | 用于压缩视频数据的方法和装置 |
CN110990358A (zh) * | 2019-09-30 | 2020-04-10 | 咪咕文化科技有限公司 | 一种解压缩方法、电子设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1392725A (zh) * | 2001-06-18 | 2003-01-22 | 佳能株式会社 | 图象处理方法和设备、计算机程序、以及存储介质 |
CN101087417A (zh) * | 2006-06-06 | 2007-12-12 | 松下电器产业株式会社 | 图像编码装置 |
US20080165845A1 (en) * | 2006-12-21 | 2008-07-10 | Kismat Singh | Method of selecting quantizer values in video compression systems |
CN101686388A (zh) * | 2008-09-24 | 2010-03-31 | 国际商业机器公司 | 视频流编码装置及其方法 |
CN102724500A (zh) * | 2012-06-05 | 2012-10-10 | 沙基昌 | 一种视频数据的压缩/解压缩方法及*** |
-
2012
- 2012-08-07 CN CN201210277852.6A patent/CN103581673A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1392725A (zh) * | 2001-06-18 | 2003-01-22 | 佳能株式会社 | 图象处理方法和设备、计算机程序、以及存储介质 |
CN101087417A (zh) * | 2006-06-06 | 2007-12-12 | 松下电器产业株式会社 | 图像编码装置 |
US20080165845A1 (en) * | 2006-12-21 | 2008-07-10 | Kismat Singh | Method of selecting quantizer values in video compression systems |
CN101686388A (zh) * | 2008-09-24 | 2010-03-31 | 国际商业机器公司 | 视频流编码装置及其方法 |
CN102724500A (zh) * | 2012-06-05 | 2012-10-10 | 沙基昌 | 一种视频数据的压缩/解压缩方法及*** |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984528A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 基于飞腾处理器平台的多线程并发数据压缩方法 |
CN105609087A (zh) * | 2015-12-23 | 2016-05-25 | 天津天地伟业数码科技有限公司 | 一种图像缩放器处理图像的方法 |
CN105609087B (zh) * | 2015-12-23 | 2018-11-16 | 天地伟业技术有限公司 | 一种图像缩放器处理图像的方法 |
CN107566733A (zh) * | 2017-09-29 | 2018-01-09 | 深圳市聚宝汇科技有限公司 | 一种图片传输方法及*** |
CN110012292A (zh) * | 2018-01-05 | 2019-07-12 | 澜至电子科技(成都)有限公司 | 用于压缩视频数据的方法和装置 |
CN110990358A (zh) * | 2019-09-30 | 2020-04-10 | 咪咕文化科技有限公司 | 一种解压缩方法、电子设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102724500B (zh) | 一种视频数据的压缩/解压缩方法及*** | |
RU2503138C2 (ru) | Кодирование встраиваемой графики для изображений с разреженными гистограммами | |
CN101420614B (zh) | 一种混合编码与字典编码整合的图像压缩方法及装置 | |
CN103581673A (zh) | 视频数据的压缩/解压缩方法及*** | |
CN103404141A (zh) | 使用变换的视频编码和解码 | |
US9510008B2 (en) | Video decoder memory bandwidth compression | |
CN103262534A (zh) | 改进熵编码和解码的方法及装置 | |
KR20200052201A (ko) | 뉴럴 네트워크 활성화 맵의 손실 압축 | |
CN102845065A (zh) | 用于重排并行熵编码和解码的方法和设备 | |
CN101751440A (zh) | 一种数据压缩/解压缩方法及其装置 | |
CN102939719A (zh) | 用于在二进制熵编码和解码中减少源的方法和设备 | |
CN103581680A (zh) | 由量化控制改良解码器性能的方法与*** | |
CN103188494A (zh) | 跳过离散余弦变换对深度图像编码/解码的设备和方法 | |
CN103841424A (zh) | 随机存取存储器中压缩数据的***及方法 | |
CN101366282A (zh) | 用于以组为基础编码和解码视频信号的方法和设备 | |
CN103716634A (zh) | 使用误差平面编码的数据压缩方法及装置 | |
US20120022861A1 (en) | Parallel entropy encoder and parallel entropy decoder | |
CN101546434A (zh) | 一种bmp图片文件的压缩、解压缩方法及*** | |
CN1725858A (zh) | 用于控制比特率的设备和方法 | |
CN102238376B (zh) | 图像处理***及方法 | |
CN102740075B (zh) | 一种视频数据的压缩/解压缩方法及*** | |
CN103581675A (zh) | 视频数据的压缩/解压缩方法及*** | |
US9948928B2 (en) | Method and apparatus for encoding an image | |
CN202907104U (zh) | 视频数据的压缩和解压缩*** | |
CN102740074A (zh) | 一种视频数据的压缩/解压缩方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140212 |