基于最小量化误差准则的字典学习静态图像有损压缩方法与流程

文档序号:11251938阅读:442来源:国知局

本发明涉及一种静态图像有损压缩方法,特别是涉及一种基于最小量化误差准则的字典学习静态图像有损压缩方法。



背景技术:

文献“compressibilityconstrainedsparserepresentationwithlearntdictionaryforlowbit-rateimagecompression,ieeetransactionsoncircuitsandsystemsforvideotechnology,2014,vol24(10),p1743–1757”公开了一种基于凸松弛与压缩约束的稀疏编码方法用于图像的有损压缩。该方法使用基于凸松弛的稀疏编码代替了传统的追踪匹配算法,强化了图像表示系数的稀疏性和稳定性。同时,将压缩约束加入到稀疏编码的求解过程中,将稀疏编码问题转化为范数优化问题,通过循环迭代逼近该问题的最优解,从而获得图像在给定的超完备字典上的稀疏系数。最终,通过对稀疏系数进行量化和熵编码获得低码率的压缩图像码流。文献所述方法在超完备字典上选取的字典原子分散在整个字典空间中,使得字典原子的整体信息熵较高,难以进行有效的编码压缩;另外,文献所述方法中,量化表使用k-means算法进行学习,该过程独立于字典学习过程,因此量化表无法适应学习到的超完备字典,造成量化误差变大。



技术实现要素:

为了克服现有静态图像有损压缩方法量化误差大的不足,本发明提供一种基于最小量化误差准则的字典学习静态图像有损压缩方法。该方法将稀疏系数对应索引的信息熵作为正则项加入稀疏编码的目标函数中,在使用正交匹配追踪算法选取字典原子时,通过最小化信息熵来限制字典原子的分散度,降低稀疏系数对应索引的编码代价;同时,在字典学习的过程中,通过对稀疏系数进行排序,并寻找使得稀疏系数总离差平方和最小的k惯序划分,将每个划分作为一个量化组,不同量化组之间采用不同的量化步长,同一个量化组内采用相同的量化步长,从而使最终的量化误差最小。

本发明解决其技术问题所采用的技术方案是:一种基于最小量化误差准则的字典学习静态图像有损压缩方法,其特点是包括以下步骤:

步骤一、对训练图像进行分块和规范化。将所有训练图像划分为16×16的图像块,对于每个图像块,按照公式(1)进行规范化

其中,vij表示图像块中坐标为(i,j)的像素点的灰度值,m,n分别表示图像块的长宽。将图像块拉直为向量构成字典学习的输入信号。

步骤二、先利用自组织特征映射对部分图像块进行初步聚类,再通过k-means算法对所有图像块进行聚类。在聚类中,使用欧氏距离来度量任意两个图像块之间的距离

其中,si,sj表示任意两个不同的图像块向量,d(si,sj)表示其欧氏距离。

步骤三、利用字典学习算法对每个类簇训练一个超完备字典和一个量化表,字典中的每个原子即为该类簇图像块共有的结构模式。同时将稀疏系数的量化误差和其对应索引的信息熵作为正则项加入字典学习的目标函数中,通过迭代求解公式(3)和公式(5)对量化表和字典同时进行学习,减小最终的编码代价。

其中,s是原始输入信号矩阵,每列为图像块拉直后的输入信号si,d是字典,a是稀疏系数矩阵,αj是稀疏系数矩阵a的第j列,表示信号sj在字典d上分解的表示系数,kmax是稀疏度限制,pi是字典原子di的使用概率,m为字典中的字典原子个数。随后,将每个类簇的字典和量化表分别拼接成全局字典和全局量化表,存储在编码端和解码端。

步骤四、图像编码时,将图像分成直流分量和交流分量两部分。对直流分量进行dpcm编码。对交流分量利用稀疏编码在全局字典上进行分解,得到对应的稀疏系数矩阵,对该稀疏系数矩阵利用全局量化表进行量化,随后,对量化后的交流分量对应的稀疏系数矩阵中非零元素及其索引进行huffman编码,形成最终的码流。

步骤五、解码过程为编码过程的逆过程。通过字典与稀疏系数矩阵相乘重建出信号矩阵s,再对信号矩阵每列加上对应的直流分量并重新排列,从而恢复出图像。

本发明的有益效果是:该方法将稀疏系数对应索引的信息熵作为正则项加入稀疏编码的目标函数中,在使用正交匹配追踪算法选取字典原子时,通过最小化信息熵来限制字典原子的分散度,降低稀疏系数对应索引的编码代价;同时,在字典学习的过程中,通过对稀疏系数进行排序,并寻找使得稀疏系数总离差平方和最小的k惯序划分,将每个划分作为一个量化组,不同量化组之间采用不同的量化步长,同一个量化组内采用相同的量化步长,从而使最终的量化误差最小。

