一种图像的帧压缩方法、图像的解压缩方法及装置与流程

文档序号:15523776发布日期:2018-09-25 20:15阅读:237来源:国知局

本发明涉及图像处理技术领域,尤其涉及一种图像的帧压缩方法、图像的解压缩方法及装置。



背景技术:

帧压缩(Frame Compress)是嵌入式硬件系统中各个图像处理设备(master)对图像数据进行无损压缩的一种方式。从帧缓存(buffer)中读取图像数据进行压缩,然后将压缩后的图像数据存入双倍速率同步动态随机存储器(DDR),通过压缩使得系统中各个图像处理master从DDR中存取图像数据的读写带宽减少。

嵌入式系统中涉及到帧压缩操作的图像处理master有视频编解码器(Video Codec)、图像处理器(GPU)、图像信号处理器(ISP)和显示引擎(Display Engine)。其中,视频编解码器和图像处理器按块(block)为单位存取图像数据,图像信号处理器和显示引擎按行(line)为单位存取图像数据。

现有的帧压缩方式中,采用熵编码法进行编码,例如Huffman编码法等等。熵编码法以块为单位,进行图像编码,因此在编解码端均需要消耗大量缓存等硬件资源,且编码效率较低。



技术实现要素:

本发明的目的是提供一种图像的帧压缩方法、图像的解压缩方法及装置,以解决现有帧压缩方式的编码效率低,需要消耗大量硬件资源的问题。

本发明的目的是通过以下技术方案实现的:

一种图像的帧压缩方法,包括:将图像的第一行像素点的像素值作为第一行像素点的编码数据发送,并发送当前行像素点未压缩的指示信息;从图像的第二行像素点开始,逐行进行如下操作:

根据前一行像素点的像素值,确定当前行各个像素点的预测像素值;

确定当前行各个像素点的预测像素值与其像素值的差值;

确定当前行各个像素点的比特深度,所述比特深度是指用于表示像素点的所述差值需要占用的比特位数;

对当前行像素点进行分组,并确定每组像素点的比特长度,所述比特长度为一组像素点中的最大比特深度与该组像素点的数量的乘积;

如果各组像素点的比特长度之和不大于比特长度阈值,将每组像素点的比特深度和所述差值作为该组像素点的压缩数据打包为压缩数据包,所述比特长度阈值为用于表示当前行像素点的像素值需要占用的比特位数;发送当前行的压缩数据包和指示当前行像素点压缩的指示信息;

如果各组像素点的比特长度之和大于比特长度阈值,将当前行像素点的像素值作为当前行的编码数据发送,并发送指示当前行像素点未压缩的指示信息。

优选的,根据前一行像素点的像素值,确定当前行各个像素点的预测像素值,包括:根据前一行像素点的像素值,按照至少两种预测模式确定当前行各个像素点的预测像素值;

确定当前行各个像素点的预测像素值与像素值的差值,包括:确定当前行各个像素点按照不同预测模式确定的预测像素值与像素值的差值;

确定当前行各个像素点的比特深度,包括:确定当前行各个像素点在不同预测模式下的比特深度;

确定每组像素点的比特长度,包括:确定每组像素点在不同预测模式下的比特长度;

如果各组像素点的比特长度之和不大于比特长度阈值,将每组像素点的比特深度和所述差值作为该组像素点的压缩数据打包为压缩数据包,包括:选择不同预测模式下各组像素点的比特长度之和的最小值,如果所述最小值不大于比特长度阈值,将每组像素点在最小预测模式下的比特深度和所述差值作为该组像素点的压缩数据打包为压缩数据包,所述最小预测模式为所述最小值对应的预测模式。

基于上述任意帧压缩方法实施例,优选的,对当前行像素点进行分组,并确定每组像素点的比特长度,包括:按照至少两种分组模式对当前行像素点进行分组,并确定每种分组模式下每组像素点的比特长度;

如果各组像素点的比特长度之和不大于比特长度阈值,将每组像素点的比特深度和所述差值作为该组像素点的压缩数据打包为压缩数据包,包括:选择不同分组模式下各组像素点的比特长度之和的最小值,如果所述最小值不大于比特长度阈值,将最小分组模式下的每组像素点的比特深度和所述差值作为该组像素点的压缩数据打包为压缩数据包,所述最小分组模式为所述最小值对应的分组模式。

优选的,如果各组像素点的比特长度之和不大于比特长度阈值,发送当前行的压缩数据包和指示当前行像素点压缩的指示信息,包括:

发送当前行的压缩数据包、指示当前行像素点压缩的指示信息、指示当前行采用的预测模式的指示信息和指示当前行采用的分组模式的指示信息。

