本发明涉及一种针对无结构规律分布的稀疏矩阵编码和数据存储方法。
背景技术:
1、稀疏矩阵的分布与稀疏矩阵的编码效率息息相关;对于无结构规律分布的稀疏矩阵,目前大部分稀疏矩阵编码中,主要是对非0元的值与位置信息进行编码,如coo。现有技术(如coo,csr)针对所有稀疏矩阵大小都需要使用3个字段来描述,并且并没有对图像或视频的压缩领域做针对性优化。
技术实现思路
1、本发明的目的在于克服现有技术的不足,提供一种针对无结构规律分布的稀疏矩阵编码和数据存储方法。
2、本发明的目的是通过以下技术方案来实现的:一种针对无结构规律分布的稀疏矩阵编码和数据存储方法,包括:
3、获取原始稀疏矩阵中的非零元素,根据所述非零元素生成第一字段;
4、获取原始稀疏矩阵中非零元素的位置,根据所述非零元素的位置生成第二字段;
5、在原始稀疏矩阵的列数大于预设值时,计算原始稀疏矩阵首尾的非零行数关系,得到第三字段;
6、在原始稀疏矩阵的列数小于等于预设值时,存储第一字段和第二字段;
7、在原始稀疏矩阵的列数大于预设值时,存储第一字段、第二字段和第三字段。
8、进一步地,获取原始稀疏矩阵中的非零元素,根据所述非零元素生成第一字段,包括:
9、记录原始稀疏矩阵中的非零元素;
10、按照从左至右、从上向下的顺序依次将原始稀疏矩阵中的非零元素进行排列,组成第一字段。
11、进一步地,获取原始稀疏矩阵中非零元素的位置,根据所述非零元素的位置生成第二字段,包括:
12、判断原始稀疏矩阵的首行和末行是否都为零元素;
13、在原始稀疏矩阵的首行和末行都为零元素时,同时去除其首行和末行,重复该步骤,直到其首行或末行中存在非零元素,将此时得到的矩阵记为第一中间矩阵;
14、在原始稀疏矩阵的首行或末行中存在非零元素时,将该原始稀疏矩阵记为第一中间矩阵;
15、将第一中间矩阵的非零元素的值修改为1,将第一中间矩阵的其余位置处的值均设置为0,得到非零元位置矩阵;
16、从第一行开始从左至右向下遍历非零元位置矩阵,根据遍历顺序获得从开头到第一个非零元素的全零序列,记为第一序列;
17、从最后一行开始从右至左向上遍历非零元位置矩阵,根据遍历顺序获得最后一个非零元素到结束的全零序列,记为第二序列;
18、若第一序列的长度和/或第二序列的长度为0,则按照从左至右、从上向下的顺序依次将将非零元位置矩阵中的值进行排列,组成第二字段;
19、若第一序列的长度和第二序列的长度均不为0,比较第一序列和第二序列的长度:若第一序列和第二序列的长度不同,则将非零元位置矩阵去除第一序列和第二序列中较长的序列,得到第二中间矩阵;若第一序列和第二序列的长度相同,则将非零元位置矩阵去除第二序列,得到第二中间矩阵;
20、按照从左至右、从上向下的顺序依次将将第二中间矩阵中的值进行排列,组成第二字段。
21、进一步地,计算原始稀疏矩阵首尾的非零行数关系,得到第三字段,包括:
22、计算第三字段,第三字段的值的计算公式为:
23、
24、式中,k表示第三字段的值,c表示第一序列的全零行数,d表示第二序列的全零行数,表示向下取整。
25、进一步地,所述方法还包括恢复步骤,所述恢复步骤包括:
26、根据第二字段生成第三中间矩阵,第三中间矩阵的列数为n,n为原始稀疏矩阵的列数;
27、根据第二字段中首尾字符的值确定填充方向:若第二字段的首字符为1、尾字符为0,则填充方向为从首字符向左;若第二字段的首字符为0、尾字符为1,则填充方向为从尾字符向右;若第二字段的首字符为1、尾字符为1,则不填充;
28、按照所述填充方向对第三中间矩阵填充0,直至第三中间矩阵中元素的个数第一次能被m整除,其中,m为原始稀疏矩阵的行数;
29、在n小于等于预设值时,判断(h+2*m)是否小于m*n,h为第三中间矩阵的元素个数;在n大于预设值时,根据第三字段的值在填充方向补充相应行数的全零行,然后判断(h+2*m)是否小于m*n;
30、在(h+2*m)小于m*n时,将第三中间矩阵的首尾各增加一行全零行,直到(h+2*m)等于m*n;
31、将第一字段中的值填入第三中间矩阵中的相应位置,得到原始稀疏矩阵。
32、进一步地,所述预设值为4。
33、进一步地,根据第三字段的值在填充方向补充相应行数的全零行时,补充的全零行的行数为2*k*m,k为第三字段的值,m为原始稀疏矩阵的行数。
34、本发明的有益效果是:
35、(1)本发明中存储结构来源是方程求解,通过单位矩阵构造出一个m矩阵,算法简单,存储数据量小,适合硬件实现;
36、(2)本发明通过第三字段的值可以快速构造出f矩阵,隐含计算逻辑f*a=a;通过f矩阵可以快速得出m矩阵,隐含计算逻辑m*x=α;对于某些特殊的矩阵,该方式可以直接进行运算;
37、(3)本发明提出的方法对第二字段(非零元素的位置矩阵)和第三字段使用一个二值化的字符串表示,可以更好的兼容到图像或视频的压缩算法中进一步的增加压缩率,适合用于编码传输的场景。
1.一种针对无结构规律分布的稀疏矩阵编码和数据存储方法,其特征在于,包括:
2.根据权利要求1所述的一种针对无结构规律分布的稀疏矩阵编码和数据存储方法,其特征在于,获取原始稀疏矩阵中的非零元素,根据所述非零元素生成第一字段,包括:
3.根据权利要求1所述的一种针对无结构规律分布的稀疏矩阵编码和数据存储方法,其特征在于,获取原始稀疏矩阵中非零元素的位置,根据所述非零元素的位置生成第二字段,包括:
4.根据权利要求3所述的一种针对无结构规律分布的稀疏矩阵编码和数据存储方法,其特征在于,计算原始稀疏矩阵首尾的非零行数关系,得到第三字段,包括:
5.根据权利要求1所述的一种针对无结构规律分布的稀疏矩阵编码和数据存储方法,其特征在于,所述方法还包括恢复步骤,所述恢复步骤包括:
6.根据权利要求1或5所述的一种针对无结构规律分布的稀疏矩阵编码和数据存储方法,其特征在于,所述预设值为4。
7.根据权利要求5所述的一种针对无结构规律分布的稀疏矩阵编码和数据存储方法,其特征在于,根据第三字段的值在填充方向补充相应行数的全零行时,补充的全零行的行数为2*k*m,k为第三字段的值,m为原始稀疏矩阵的行数。