下面结合具体实施方式对本发明作详细说明。

具体实施方式

本发明基于最小量化误差准则的字典学习静态图像有损压缩方法具体步骤如下:

1.图像分块与规范化。

对所有训练图像首先按照光栅扫描顺序,平移量为2,将其划分为16×16的图像块然后对每个图像块bi进行参照公式(1)进行规范化

最后,将图像块拉直为向量构成字典学习的输入信号。

2.图像块聚类。

为了保证学习到的字典的纯度,需要先对图像块进行聚类,使每类中都是相似图像块。由于对训练图像进行有交叠分块,获得的图像块数量非常之多,故首先从所有图像块中随机抽取10%的图像块,利用自组织特征映射算法进行初步聚类,获得初步聚类簇数k和聚类中心然后将初步聚类中心作为初始值,使用k-means算法对所有图像块进行聚类。在聚类中,使用欧氏距离来度量任意两个图像块之间的距离

3.字典学习与量化表学习。

在传统的稀疏编码算法中,由于信号是在一个过完备字典上进行分解,重建一个信号s时存在着多组不同的字典原子的线性组合,信号s1可以通过字典原子di和dj的线性组合s1=α1di+β1dj进行重建;信号s2既可以通过s2=α2dp+β2dq重建,又可以通过s2=α2′di+β2′dj重建。后一种重建方案中s1和s2使用了相同的字典原子,则字典原子的选择较为稀疏,编码其对应的索引值时只需要较短的字长,有利于提高压缩比。在本发明中,将字典原子索引值的信息熵作为正则项加入稀疏编码的目标函数中,使得最终的编码代价最小。修改后的目标函数参照公式(3)

式中pi的计算参照公式(4)

其中,ai表示稀疏系数矩阵a的第i行,δ是个极小的实数,防止分母为0。

经过稀疏编码后得到原始信号矩阵的稀疏系数矩阵a,由于a中都是浮点数,难以压缩存储,故需要对其进行量化q(a),此时需要重新更新字典d使重建误差最小化。更新字典的过程被称为字典学习,此时的目标函数参照公式(5)

其中q(·)为量化函数。在量化时,为了减小总体量化误差,采用非均匀量化,即对较大的稀疏系数使用大量化步长,对较小的稀疏系数使用小量化步长。为了实现上述目标,将稀疏系数矩阵a中的非零元素表示为(aij,idxij)的形式,aij表示非零元素,idxij表示其对应的索引。首先,对aij进行升序排序得到升序数列l。随后,将升序数列l划分成k个惯序子数列{l1,l2,…,lk},且使得划分后的总体离差平方和最小,即满足公式(6)

其中,表示子数列li的平均值,lj表示子数列li中的第j个数。此时,k个子数列对应k个不同的量化组,不同的量化组间采用不同的量化步长,同一个量化组内采用相同的量化步长。量化时使用八位二进制码e0e1e2e3e4e5e6e7对稀疏系数进行表示。当k=3时,稀疏系数矩阵被分为八个量化组,其中e0表示系数的正负,e1e2e3表示该稀疏所属的量化组,e4e5e6e7表示该量化组系数的幅值的动态范围。第n个量化组的量化步长为

其中,分别表示量化组ln表示的最小值和最大值。系数aij的量化值则为

所有的则构成了量化表。

在整个字典学习的过程中,通过交替迭代优化公式(3)和公式(5),求得最优的字典d和原始信号矩阵的稀疏系数矩阵a。将学习到的字典和量化表分别存储在编码端和解码端供图像编码、解码时使用。

4.图像编码。

图像编码时,首先,将图像按光栅扫描顺序,无交叠地分为16×16的图像块。随后,将图像块分为直流分量和交流分量两部分。对直流分量用dpcm进行编码。对于交流分量,在学得的字典上进行稀疏编码,得到稀疏系数矩阵,并对稀疏系数矩阵在学得的量化表上进行量化。最后,对经过量化的稀疏系数矩阵中的非零元素及其索引进行huffman编码,形成码流。

5.图像解码。

图像解码时,首先,从码流恢复出直流分量和稀疏系数矩阵。随后,通过字典与稀疏系数矩阵相乘重建出信号矩阵。最后,对信号矩阵每列加上对应的直流分量并重新排列,从而恢复出图像块,通过图像块拼接恢复出原始图像。

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