一种图像的解压缩方法,包括,对图像的各行像素点,逐行进行如下操作:

如果接收到指示当前行像素点未压缩的指示信息,将接收到的当前行的像素点的编码数据作为当前行的像素点的像素值;

如果接收到指示当前行像素点压缩的指示信息,根据当前行各个压缩数据包中携带的各组像素点的比特深度,分别从当前行各个压缩数据包中获取当前行各个像素点的预测像素值与像素值的差值;根据所述差值和前一行像素点的像素值,确定当前行各个像素点的像素值,所述比特深度是指用于表示像素点的所述差值需要占用的比特位数。

优选的,根据所述差值和前一行像素点的像素值,确定当前行各个像素点的像素值,包括:

根据接收到的指示当前行采用的预测模式的指示信息,确定当前行采用的预测模式;

按照所述预测模式,根据前一行像素点的像素值,确定当前行各个像素点的预测像素值;

根据所述差值和所述预测像素值,确定当前行像素点的各个像素点的像素值。

基于上述任意解压缩方法实施例,优选的,分别从当前行各个压缩数据包中获取当前行各个像素点的预测像素值与像素值的差值之前,该方法还包括:

根据接收到的指示当前行采用的分组模式的指示信息,确定当前行采用的分组模式;

按照当前行采用的分组模式,获取当前行像素点的各个压缩数据包。

基于与方法同样的发明构思,本发明实施例还提供一种图像的帧压缩装置,包括:

第一压缩处理模块,用于将图像的第一行像素点的像素值作为第一行像素点的编码数据发送,并发送当前行像素点未压缩的指示信息;

第二压缩处理模块,用于从图像的第二行像素点开始,逐行进行如下操作:

根据前一行像素点的像素值,确定当前行各个像素点的预测像素值;

确定当前行各个像素点的预测像素值与其像素值的差值;

确定当前行各个像素点的比特深度,所述比特深度是指用于表示像素点的所述差值需要占用的比特位数;

对当前行像素点进行分组,并确定每组像素点的比特长度,所述比特长度为一组像素点中的最大比特深度与该组像素点的数量的乘积;

如果各组像素点的比特长度之和不大于比特长度阈值,将每组像素点的比特深度和所述差值作为该组像素点的压缩数据打包为压缩数据包,所述比特长度阈值为用于表示当前行像素点的像素值需要占用的比特位数;发送当前行的压缩数据包和指示当前行像素点压缩的指示信息;

如果各组像素点的比特长度之和大于比特长度阈值,将当前行像素点的像素值作为当前行的编码数据发送,并发送指示当前行像素点未压缩的指示信息。

优选的,第二压缩处理模块用于:

根据前一行像素点的像素值,按照至少两种预测模式确定当前行各个像素点的预测像素值;

确定当前行各个像素点按照不同预测模式确定的预测像素值与像素值的差值;

确定当前行各个像素点在不同预测模式下的比特深度;

确定每组像素点在不同预测模式下的比特长度;

如果各组像素点的比特长度之和不大于比特长度阈值,选择不同预测模式下各组像素点的比特长度之和的最小值,如果所述最小值不大于比特长度阈值,将每组像素点在最小预测模式下的比特深度和所述差值作为该组像素点的压缩数据打包为压缩数据包,所述最小预测模式为所述最小值对应的预测模式;

如果各组像素点的比特长度之和大于比特长度阈值,将当前行像素点的像素值作为当前行的编码数据发送,并发送指示当前行像素点未压缩的指示信息。

基于上述任意装置实施例,优选的,对当前行像素点进行分组,并确定每组像素点的比特长度时,所述第二压缩处理模块用于:按照至少两种分组模式对当前行像素点进行分组,并确定每种分组模式下每组像素点的比特长度;

如果各组像素点的比特长度之和不大于比特长度阈值,将每组像素点的比特深度和所述差值作为该组像素点的压缩数据打包为压缩数据包时,所述第二压缩处理模块用于:选择不同分组模式下各组像素点的比特长度之和的最小值,如果所述最小值不大于比特长度阈值,将最小分组模式下的每组像素点的比特深度和所述差值作为该组像素点的压缩数据打包为压缩数据包,所述最小分组模式为所述最小值对应的分组模式。

基于上述任意装置实施例,优选的,如果各组像素点的比特长度之和不大于比特长度阈值,发送当前行的压缩数据包和指示当前行像素点压缩的指示信息时,所述第二压缩处理模块用于:

