图像压缩方法与流程

文档序号:15233194发布日期:2018-08-21 19:56阅读:390来源:国知局
本发明是有关于一种编码方法,且特别是有关于一种图像压缩方法。
背景技术
::随着4k高分辨率与10比特色深码流的出现,视频编解码器(videocodec)的数据输送量显著增加,可高达3gb/s,硬件的频宽显得更加捉襟见肘。因此,对图像帧进行存储压缩可以大大减少图像的数据访问量,提高硬件频宽利用率。现有的帧存储压缩演算法包括有损压缩(lossycompression)以及无损压缩(losslesscompression)。使用无损压缩,原文件的每一个数据在解压缩后仍然还在,所有的资讯能够完全恢复。有损压缩一般会用于录影或声音,多数用户感觉不出来一定量的信息损失。技术实现要素:本发明提供一种图像压缩方法,改善现有的帧存储压缩演算法,减小解码的频宽需求,提高硬件实现的并行度。本发明的图像压缩方法,包括:以第一区块、第二区块及第三区块分别作为图像的亮度分量、第一色度分量及第二色度分量的压缩单位;分别依据多个候选预测模式的预测结果,对第一区块的亮度分量、第二区块的第一色度分量及第三区块的第二色度分量进行压缩编码计算,而获得与各候选预测模式对应的第一区块、第二区块及第三区块加总后的预压缩数据尺寸,以决定预测模式;倘若预测模式的预压缩数据尺寸大于或等于第一区块、第二区块及第三区块各分量加总后的原始数据尺寸,则不对第一区块、第二区块及第三区块的各分量进行压缩;以及倘若预压缩数据尺寸小于原始数据尺寸,则以预测模式对第一区块、第二区块及第三区块的各分量进行半定长编码。在本发明的一实施例中,进行半定长编码的步骤,包括:将第一区块、第二区块以及第三区块分别重新划分,而获得多个分组,其中每一分组包括多个小块,每一小块的尺寸相同;基于每一小块的多个像素对应的多个残差,选择多个残差中的绝对值最大值作为每一小块的代表数值;获得代表数值对应的二值化模式;基于每一小块对应的二值化模式,确定每一分组对应的编组模式以及需要编码的二值化模式;以及组合第一区块、第二区块以及第三区块三者的预测种子数据、预测模式、编组模式、需要编码的二值化模式以及每一分量的残差编码数据,而获得压缩码流。在本发明的一实施例中,所述图像压缩方法,更包括:建立二值化模式表。二值化模式表包括多个二值化模式,各二值化模式对应至一个数值范围、占用长度以及编码规则。获得代表数值对应的二值化模式的步骤包括:查找二值化模式表,以确定代表数值所位于的数值范围,进而获得对应的二值化模式、占用长度以及编码规则。在本发明的一实施例中,所述图像压缩方法,更包括:基于第一区块、第二区块以及第三区块各自包括的分组,建立编组表。所述编组表包括多个编组类型,每一编组类型对应至一种编组模式以及对应的需要编码的二值化模式。基于每一小块对应的二值化模式,确定每一分组对应的编组模式以及需要编码的二值化模式的步骤,包括:查找编组表,以获得每一分组对应的编组模式以及需要编码的二值化模式。在本发明的一实施例中,所述编码规则为二进制补码。在本发明的一实施例中,所述编码规则为正负符号位加上残差绝对值二进值。在本发明的一实施例中,自多个候选预测模式决定预测模式的步骤包括:自多个预压缩数据尺寸中选择最小值对应的候选测试模式,以作为预测模式。在本发明的一实施例中,对第一区块的亮度分量、第二区块的第一色度分量及第三区块的第二色度分量进行压缩编码计算的步骤包括:将第一区块、第二区块以及第三区块分别划分为多个分组;基于对应的候选预测模式的预测结果获得每一分组的每一小块的多个残差,以选择每一小块的代表数值;获得代表数值对应的二值化模式及占用长度;基于每一小块对应的二值化模式,确定每一分组对应的编组模式以及需要编码的二值化模式;以及至少根据需要编码的二值化模式的数量及所述占用长度计算预压缩数据尺寸。在本发明的一实施例中,所述亮度分量为y分量,所述第一色度分量为cb分量,所述第二色度分量为cr分量。所述预测数据尺寸与所述原始数据尺寸为字节数、字元数以及比特数中的其中一个。在本发明的一实施例中,所述预测模式为水平预测模式、垂直预测模式、水平平均预测模式以及垂直平均预测模式其中一个。基于上述,可保证每一个宏块(macroblock)压缩后的数据量不会多于原数据量,进而改善现有的帧存储压缩演算法,减小解码的频宽需求,提高硬件实现的并行度。为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。附图说明图1是依照本发明一实施例的图像压缩方法的流程图。图2是依照本发明一实施例的半定长编码的流程图。图3是依照本发明一实施例的区块划分的示意图。图4是依照本发明一实施例的编组类型的示意图。附图标记说明y、cb、cr:分量g1~g6:分组y10~y13、b0~b3、r0~r3:小块a~d:残差m1~m8、n1~n8:编组类型sy、scb、scr:预测种子s105~s125:图像压缩方法各步骤s205~s225:半定长编码各步骤具体实施方式在底下实施例中,是由具有运算功能的电子装置来实现图像压缩方法。电子装置例如为电脑、膝上电脑(laptopcomputer)、平板电脑(tabletcomputer)、智能手机、智能电视或机顶盒(settopbox)等。利用电子装置所包括的处理器来执行储存在储存器中的程式码或软件等,进而实现下述的图像压缩方法。图1是依照本发明一实施例的图像压缩方法的流程图。请参照图1,在步骤s105中,处理器(未绘示)可依据不同颜色编码格式决定压缩过程中所使用的压缩单位。在此,以第一区块、第二区块及第三区块所对应的像素尺寸分别作为图像的亮度分量(component)、第一色度分量及第二色度分量的压缩单位。在进行压缩时,首先会将一帧图像划分为多个宏块(macroblock),每一个宏块包括代表亮度分量的第一区块、代表第一色度分量的第二区块以及代表第二色度分量的第三区块。以颜色编码格式yuv4:2:0而言,亮度分量为y分量,第一色度分量为cb分量,第二色度分量为cr分量。例如,在压缩过程中,每个宏块的y分量以16×4像素作为压缩单位(即第一区块),cb分量以8×2像素作为压缩单位(即第二区块),cr分量以8×2像素作为压缩单位(即第三区块)。接着,在步骤s110中,处理器从预设的多个候选预测模式中来决定一个预测模式。在此,候选预测模式例如为基于差值脉波编码调变(differentialpulse-codemodulation,dpcm)的水平差值预测模式、垂直差值预测模式、水平平均预测模式、垂直平均预测模式或其他预测模式的组合。在该步骤中,分别依据多个候选预测模式的预测结果,对第一区块的亮度分量、第二区块的第一色度分量及第三区块的第二色度分量进行压缩编码计算,而获得与各候选预测模式对应的第一区块、第二区块及第三区块加总后的预压缩数据尺寸,以决定预测模式。预压缩数据尺寸例如为字节数、字元数或比特数。例如,以比特数而言,针对每一个候选预测模式来预先进行压缩编码计算,以得知根据同一宏块不同候选预测模式进行压缩后的比特数。更明确地说,在特定一个候选预测模式下(例如是水平差值预测模式),处理器将第一区块、第二区块及第三区块中的各像素的分量分别依所述特定候选预测模式计算出预测结果(例如计算出各像素分量的残差),并根据第一区块的预测结果对第一区块进行压缩编码计算、根据第二区块的预测结果对第二区块进行压缩编码计算,以及根据第三区块的预测结果对第三区块进行压缩编码计算,以获得第一区块的y分量所占用的比特数、第二区块的cb分量所占用的比特数、以及第三区块的cr分量所占用的比特数。之后,将y分量、cb分量、cr分量三者所需要占用的比特数加总而获得对应所述特定候选预测模式的预压缩数据尺寸。上述所指「占用的比特数」是指需被存储的比特数。在以各个候选预测模式分别对一个宏块中的第一区块、第二区块及第三区块进行编码计算,并获得各候选预测模式所对应的预压缩数据尺寸(如压缩后需储存的总比特数)之后,取出当中的总比特数最小值所对应的候选预测模式来作为预测模式,以进行后续的半定长编码,也作为最终组装码流所对应的预测模式。接着,在步骤s115中,处理器判断预测模式对应的预压缩数据尺寸是否大于或等于第一区块、第二区块及第三区块未压缩的各分量加总后的原始数据尺寸(如原始数据的总比特数)。倘若预测模式的预压缩数据尺寸大于或等于原始数据尺寸,则如步骤s120所示,不对第一区块、第二区块及第三区块的各分量进行压缩,也就是此一宏块中的y、cb及cr数据都不进行压缩。倘若预压缩数据尺寸小于原始数据尺寸,则如步骤s125所示,依据被选择的预测模式所产生的预测结果,对第一区块、第二区块及第三区块的各分量数据进行半定长编码,以压缩各区块的数据尺寸。举例来说,依据多个候选预模式分别对第一到第三区块进行预测及编码计算后,判断出例如是水平差值预测模式对应的预压缩数据尺寸最小时,处理器将以第一区块到第三区块分别以水平差值预测模式计算出的残差(即预测结果)进行后续的半定长编码。底下以一实施例对半定长编码的流程进行说明。图2是依照本发明一实施例的半定长编码的流程图。请参照图2,处理器首先进行区块划分。在步骤s205中,将第一区块、第二区块以及第三区块分别重新划分,而获得多个分组,其中每一分组包括多个小块,每一个小块的尺寸相同并且包括多个像素。请一并参照图3。图3是依照本发明一实施例的区块划分的示意图。底下继续以yuv4:2:0格式为例来进行说明。在图3中,将16×4像素的y分量(第一区块)划分为4个相邻的分组g1~g4,所述分组g1~g4分别包括2×2个小块。以分组g1而言,其包括4个小块y10~y13,其他分组以此类推。并且,每一个小块又包括2×2个像素,且每个像素具有对应的残差。另外,将8×2像素的cb分量(第二区块)与8×2像素的cr分量(第三区块)分别划分为1个分组,即分组g5与分组g6。分组g5包括4个相邻的小块b0~b3,分组g6包括4个相邻的小块r0~r3。并且,每一个小块包括2×2个像素,且每个像素具有对应的cb(cr)分量残差。接着,返回图2,在步骤s210中,基于各小块的多个像素对应的多个残差,选择多个残差中的绝对值最大值作为每一小块的代表数值。请再参照图3,以小块y13而言,小块y13包括4个像素,这些像素对应的残差分别为a、b、c、d,其中,a、b、c、d皆为整数。在残差a、b、c、d的绝对值中,选择其中的最大值来作为小块y13的代表数值。接着,在步骤s215中,获得代表数值对应的二值化模式。在本实施例中,可透过查找二值化模式表,以确定代表数值所位于的数值范围,进而获得对应的二值化模式、占用长度以及编码规则。即,以图3的区块划分而言,对于每个小块,依据残差的绝对值最大值,查表得到各小块的二值化模式。即,本实施例所述图像压缩方法更包括建立二值化模式表,并存储于电子装置的储存器内,以供处理器依软件/程序的指令而读取及比对。二值化模式表可包括多个二值化模式,各二值化模式对应至一个数值范围、一个占用长度以及一个编码规则。表1所示为一个二值化模式表的例子,其中,所述占用长度代表储存同一个小块中各个像素对应残差所需的比特数;所述数值范围是代表数值的范围,各个所述数值范围不重叠;所述编码规则是指同一小块中各个残差的压缩编码方式。表1举例来说,假设小块y13的残差a、b、c、d依序各为-30、24、-28、32,则选择四者当中绝对值最大值32作为小块y13的代表数值。以代表数值32来查询表1的数值范围,其位于32~63的区间内,查表获得对应的二值化模式为110,占用长度为7比特,编码规则为“二进制补码”。以此类推,可获得y分量、cb分量以及cr分量中的每一小块对应的二值化模式、占用长度以及编码规则。在表1中包括8种二值化模式,并分别使用3比特来表示各个模式(即000~111)。其中,二值化模式“000”对应的是代表数值为0的小块(即小块中各残差皆为0的状况),因此对应到此模式的小块无需编码,不消耗比特数。另一方面,当代表数值大于或等于一定范围时,该小块内的4个像素的分量并不会进行压缩,在表1的例子中即为大于或等于64的状况。换言之,二值化模式“111”没有实现小块的压缩,即,在组装压缩码流时,二值化模式“111”对应的小块会直接以各个分量的原始数据来进行组装,故其占用长度为其原始数据的原始位深度(bitdepth)。在表1所示的例子中,除上述2种二值化模式以外,其他二值化模式所对应的编码规则为“二进制补码”。例如,残差5的二进制补码为0101,残差-5的二进制补码为1011。在其他实施例中,编码规则也可以是“符号位加残差绝对值二进值”。假设以最高位比特作为符号位,并以0代表正数符号,1代表负数符号,残差5可编码为0101,残差-5则可编码为1101。另外,可视情况来决定使用其他二值化模式表,例如表2所示的另一种二值化模式表。表2所示的二值化模式表主要是合并数值范围其中几个机率较小的相邻区间,例如代表数值1~7在表1中分为三个数值范围,在表2中则加以合并分为二个数值范围,藉此增加数值范围64~127的区间进行编码,以实现更大范围的数据压缩。值得一提的是,各个二值化模式对应的占用长度会因应数值范围的不同而有所差异。具体来说,若特定数值范围的最大值为m,则2(n-1)<m<2n,对应的占用长度为(n+1)位,其中m、n为正整数。表1及表2相比较,表1所示的二值化模式表对数值范围的划分较精细,较能节省残差编码所消耗的比特数(特别是当各小块的残差多数小于64时),而表2能够进行压缩的残差小块(二值化模式为001~110时)的范围则较大(1~127)。本发明并非对二值化模式表中的代表数值的区间、二值化模式的数量或占用长度加以限制,二值化模式表可能依设计或实作的需求而根据上述原理加以变化。表2之后,在步骤s220中,基于各小块对应的二值化模式,确定各分组对应的编组模式以及需要编码的二值化模式,藉此可消除各小块之间的空间相关性,进而节省编码后所需消耗的储存空间。以图3的区块划分而言,对于每个分组,根据所包括的4个小块的二值化模式,确定编组模式和需要编码的二值化模式。由各分组所包括的4个二值化模式,可以区分为多种编组类型。在本实施例中,基于第一区块、第二区块以及第三区块各自的分组型态,可预先建立至少一个编组表,并储存于储存器中。编组表包括多个编组类型,各编组类型对应至一种编组模式以及对应的需要编码的二值化模式。举例来说,表3及表4是依照本发明一实施例的编组表。其中,编组类型m1~m8适用于2×2个小块的分组型态(例如分组g1~g4),编组类型n1~n8适用于4×1个小块的分组型态(例如分组g5、g6)。pbm代表需要编码的二值化模式及数量。pbm的意义除了用来指出一个编组模式对应的需要编码的二值化模式的数量(预编码时会需要知道)外,也用来指出某个特定分组使用了哪几种二值化模式(真正编码时需要知道)。表3表4请一并参照图4。图4是依照本发明一实施例的编组类型示意图。表3所示的编组类型m1代表4个小块对应的二值化模式相同。编组类型m2~m7代表4个小块中包含两种二值化模式。编组类型m2代表左上方的小块的二值化模式与其他3个小块的二值化模式不同,m3代表右上方的小块的二值化模式与其他3个小块的二值化模式不同,m4代表左下方的小块的二值化模式与其他3个小块的二值化模式不同,m5代表右下方的小块的二值化模式与其他3个小块的二值化模式不同,m6代表上方的2个小块的二值化模式与下方的2个小块的二值化模式不同,m7代表左方的2个小块的二值化模式与右方的2个小块的二值化模式不同。而不属于编组类型m1~m7的模式则全部归类至编组类型m8,在本实施例中即指:4个小块中包含不属于m2~m7配置的二种二值化模式、4个小块中包含三种二值化模式、或4个小块对应的四种二值化模式皆不同。相似地,表4的编组类型n1代表4个小块的二值化模式相同。编组类型n2~n7代表4个小块中包含两种二值化模式。n2表示最左边的小块的二值化模式与其他3个小块的二值化模式不同。n3表示左方第2个小块的二值化模式与其他3个小块的二值化模式不同。n4表示左方第3个小块的二值化模式与其他3个小块的二值化模式不同。n5表示最右方小块的二值化模式与其他3个小块的二值化模式不同。n6表示最左方小块与左方第3个小块两者的二值化模式相同,而剩余的2个小块的二值化模式相同。n7表示左方2个小块的二值化模式与右方2个小块的二值化模式不相同。而与上述的m8原理相似,不属于编组类型n1~n7的模式则全部归类至编组类型n8。处理器可执行指令,以根据特定分组中各小块的位置及其对应的二值化模式进行运算,而判断出特定分组所对应的编组类型,同时亦可从运算过程即得知该特定分组所需编码的二值化模式的数量及种类。当pbm只有“bm0”代表只有1个需要编码的二值化模式,而该二值化模式是根据二值化模式表所获得的数值。pbm为“bm0,bm1”代表有2个二值化模式。底下以具有2×2个小块的分组为例进行说明。假设4个小块对应的二值化模式为001、001、001、001,表示其编组类型为m1,透过表3可知道其编组模式为000,需要编码的二值化模式为bm0(表示只有1种二值化模式),即4个小块相同的二值化模式001。另外,假设4个小块对应的二值化模式由左上、右上、左下、右下依序为001、001、100、100,表示其编组类型为m6,透过表3可比知道其编组模式为101,需要编码的二值化模式为bm0、bm1(表示有2种二值化模式),即需要编码的二值化模式为001与100。另外,编组类型m8与编组类型n8对应的pbm则是“bm0,bm1,bm2,bm3”。例如,以分组g1而言,假设4个小块对应的二值化模式分别为001、011、101、100(编组类型m8),表示有4种不同的二值化模式,需要编码的二值化模式为bm0、bm1、bm2、bm3,即原本的001、011、101、100。又,假设4个小块对应的二值化模式分别为001、011、001、100,虽仅有3种不同的二值化模式,但在本实施例中,为了避免编组类型过多而造成编组所需消耗的数据尺寸过大,此情况亦对应到编组类型m8,并依原本4个二值化模式编码,换言之,需要编码的二值化模式为001、011、001、100。再假设4个小块对应的二值化模式由左上、右上、左下、右下依序为001、100、100、001,仅有2种二值化模式(即001与100),但其配置方式与编组类型m2~m7皆不同,于本实施例中亦对应到编组类型m8,故亦会依原本4个二值化模式编码,换言之,需要编码的二值化模式为001、100、100、001。最后,当第一区块、第二区块及第三区块中所有分组(如图3所示g1~g6)皆完成上述步骤s210至s220之运算后,在步骤s225中,组合第一区块、第二区块以及第三区块三者的预测种子数据、本次编码所选定的预测模式、各分组的编组模式、需要编码的二值化模式以及每一小块各像素的残差编码数据,而获得第一区块到第三区块所有y、cr、cb分量的压缩码流。所述预测种子数据为每一个分量最左上方像素(如图3所示的sy、scb及scr像素即为预测种子)的原始数据,其作为预测矩阵的基础。在此,每个区块的最左上角像素作为预测种子数据,则每个区块包含最左上角像素的小块(如图3的y10、b0及r0)所需的储存大小为3×占用长度(每个小块包括2×2个像素)。这是因为最左上方像素已作为预测种子数据,因此只考虑其他3个像素。而其他小块所需的储存大小为4×占用长度。接着,根据分组内4个小块的二值化模式来确定每一个分组的需要编码的二值化模式。最后,每一个经过压缩的宏块,压缩码流所消耗的储存大小为:第一区块到第三区块的预测种子数据、预测模式数据、所有分组的编组模式数据、各分组对应编组模式所需要编码的二值化模式数据、第一区块到第三区块的所有小块进行残差编码后的残差编码数据的比特数。再以图3~4及表1、3~4内容举一具体例示说明压缩码流的数据量(亦即会消耗的储存大小)。若原始图像数据为8比特码流,则预测种子sy、scb及scr即分别具有8比特数据,共计24比特;若原始图像数据的位深为10比特,sy、scb及scr即分别具有10比特数据,共计30比特,依此类推。预测模式是从多个候选预测模式中所择定,假设候选预测模式有4个,则可以2比特数据做为各候选预测模式的索引,故预测模式数据亦为2比特。分组g1~g6共有6组,每一分组的编组模式皆为3比特数据,故共会消耗18比特。6个分组个别需要编码的二值化模式数量,会依对应的编组模式而不同,最少的情况为6个分组都只需要消耗1个二值化模式的数据(即g1~g4编组模式皆为m1、g5~g6编组模式皆为n1),共计消耗18比特;最多的情况则为6个分组都消耗4个二值化模式的数据(即g1~g4编组模式皆为m8、g5~g6编组模式皆为n8),共计会消耗72比特。第一区块到第三区块的所有小块的残差编码数据,则依各小块所属二值化模式对应到的占用长度来计算。另外,在其他实施例中,第一区块、第二区块及第三区块亦可以是其他尺寸。例如,以yuv4:4:4格式而言,第一区块、第二区块及第三区块的尺寸可皆为16×4像素。而以yuv4:2:2格式而言,第一区块、第二区块及第三区块的尺寸可分别为16×4像素、8×4像素、8×4像素。而在yuv4:4:4格式与yuv4:2:2格式中,第一区块、第二区块及第三区块所划分的分组的尺寸可皆为4×4像素,而每一个分组包括2×2个小块,每一小块为2×2像素。在上述第一到第三区块的分组尺寸皆为2×2个小块的例子中,查找编组类型及编组模式时,可以仅参照m1~m8对应的编组表(即表3)。特别说明,上述以候选预测模式来预先进行压缩编码计算的过程与半定长编码的过程相似。预先进行压缩编码计算的目的在于算出整个压缩码流需要用到多少数据量(例如为比特数),所以会需要知道每个小块要用多少个占用长度(以算出残差编码数据),以及经过重编组后每个分组对应的pbm所用数据量。即,如步骤s205~s220所示,将第一区块、第二区块以及第三区块分别划分为所述多个分组;基于对应的候选预测模式的预测结果获得各分组的各小块的多个残差,以选择各小块的代表数值;获得代表数值对应的二值化模式及占用长度;基于各小块对应的二值化模式,确定各分组对应的编组模式以及需要编码的二值化模式。最后,至少根据需要编码的二值化模式的数量及占用长度计算预压缩数据尺寸。综上所述,在上述实施例中,将亮度分量与色度分量(例如y分量、cb分量、cr分量)组装在一起,并且在决定预测模式之后会进一步比对预压缩数据尺寸与原始数据尺寸,据此能够保证每一个宏块压缩后的数据量不会发生多于原数据量的极端情况。此外,实施例中利用二值化模式表决定每一小块各个像素占用长度,确保编码后的像素数据不会超过原数据量。另外,上述实施例使用了编组类型藉以去除二值化模式之间空间相关性,适当的编组模式数量也保持编组模式不会消耗过多数据量。此外,利用半定长编码方式,而充分利用了亮度分量与色度分量位深度的分布特性。更进一步来说,图像储存时可依序将各宏块所消耗的数据量记载在一连续的储存区块(相当于整个图像码流的标头(header)区块)。即使图像中经各个被压缩宏块包含的压缩码流长度可能不相等,当处理器需要读取特定宏块当中的特定像素信息时,可以根据像素在图像中的坐标判断所属宏块,并通过宏块在上述标头区块中记载的数据量信息而快速判断该宏块的数据是否经过压缩。藉此,在存取(access)特定宏块所在的存储区块时,若存取的是经过压缩的宏块,可以根据本发明实施例所述的压缩码流清楚记载的预测种子数据、预测模式、编组模式及需要编码的二值化模式的信息解码获得该特定像素的信息;若存取的是未经压缩的宏块,也可以根据未压缩的原始数据读取所述特定像素的信息,达到支持随机存取(randomaccess)的效果。虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属
技术领域
:中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视后附的申请专利范围所界定者为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1