图像数据压缩解压方法及***
技术领域
本发明涉及数据压缩的技术领域,特别涉及一种图像数据压缩解压方法及***。
背景技术
随着互联网技术的迅猛发展,各种视频监控的应用越来越多,多媒体、流媒体也得到广泛应用。这些产业会产生大量的图像视频音频数据,其核心在于图像数据的压缩方法和解压方法。如何提高图像数据的压缩比成为一个重要问题。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种图像数据压缩解压方法,能够有效提高图像数据的压缩比。
本发明还提出一种具有上述图像数据压缩解压方法的图像数据压缩解压***。
根据本发明的第一方面实施例的图像数据压缩解压方法,包括:压缩步骤,读取图像数据,基于预设策略将所述图像数据进行量化,得到相应的量化序列,获取所述量化序列的第一比特长度,统计符号0在所述量化序列中的第一数量,基于加权扩张概率模型对所述量化序列进行编码,得到压缩数据,并将所述第一比特长度、所述第一数量及所述压缩数据保存至压缩文件中;译码步骤,读取所述压缩文件,获取所述第一比特长度、所述第一数量及所述压缩数据,基于所述加权扩张概率模型对所述压缩数据进行译码,得到译码数据。
根据本发明实施例的图像数据压缩解压方法,至少具有如下有益效果:通过加权扩张概率模型对图像数据进行压缩,实现简单,可支持无损压缩及有损压缩,提高图像数据的压缩比,便于图像的存储管理。
根据本发明的一些实施例,基于所述预设策略将所述图像数据进行量化的方法包括:获取单字节内符合预设限制条件的所有第一序列,根据所述第一序列的数量得到量化参数
其中m为所述第一序列的数量,所述预设限制条件为符号1在二进制序列中连续出现的最大次数上限t;根据所述量化参数Q,对所述图像数据按字节进行量化,得到相应的所述量化序列。
根据本发明的一些实施例,基于所述预设策略将所述图像数据进行量化的方法包括:对所述图像数据的颜色空间的相应分量,按从高比特位至低比特位的顺序,获取K个位平面数据,并通过预设限制条件进行约束处理,得到相应的所述量化数据,其中,所述预设限制条件为符号1在二进制序列中连续出现的最大次数上限t,K为大于1的整数。
根据本发明的一些实施例,所述颜色空间包括:RGB、YUV、DCT变换后的系数或者小波变换后的系数的其中一项。
根据本发明的一些实施例,所述加权扩张概率模型包括:
Hn=F(X,r)
其中,F(X,r)表示序列X的加权累积分布函数,且F(X,r)=rF(X),r表示权系数,且r>1,p(X
i)表示X的值为X
i概率质量函数,函数
根据本发明的一些实施例,所述压缩步骤还包括以下步骤:S100,根据所述第一数量及所述第一比特长度,得出所述量化序列中符号0出现的第一概率;S200,基于第一公式通过所述第一概率得到所述加权扩张概率模型的最大加权系数rmax,所述第一公式为:
其中,p(0)为所述第一概率;S300,基于所述加权扩张概率模型,根据所述第一概率及所述最大加权系数对所述量化序列进行编码,得到所述压缩数据。
根据本发明的一些实施例,所述步骤S300还包括:S310,初始化
H
0=R
0=1.0,L
0=0,遍历所述量化序列的比特位,其中,
表示符号0出现的加权概率,p(0)表示所述第一概率,r
max表示最大加权系数,
表示符号1出现的加权概率,H
0表示加权累积分布函数初始值,R
0,L
0分别表示第一参数及第二参数的初始值;S320,若所述量化序列的当前比特位的数值为0,则根据
及L
i=L
i-1得出第一参数和第二参数,其中,R
i和L
i分别表示第i个比特位对应的第一参数及第二参数,R
i-1和L
i-1分别表示第i-1个比特位对应的第一参数及第二参数;S330,若所述量化序列的当前比特位的数值为1,则根据
及
得出第一参数和第二参数,
p(1)表示符号1出现的概率;S340,遍历完成,将L
n作为所述压缩数据,其中n为所述第一比特长度。
根据本发明的一些实施例,所述译码步骤包括:读取所述压缩文件,获取所述第一比特长度、所述第一数量及所述压缩数据,并根据所述第一数量及所述第一比特长度,得出所述第一概率;初始化
H
0=R
0=1.0,L
0=0;依次计算所述第一比特长度中每个比特位对应的加权累积分布函数的值H
i,计算方法为:
其中i表示第i个比特位;比较H
i与所述压缩数据值的大小,根据比较结果得出第i位对应的译码符号,并根据所述比较结果基于所述加权扩张概率模型获取第i个比特位对应的所述第一参数R
i及所述第二参数L
i;依次组合所述译码符号,得到所述译码数据。
根据本发明的一些实施例,根据所述比较结果得出所述译码符号、所述第一参数R
i及所述第二参数L
i的方法包括:若所述压缩数据值小于H
i,则所述译码符号为1,
及
否则所述译码符号为0,
及L
i=L
i-1。
根据本发明的第二方面实施例的图像数据压缩解压***,包括:压缩模块,用于读取图像数据,基于预设策略将所述图像数据进行量化,得到相应的量化序列,获取所述量化序列的第一比特长度,统计符号0在所述量化序列中的第一数量,基于加权扩张概率模型对所述量化序列进行编码,得到压缩数据,并将所述第一比特长度、所述第一数量及所述压缩数据保存至压缩文件中;译码模块,用于读取所述压缩文件,获取所述第一比特长度、所述第一数量及所述压缩数据,基于所述加权扩张概率模型对所述压缩数据进行译码,得到译码数据。
根据本发明实施例的图像数据压缩解压***,至少具有如下有益效果:通过加权扩张概率模型对图像数据进行压缩,实现简单,可支持无损压缩及有损压缩,提高图像数据的压缩比,便于图像的存储管理。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的方法的流程示意图;
图2为本发明实施例的方法中对量化序列的压缩过程示意图;
图3为本发明实施例的方法中对压缩数据的解压过程示意图;
图4为本发明实施例的***的内容模块图。
图5为n=1时x1=0,1,...,k的加权分布函数F(X,r)示意图;
图6为n=2且已知x1时,x2=0,1,...,k的加权分布函数F(X,r)示意图;
图7为本发明实施例的方法中,p(0)=p(1)时t与rmax的关系表;
图8为本发明实施例的方法中,二进制序列X的加权编码过程示意;
图9为本发明实施例的方法中,二进制序列X的加权译码过程示意;
图10为单个字节的数值中(即0-255)中满足t=1的数值列表;
图11为本发明实施例的方法,对图像进行有损压缩及解压后的效果示意。
附图标记:
压缩模块100、译码模块200。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个及两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
本发明实施例的方法,参照图1,包括:压缩步骤,读取图像数据,基于预设策略将图像数据进行量化,得到相应的量化序列,获取量化序列的第一比特长度,统计符号0在量化序列中的第一数量,基于加权扩张概率模型对量化序列进行编码,得到压缩数据,并将第一比特长度、第一数量及压缩数据保存至压缩文件中;译码步骤,读取压缩文件,获取第一比特长度、第一数量及压缩数据,基于加权扩张概率模型对压缩数据进行译码,得到译码数据。
本发明实施例的方法中的压缩步骤,需要先对图像数据进行量化,使量化后的二进制序列(简称量化序列)满足以下限制条件:“符号1在二进制序列中连续出现的最大次数上限t”;若满足该限制条件,则针对量化序列可进行无损压缩及解压。量化方法可以针对图像数据的字节进行,也可以针对图像数据的位平面进行。在本发明的一些实施例中,获取单字节内符合预设限制条件的所有第一序列,得到第一序列的数量m,计算得出量化参数
根据量化参数Q,对图像数据按字节进行量化,得到相应的量化序列。例如,图像数据的某个字节为X,则乘以Q得到相应的量化结果。显然,本发明的按字节压缩的方法还可以用于文本数据及音频数据的压缩中。在本发明的另一些实施例中,基于图像视频中的颜色空间,按从高比特位至低比特位的顺序,则针对颜色空间(RGB、YUV、DCT变换后的系数或者小波变换后的系数)的每个分量,分别获取K个位平面数据,并通过上述限制条件“符号1在二进制序列中连续出现的最大次数上限t”进行约束处理,例如,可以在连续出现t个符号1后添加一个0,得到相应的量化数据,其中,K为大于1的整数。当K的大小等于字节的长度8,则为无损压缩;否则为有损压缩。量化后的数据进行压缩处理的过程,参照图2,包括:根据第一数量c
n及第一比特长度n,得出量化序列中符号0出现的第一概率p(0)=c
n/n;基于第一公式(即公式3-9),通过第一概率p(0)得到加权扩张概率模型的最大加权系数r
max,第一公式为:
其中,p(0)为第一概率;基于加权扩张概率模型,根据第一概率p(0)及最大加权系数r
max对量化序列进行编码,得到压缩数据。首先,初始化
H
0=R
0=1.0,L
0=0,遍历量化序列的每个比特位,其中,
表示符号0出现的加权概率,p(0)表示第一概率,r
max表示最大加权系数,
表示符号1出现的加权概率,H
0表示加权累积分布函数初始值,R
0,L
0分别表示第一参数及第二参数的初始值。若量化序列的当前比特位的数值为0,则根据
及L
i=L
i-1得出第一参数和第二参数,其中,R
i和L
i分别表示第i个比特位对应的第一参数及第二参数,R
i-1和L
i-1分别表示第i-1个比特位对应的第一参数及第二参数;若量化序列的当前比特位的数值为1,则根据
及
得出第一参数和第二参数,
p(1)表示符号1出现的概率。应理解的是,图2中的第一参数R
i的计算过程未写出,不代表本发明的实施例不需要对第二参数R
i进行处理。遍历完成,将L
n作为压缩数据,与第一数量c
n及第一比特长度n保存入相应的压缩文件中。
本发明实施例的方法中的译码过程,参照图3,包括:读取压缩文件,获取第一比特长度、第一数量及压缩数据,并根据第一数量及第一比特长度,得出第一概率;初始化
H
0=R
0=1.0,L
0=0;依次计算第一比特长度中每个比特位对应的加权累积分布函数的值H
i,计算方法为:
其中i表示第i个比特位;比较H
i与压缩数据值的大小,若压缩数据值小于H
i,则译码符号为1,
及
否则译码符号为0,
及L
i=L
i-1;依次组合译码符号,得到译码数据。
本发明实施例的装置,参照图4,包括:压缩模块100,用于读取图像数据,基于预设策略将图像数据进行量化,得到相应的量化序列,获取量化序列的第一比特长度,统计符号0在量化序列中的第一数量,基于加权扩张概率模型对量化序列进行编码,得到压缩数据,并将第一比特长度、第一数量及压缩数据保存至压缩文件中;译码模块200,用于读取图像数据,基于预设策略将图像数据进行量化,得到相应的量化序列,获取量化序列的第一比特长度,统计符号0在量化序列中的第一数量,基于加权扩张概率模型对量化序列进行编码,得到压缩数据,并将第一比特长度、第一数量及压缩数据保存至压缩文件中;读取压缩文件,获取第一比特长度、第一数量及压缩数据,基于加权扩张概率模型对压缩数据进行译码,得到译码数据。
下面将给出本发明实施例的理论依据的推导过程,并给合部分实施例给予说明。
令X={x1,x2,...,xn}是有限个值或可数个可能值的随机过程,这个随机过程的可能值的集合都将记为非负整数的集合A={0,1,2,...,s},即xi∈A(i=1,2,...,n)。于是,对于A中一切数值有概率空间:
其中x∈A。由于随机过程必须转移到某个变量,所以在任意时刻有:
于是,任意时刻归一化概率模型下的分布函数F(x)为:
其中,0≤F(x)≤1,a∈A。显然,无记忆随机过程在任意时刻数值x的概率p(x)不变。
定义加权概率质量函数为:
公式(1-4)中,p(a)为的概率质量函数,0≤p(a)≤1,r为权系数。显然,所有符号的加权概率之和为:
定义加权累积分布函数为:
该加权累积分布函数也被简称加权分布函数。
将序列X的加权分布函数记为F(X,r)。令n=1时,则F(X,r)为:
F(X,r)=rF(x1)=rF(x1-1)+rp(x1)
n=2时,参照图5,选择x
1对应的区间[F(x
1-1,r),F(x
1,r)),由于F(x
1,r)=F(x
1-1,r)+rp(x
1),所以区间长度为
然后,将区间[F(x
1-1,r),F(x
1-1,r)+rp(x
1))的长度乘以权系数r,若r<1时,区间缩小;若r>1时区间扩大;若r=1时区间不变。于是区间变成了|F(x
1-1,r),F(x
1-1,r)+r
2p(x
1)),接着将r
2p(x
1)按照公式(1-1)中各符号的概率质量分割成k+1份,分割后符号0对应区间为[F(x
1-1,r),F(x
1-1,r)+r
2p(x
1)p(0));符号1对应的区间为[F(x
1-1,r)+r
2p(x
1)p(0),F(x
1-1,r)+r
2p(x
1)(p(0)+p(1)));符号2对应的区间为[F(x
1-1,r)+r
2p(x
1)(p(0)+p(1)),F(x
1-1,r)+r
2p(x
1)(p(0)+p(1)+p(2))),类推且F(x
1-1,r)=rF(x
1-1),得:
F(X,r)=rF(x1-1)+r2F(x2)p(x1)
=rF(x1-1)+r2F(x2-1)p(x1)+r2p(x1)p(x2)
此时,区间长度为r2p(x1)p(x2)。参照图6。
类推,n=3时:
F(X,r)=rF(x1-1)+r2F(x2-1)p(x1)+r3F(x3)p(x1)p(x2)
=rF(x1-1)+r2F(x2-1)p(x1)+r3F(x3-1)p(x1)p(x2)+r3p(x1)p(x2)p(x3)
将满足(1-7)的加权分布函数的集合定义为加权概率模型,简称加权模型,记为{F(X,r)}。若Xi∈A={0,1},则称{F(X,r)}为二元加权模型。令:
Hn=F(X,r) (1-8)
因xi必须取A中的值,所以p(xi)≥0。显然(1-8)(1-9)(1-10)为区间列,Li,Hi是序列X在时刻i(i=1,2,...,n)变量xi对应的区间上下标,Ri=Hi-Li是区间的长度。{[Ln,Hn)}为定义在加权概率模型上的区间列。将(1-8)(1-9)(1-10)用迭代式表达为:
(1-7)中r为已知实数,将(1-7)称为静态加权模型。若r在时刻i等于已知实数ωi,且系数序列为W={ω1,ω2,...,ωn},则(1-7)可表示为:
满足(1-12)的加权分布函数的集合称为动态加权模型。当ω1=ω2=…=ωn=r时,F(X,W)=F(X,r)。若ω1=ω2=…=ωn=r=1,则F(X,W)=F(X,1)=F(X)。
基于(1-13)的迭代式为:
将扩张模型权系数ωi的最大值记为Mi,则Mi根据不同的序列有不同的值。当1≤ωi≤Mi时,Ln∈[Ln,Hn)∧Ln∈[Ln-1,Hn-1)∧...∧Ln∈[Li,Hi)。
在信息论中,熵被用来衡量一个随机变量出现的期望值。它代表了信号在被接收之前,信号传输过程中损失的信息量,又被称为信息熵。信息熵也称信源熵、平均自信息量。
对离散无忘记信源序列X={x
1,x
2,...,x
n},x
i∈A(i=1,2,...,n),A={0,1,2,...,s},当r=1时,
根据香农信息熵定义,X的熵为(其中的对数以s+1为底)。
设集合{xi=a}(i=1,2,...,n;a∈A)中有ca个a。当r的值确定,信源序列X的总信息量为:
则平均每个信号的信息量为:
定义2.1令H(X,r)为加权模型信息熵(单位为:比特/符号):
给定长度为32的二进制伯努利序列X,X=(1,0,1,1,0,1,0,0,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,1,1,0,0,0,0,1,0,1)。加权概率无损编码过程分析如下:
若序列X满足“序列中连续符号1的个数最多为t”,且t=3,序列X中符号0和符号1的概率为p(0)=p(1)=0.5。根据图7,可得rmax=1.03758,H0=R0=rmax=1.03758,L0=0。
根据(1-11)
Li=Li-1+Ri-1F(xi-1,r)
Hi=Li+Ri
得加权模型编码过程为:
i=1,x1=1,R1=R0rp(1)=0.5382861282,L1=L0+R0F(1-1,r)=L0+R0rp(0)=0.5382861282。
i=2,x2=0,R2=R1rp(0)=0.279257460449,L2=L1+R1F(0-1,r)=L1=0.5382861282。
i=3,x3=1,R3=R2rp(1)=0.144875977906,L3=L2+R2F(1-1,r)=L2+R2rp(0)=0.683162106106。
迭代计算结果,过程参照图8。
编码后的结果为L32=0.781740377568,R32=0.000000000787,则H32=R32+L32=0.781740378355。因压缩结果V∈[L32,H32),所以压缩结果V可取0.781740378。将0.781740378转成二进制序列Y为10 1110 1001 1000 0110 1001 0101 1010,共30个比特。
译码时,已知压缩结果V=0.781740378且p(0)=p(1)=0.5,令R0=1.03758,L0=0,H0=rmax=1.03758。通过公式(1-11)得加权模型译码过程为:
符号0的区间为
符号1的区间为
因
所以译码出符号1。这个过程可以简化为:当
则译码输出符号0;当
则译码输出符号1。简化后仅需计算
的值。由于译码出了符号1,所以
因
所以译码出符号0。
R
2=R
1rp(0)=0.5382861282*1.03758*0.5=0.279257460449。
因
所以译码出符号1。
R
3=R
2rp(1)=0.279257460449*1.03758*0.5=0.144875977906。类推,可得译码的过程,如图9所示。
显然,序列X基于加权概率模型可无损编译码。当rmax=1,H0=R0=rmax=1,L0=0时,标准模型可无损编译码且V=0.7052892161。将V转成二进制Y为1 1010 0100 01100010 1001 1000 0000 0001,共33个比特。当rmax=0.95,H0=R0=rmax=0.95,L0=0时,收缩模型可无损编译码且V=0.61360459856。将V转成二进制Y为1110 0100 1001 0101 11100101 0000 0101 0000,共36个比特。相较下,加权概率模型压缩比更高。
信源随机生成的序列X,序列X并不全满足(1-23),且符号的概率也不一定均等。所以需要对序列X进行处理:
“序列X中所有‘11...1’(共t个符号1)后增加一个符号0” (3-1)
通过(3-1)处理后序列X满足“序列中连续字符1的个数不超过上限t(t为大于等于1的整数)”,则去除‘11...1’后的符号0即可还原序列X。
例1:给定长度为n的二进制伯努利序列X,X中p(0)=p(1)=0.5,序列X通过(3-1)进行处理使得t=1。求加权模型信息熵及压缩后序列Y比特长度。
(1)处理后序列X长度为
符号0的个数为n,符号1的个数为
根据图7,可得r
max=1.236067,于是由定理2.1可得:
编码后序列Y长度为1.0413645n(比特),无压缩效果。
(2)处理后序列X中符号0和符号1的概率变为了
由(1-20)可得:
于是:
(3)设
根据(1-26)可得
的最大值为
将
和
代入(2-3)可得:
于是编码后序列Y长度为
比特,显然也不具备压缩效果,但加权概率模型无损编码方法服从香农信息论相关定理。
例2:给定长度为n的二进制伯努利序列X,X中
序列X通过(3-1)进行处理使得t=1。求加权模型信息熵及压缩后序列Y比特长度。
(1)处理后序列X长度为
符号0的个数为n,符号1的个数为
若序列X采用
和
进行加权概率模型编码。由(1-20)可得r
max=1.0355339,则H(X,r
max)=0.721928。编码后序列Y长度为
(比特),具有压缩效果。
(2)若序列X采用处理后的
和
进行加权概率模型编码。由(1-20)可得r
max=1.024922359,则H(X,r
max)=0.6145。编码后序列Y长度为
(比特),具有压缩效果,且相较于
时的加权概率模型编码,无损压缩比提升12.15%。
(3)当p(0)=0.7417741时,r
max=1.0586921,H(X,r
max)=0.82405732,编码后序列Y长度为
(比特)。显然,序列X中p(0)>0.651881,或者处理后序列X中p(0)>0.741774时,具有压缩效果。
例3:给定长度为n的二进制伯努利序列X,X中符号0和符号1的概率为p(0)和p(1),序列X通过(3-1)进行处理使得序列X满足“序列中连续字符1的个数不超过上限t(t为大于等于1的整数)”。求加权模型信息熵及压缩后序列Y比特长度。
显然符号0的个数为np(0),符号1的个数为np(1),设序列X中有a个“11...1”(t个符号1)。于是序列X通过(3-1)进行处理时增加了a个符号0。处理后序列X中符号0和符号1的概率为
由(1-20)可得r
max,则可求出H(X,r
max)。于是编码后序列Y长度为(n+a)H(X,r
max)(比特)。
设信源生成长度为n的二进制伯努利序列X。加权概率模型无损编码主要分为以下步骤。
步骤一:获得t所对应的统计表T。如t=1时,T1为序列X中“1”的个数;t=2时,T2为序列X中“11”的个数;t=3时,T3为序列X中“111”的个数;依此类推。同步,得出符号0的个数c0和符号1的个数c1,于是:
步骤二:根据表T中的每一个T
t,得出
将p(0)通过下式计算出r
max。
同步完成H(X,rmax)的计算,得到列表H。
步骤三:选择列表H中最小的值所对应的p(0),t,rmax进行加权概率模型无损编码,编码过程参照图4。显然,此时可以得到最短的无损编码结果Y。加权概率模型无损压缩效果更接近信息熵理论极限。
加权模型有损压缩算法主要应用于图像、视频和音频领域。由于加权模型针对满足(1-23)的二进制序列具有很好的无损压缩效果,且图像、视频和音频等数据在一定失真率下不影响感官效果。于是,若将失真率控制在数据满足(1-23)时可以采用加权概率模型实现很好的压缩效果。
“序列X中所有‘11...1’(共t个符号1)后k个符号1改为符号0” (3-4)
给定长度为n的二进制伯努利序列X,X中符号0和符号1的概率为p(0)和p(1),序列X通过(3-4)进行处理使得序列X满足无损译码要求,且t=1。若序列X满足“每个符号1至少被k(k=1,2,...)个符号0隔开”,求加权模型信息熵及压缩后序列Y比特长度。
设通过(3-4)处理后序列X从第i+1开始的2k+1个符号为0...010...0(其中0...0代表k个符号0),由(1-8)(1-9)(1-10)可得:
因为Hi+5≤Hi+1,所以:
于是:
rmax kp(0)k+rmax 2kp(0)2k-1p(1)=1 (3-7)
通过(3-7)可得rmax,通过(3-4)处理后序列X中符号0和符号1的概率发生变化,代入定理2.1可得H(X,rmax)。于是序列Y的长度为nH(X,rmax)。同理,也可以得出不同的t与k对应rmax的等式。
失真率的控制之一。
以字节为单位,用8位二进制表达一个字节,字节满足t=1的组合方式如图10(注意:任意两个字节相邻时也必须满足t=1,比如值为1的字节xi,若字节xi+1大于等于128,则不满足t=1),二进制值采用多项式xi=a727+a626+a525+a424+a323+a222+a121+a020中的系数(a7,a6,a5,a4,a3,a2,a1,a0)排序方式。
参照图10,共34个x
i;若将任意字节值x
i均匀量化为图中的的34个值,则量化参数
显然,当t=2时,有81个值,
当t=3时,有108个值,
当t=7时,有128个值,Q=0.5。于是,任意字节值x
i乘以Q进行量化为
且x
i可通过
进行逆量化。当Q→1时
失真率也就趋近于0。失真率越低,数据保真度就越高。
失真率的控制之二。
上述内容是将图像数据中每个字节直接进行量化的方法。本节将基于图像视频中的三分量(颜色空间),比如R(红)、G(绿)、B(蓝)分量(也可以是YUV,或DCT、小波变换后的系数)。将每个分量的第xi个字节表达为二进制多项式形式:
xi=a727+a626+a525+a424+a323+a222+a121+a020 (3-8)
定义a7,a6,a5,a4,a3,a2,a1,a0为xi不同位平面的系数,且aj∈{0,1},j=0,1,...,7。每个分量的任意xi中,若xi为奇数且a0=0时,x′i=xi-1,奇数值在还原时减1;xi为偶数且a0=0时,x′i=xi,偶数值可无损还原。若xi为奇数且a1=0,a0=0时,x′i=xi-3,奇数在还原时减3;xi为偶数且a1=0,a0=0时,x′i=xi-2,偶数值在还原时减2。显然第二种方法的失真率要低于第一种方法的失真率。
设获取K个位平面,且K=1,2,3,4,5,6,7,8,每个分量的字节长度为n,则i=1,2,...,n。当K=1时,则获取三个分量中每个字节xi对应的a7,则每个分量有n个a7。于是获得了第一个位平面,标记为BitPlane1。显然BitPlane1的比特长度为n。然后设t=1,则每个符号1后增加一个符号0,添加符号0后的位平面数据标记为tmpBitPlane1。然后统计tmpBitPlane1中符号0的概率p(0),并通过(1-20)计算出rmax。接着使用加权概率模型对tmpBitPlane1进行无损编码。
当K=2时,获取三个分量中每个字节xi对应的a7,得到tmpBitPlane1。然后获取三个分量中每个字节xi对应的a6,得到tmpBitPlane2。设t=1,求出tmpBitPlane1和tmpBitPlane2对应的rmax,使用加权概率模型对tmpBitPlane1和tmpBitPlane2进行无损编码。依此类推。
显然,K<8则说明采用位平面量化的方式对图像视频进行有损压缩。可以针对DCT变换后的系数或小波变换后的系数,设系数的绝对值最大为T,求出T对应的比特长度Tbit。K<Tbit,说明进行了比特平面量化,显然,K越小则量化程度越大,压缩效率越高,有损压缩比也越高,图像清晰度也会下降。
利用加权概率模型构建了新的位平面量化算法,使得运算效率远远大于SPIHT、EZW、EBCOT等算法。加权概率模型是线性编码,且可以分解任意块大小进行编码,通过权系数rmax使得加权概率模型针对每个位平面的无损压缩达到或接近信息熵。由于加权概率模型是线性编码,既可以根据不同的块进行位平面量化,也可以根据整个图像输出码流的大小要求,自动调节K的值和加权概率模型编码的终止位置。
本发明实施例采用的有损编码方式。
设信源生成长度为n的序列X,序列X以字节为单位。加权概率模型有损编码主要分为以下步骤。
步骤一:以字节为单位,设t=1,可得Q=0.1328125。然后将每个字节xi(i=1,2,....,n)量化成0-33的值,通过查图7的表,得出8比特长度的二进制序列S。统计n个S中全部符号0的个数c0,于是:
步骤二:将p(0)通过下式计算出rmax。
步骤三:将p(0),t,rmax进行加权概率模型无损编码,参照图3,得出编码结果Y。
参照图11,通过上述有损压缩方法,进行有损压缩后,42.6MB的原图压缩至600倍,压缩后图像大小为72.8KB,效率达到40M/S。在压缩后视觉无差别的情况下,相比原图片节省了600倍存储空间;提高了图像的传输效率。
尽管本文描述了具体实施方案,但是本领域中的普通技术人员将认识到,许多其它修改或另选的实施方案同样处于本公开的范围内。例如,结合特定设备或组件描述的功能和/或处理能力中的任一项可以由任何其它设备或部件来执行。另外,虽然已根据本公开的实施方案描述了各种例示性具体实施和架构,但是本领域中的普通技术人员将认识到,对本文所述的例示性具体实施和架构的许多其它修改也处于本公开的范围内。
上文参考根据示例性实施方案所述的***、方法、***和/或计算机程序产品的框图和流程图描述了本公开的某些方面。应当理解,框图和流程图中的一个或多个块以及框图和流程图中的块的组合可分别通过执行计算机可执行程序指令来实现。同样,根据一些实施方案,框图和流程图中的一些块可能无需按示出的顺序执行,或者可以无需全部执行。另外,超出框图和流程图中的块所示的那些部件和/或操作以外的附加部件和/或操作可存在于某些实施方案中。
因此,框图和流程图中的块支持用于执行指定功能的装置的组合、用于执行指定功能的元件或步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行特定功能、元件或步骤的专用硬件计算机***或者专用硬件和计算机指令的组合来实现。
本文所述的程序模块、应用程序等可包括一个或多个软件组件,包括例如软件对象、方法、数据结构等。每个此类软件组件可包括计算机可执行指令,所述计算机可执行指令响应于执行而使本文所述的功能的至少一部分(例如,本文所述的例示性方法的一种或多种操作)被执行。
软件组件可以用各种编程语言中的任一种来编码。一种例示性编程语言可以为低级编程语言,诸如与特定硬件体系结构和/或操作***平台相关联的汇编语言。包括汇编语言指令的软件组件可能需要在由硬件架构和/或平台执行之前由汇编程序转换为可执行的机器代码。另一种示例性编程语言可以为更高级的编程语言,其可以跨多种架构移植。包括更高级编程语言的软件组件在执行之前可能需要由解释器或编译器转换为中间表示。编程语言的其它示例包括但不限于宏语言、外壳或命令语言、作业控制语言、脚本语言、数据库查询或搜索语言、或报告编写语言。在一个或多个示例性实施方案中,包含上述编程语言示例中的一者的指令的软件组件可直接由操作***或其它软件组件执行,而无需首先转换成另一种形式。
软件组件可存储为文件或其它数据存储构造。具有相似类型或相关功能的软件组件可一起存储在诸如特定的目录、文件夹或库中。软件组件可为静态的(例如,预设的或固定的)或动态的(例如,在执行时创建或修改的)。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。