发送当前行的压缩数据包、指示当前行像素点压缩的指示信息、指示当前行采用的预测模式的指示信息和指示当前行采用的分组模式的指示信息。

基于与方法同样的发明构思,本发明实施例还提供一种图像的解压缩装置,包括:

第一解压缩处理模块,用于接收到指示当前行像素点未压缩的指示信息时,将接收到的当前行的像素点的编码数据作为当前行的像素点的像素值;

第二解压缩处理模块,用于接收到指示当前行像素点压缩的指示信息时,根据当前行各个压缩数据包中携带的各组像素点的比特深度,分别从当前行各个压缩数据包中获取当前行各个像素点的预测像素值与像素值的差值;根据所述差值和前一行像素点的像素值,确定当前行各个像素点的像素值,所述比特深度是指用于表示像素点的所述差值需要占用的比特位数。

优选的,根据所述差值和前一行像素点的像素值,确定当前行各个像素点的像素值时,所述第二解压缩处理模块用于:

根据接收到的指示当前行采用的预测模式的指示信息,确定当前行采用的预测模式;

按照所述预测模式,根据前一行像素点的像素值,确定当前行各个像素点的预测像素值;

根据所述差值和所述预测像素值,确定当前行像素点的各个像素点的像素值。

基于上述任意装置实施例,优选的,分别从当前行各个压缩数据包中获取当前行各个像素点的预测像素值与像素值的差值之前,所述第二解压缩处理模块还用于:

根据接收到的指示当前行采用的分组模式的指示信息,确定当前行采用的分组模式;

按照当前行采用的分组模式,获取当前行像素点的各个压缩数据包。

本发明实施例提供的技术方案,以行为单位进行帧压缩,在压缩过程中仅需要一个行缓存用来保存上一行像素点的像素值,因此降低了对硬件资源的消耗。且在当前行的各组像素点的比特长度之和不大于比特长度阈值时,将每组像素点的比特深度和上述差值作为该组像素点的压缩数据打包为压缩数据包。由于计算比特深度的运算量远远小于熵编码法的运算量,因此本发明实施例提供的帧压缩方法的编码效率高。

附图说明

图1为本发明实施例提供的一种帧压缩方法流程图;

图2为本发明实施例提供的一种解压缩方法流程图;

图3为本发明实施例提供的帧压缩装置示意图;

图4为本发明实施例提供的解压缩装置示意图。

具体实施方式

本发明实施例的核心思想在于,以行为单位,对图像进行帧压缩。对图像的第一行像素点不进行压缩,直接将各个像素点的像素值作为该行像素点的编码数据(即压缩数据),从第二行像素点开始,将各个像素点的比特深度和差值作为压缩数据进行打包。

下面将结合附图,对本发明实施例提供的技术方案进行详细描述。

本发明实施例提供的图像的帧压缩方法,将图像的第一行像素点的像素值作为第一行像素点的编码数据发送,并发送当前行像素点未压缩的指示信息;从图像的第二行像素点开始,逐行进行如图1所示的操作,具体如下:

步骤100、根据前一行像素点的像素值,确定当前行各个像素点的预测像素值。

步骤110、确定当前行各个像素点的预测像素值与其像素值的差值。

步骤120、确定当前行各个像素点的比特深度。

其中,比特深度是指用于表示像素点的所述差值需要占用的比特位数。

步骤130、对当前行像素点进行分组,并确定每组像素点的比特长度。

其中,比特长度为一组像素点中的最大比特深度与该组像素点的数量的乘积。

步骤140、如果各组像素点的比特长度之和不大于比特长度阈值,将每组像素点的比特深度和上述差值作为该组像素点的压缩数据打包为压缩数据包,并发送当前行的压缩数据包和指示当前行像素点压缩的指示信息。

步骤150、如果各组像素点的比特长度之和大于比特长度阈值,将当前行像素点的像素值作为当前行的编码数据发送,并发送指示当前行像素点未压缩的指示信息。

即,如果各组像素点的比特长度之和大于比特长度阈值,则不对该行像素点进行帧压缩处理。

其中,比特长度阈值为用于表示当前行像素点的像素值需要占用的比特位数。

本发明实施例提供的技术方案,以行为单位进行帧压缩,在压缩过程中仅需要一个行缓存用来保存上一行像素点的像素值,因此降低了对硬件资源的消耗。且在当前行的各组像素点的比特长度之和不大于比特长度阈值时,将每组像素点的比特深度和上述差值作为该组像素点的压缩数据打包为压缩数据包。由于计算比特深度的运算量远远小于熵编码法的运算量,因此本发明实施例提供的帧压缩方法的编码效率高。

本发明实施例中,确定当前行各个像素点的预测像素值的预测模式有多种,下面例举其中几种。

预测模式一:

该预测模式又可以称为垂直预测模式。即将前一行第n个像素点的像素值作为当前行第n个像素点的预测像素值。

预测模式二:

该预测模式又可以称为均值预测模式。即将前一行第a~b个像素点的像素值的均值作为当前行第c个像素点的预测像素值。其中,b>a,b≥c且c≥a。

预测模式三:

该预测模式又可以称为左上预测模式。即将前一行第a~b个像素点的像素值进行加权运算后作为当前行第b个像素点的像素值。其中,b>a。

预测模式四:

该预测模式又可以称为右上预测模式。即将前一行第a~b个像素点的像素值进行加权运算后作为当前行第a个像素点的像素值。其中,b>a。

本发明实施例提供的技术方案,可以采用至少一种预测模式确定当前行各个像素点的预测像素值。

如果采用N(N为不小于2的整数)种预测模式确定当前行各个像素点的预测像素值,对于每个像素点,就会得到N个预测像素值。相应的,在确定当前行各个像素点的预测像素值与像素值的差值时,对于每个像素点,就会得到N个差值;在确定当前行各个像素点的比特深度时,对于每个像素点,就会得到N个比特深度;在确定每组像素点的比特长度时,对于每组像素点,就会得到N个比特长度;将每组像素点的比特深度作为该组像素点的压缩数据打包为压缩数据包时,具体是选择不同预测模式下各组像素点的比特长度之和的最小值,将每组像素点在最小预测模式下的比特深度作为该组像素点的压缩数据打包为压缩数据包,其中,最小预测模式为所述最小值对应的预测模式。

本发明实施例中,可以按照至少一种分组模式对当前行像素点进行分组。

其中,不同分组模式之间的区别在于分组数不同。

如果按照至少两种分组模式对当前行像素点进行分组,则确定每种分组模式下每组像素点的比特长度;选择不同分组模式下各组像素点的比特长度之和的最小值,如果该最小值不大于设定阈值,将最小分组模式下的每组像素点的比特深度作为该组像素点的压缩数据打包为压缩数据包,其中,最小分组模式为该最小值对应的分组模式。

本发明实施例中,如果采用两种或两种以上的预测模式确定像素点的预测像素值,并按照两种或者两种以上的分组模式对一行像素点进行分组,根据最终得到的一行像素点在不同预测模式和分组模式下的比特长度,选择最优的预测模式和分组模式(即最小预测模式和最小分组模式),从而提高了压缩性能。

相应的,在发送当前行的压缩数据包和指示当前行像素点压缩的指示信息时,还发送指示当前行采用的预测模式的指示信息和/或指示当前行采用的分组模式的指示信息。

本发明实施例提供的技术方案尤其适用于以行为单位进行读写的应用场景。例如,ISP的raw数据读写,Display Engine的数据读写等等。

本发明实施例还提供一种图像的解压缩方法,对图像的各行像素点,逐行执行图2所示的操作,具体如下:

步骤200、如果接收到指示当前行像素点未压缩的指示信息,将接收到的当前行的像素点的编码数据作为当前行的像素点的像素值。

步骤210、如果接收到指示当前行像素点压缩的指示信息,根据当前行各个压缩数据包中携带的各组像素点的比特深度,分别从当前行各个压缩数据包中获取当前行各个像素点的预测像素值与其像素值的差值;根据所述差值和前一行像素点的像素值,确定当前行各个像素点的像素值,所述比特深度是指用于表示像素点的所述差值需要占用的比特位数。

本发明实施例提供的技术方案,以行为单位进行图像的解压缩,在解压缩过程中仅需要一个行缓存用来保存上一行像素点的像素值,因此降低了对硬件资源的消耗。且根据当前行的各组像素点的比特长度解压缩得到像素点的像素值,其运算量远远小于熵编码法的运算量,因此本发明实施例提供的图像解压缩方法的编码效率高。

优选的,根据所述差值和前一行像素点的像素值,确定当前行各个像素点的像素值,包括:

根据接收到的指示当前行采用的预测模式的指示信息,确定当前行采用的预测模式;

按照所述预测模式,根据前一行像素点的像素值,确定当前行各个像素点的预测像素值;

根据所述差值和所述预测像素值,确定当前行像素点的各个像素点的像素值。

基于上述任意解压缩方法实施例,优选的,分别从当前行各个压缩数据包中获取当前行各个像素点的预测像素值与像素值的差值之前,该方法还包括:

根据接收到的指示当前行采用的分组模式的指示信息,确定当前行采用的分组模式;

按照当前行采用的分组模式,获取当前行像素点的各个压缩数据包。

下面以ISP的帧压缩处理为例,对本发明实施例提供的技术方案进行详细描述。

该实施例中,图像的每行有32个像素点,有四种预测模式,四种分组模式。其中,这四种预测模式分别为上述的垂直预测模式、均值预测模式、左上预测模式和右上预测模式;这四种分组模式分别为:将一行像素点均分为8组,将一行像素点均分为默认的分组模式为4组,将一行像素点均分为2组,将一行像素点分为一组。其中默认分组模式为将一行像素点均分为4组。具体处理方式如下。

依次读取图像的一行像素点的raw数据。如果是第一行像素点,则将该行像素点的raw数据作为编码数据发送至DDR保存,并将指示该行像素点未压缩的指示信息发送至DDR保存,如果非第一行像素点,按照如下操作进行:

分别采用上述四种预测方式得到当前行的各个像素点的预测数据(即预测像素值),进而计算得到不同预测模式下,各个像素点的预测数据与raw数据的差值;

确定不同预测模式下,各个像素点的比特深度;

按照上述四种分组模式,分别对当前行像素点进行分组;

分别计算各个分组模式、各个预测模式下,各组像素点的比特长度;

其中,每个预测模式下,一组像素点有四个比特长度,分别对应不同的预测模式。

计算各个分组模式下、各个预测模式下,各组像素点的比特长度之和;

将比特长度之和的最小值与比特长度阈值进行比较,如果该最小值不大于比特长度阈值,则按照该最小值对应的分组模式和预测模式对当前行像素点进行打包处理,否则,将当前行像素点的raw值作为编码数据发送至DDR保存,并将指示当前行像素点的raw值未压缩的指示信息发送至DDR保存。

假设最小值对应的分组模式为将一行像素点分为4组,对应的预测模式为垂直预测模式。以第一组的8个像素点为例,raw数据与预测数据的差值分别为(5、1、0、2、4、1、7、6),比特深度分别为(3、1、1、2、3、1、3、3)。

该组像素点的最大比特深度为3,像素点数量为8,因此,该组像素点的比特长度为3*8=24bit。

其中,在计算比特深度时,考虑到压缩效率,如果比特深度超过某一阈值(例如6bit),可以认为该差值需要使用raw压缩方式(也就是不进行压缩),所以在计算比特深度的时候,如果比特深度超过6,则直接用7表示,这样,比特深度这个参数信息用3bit描述就够了(3个bit可以表示的二进制范围000~111,分别表示bit深度从0~7)。

基于与方法同样的发明构思,本发明实施例还提供一种图像的帧压缩装置,如图3所示,包括:

第一压缩处理模块301,用于将图像的第一行像素点的像素值作为第一行像素点的编码数据发送,并发送当前行像素点未压缩的指示信息;

第二压缩处理模块302,用于从图像的第二行像素点开始,逐行进行如下操作:

根据前一行像素点的像素值,确定当前行各个像素点的预测像素值;

确定当前行各个像素点的预测像素值与其像素值的差值;

确定当前行各个像素点的比特深度,所述比特深度是指用于表示像素点的所述差值需要占用的比特位数;

对当前行像素点进行分组,并确定每组像素点的比特长度,所述比特长度为一组像素点中的最大比特深度与该组像素点的数量的乘积;

如果各组像素点的比特长度之和不大于比特长度阈值,将每组像素点的比特深度和所述差值作为该组像素点的压缩数据打包为压缩数据包,所述比特长度阈值为用于表示当前行像素点的像素值需要占用的比特位数;发送当前行的压缩数据包和指示当前行像素点压缩的指示信息;

如果各组像素点的比特长度之和大于比特长度阈值,将当前行像素点的像素值作为当前行的编码数据发送,并发送指示当前行像素点未压缩的指示信息。

基于与方法同样的发明构思,本发明实施例还提供一种图像的解压缩装置,如图4所示,包括:

第一解压缩处理模块401,用于接收到指示当前行像素点未压缩的指示信息时,将接收到的当前行的像素点的编码数据作为当前行的像素点的像素值;

第二解压缩处理模块402,用于接收到指示当前行像素点压缩的指示信息时,根据当前行各个压缩数据包中携带的各组像素点的比特深度,分别从当前行各个压缩数据包中获取当前行各个像素点的预测像素值与像素值的差值;根据所述差值和前一行像素点的像素值,确定当前行各个像素点的像素值,所述比特深度是指用于表示像素点的所述差值需要占用的比特位数。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1