本发明涉及图像压缩领域,特别涉及一种图像压缩方法。
背景技术:
目前采用dct变换对图像编码都是基于宏块的效率不高,压缩效果不明显。
技术实现要素:
为了解决上述问题,本发明实施例提供了一种图像压缩方法。
根据本发明的第一方面,提供了一种图像压缩方法,所述方法包括:
对图像进行分片;
对所述每一分片,对所述分片的每一行、每一列分别作带系数的离散余弦变换,得到变换结果;
获取所述分片对应的mask矩阵;
对所述mask矩阵的每一行、每一列分别作带系数的离散余弦变换,得到所述mask矩阵的变换结果;
以所述分片的变换结果除以所述mask矩阵的变换结果得到所述分片的最终变换结果;
对所述最终变换结果进行量化、编码,得到压缩后的结果。
根据本发明的第二方面,提供了一种图像压缩装置,包括:
分片单元,用于对图像进行分片;
变换单元,用于对所述每一分片,对所述分片的每一行、每一列分别作带系数的离散余弦变换,得到变换结果;
mask矩阵获取单元,用于获取所述分片对应的mask矩阵;
mask矩阵变换单元,用于对所述mask矩阵的每一行、每一列分别作带系数的离散余弦变换,得到所述mask矩阵的变换结果;
计算单元,用于以所述分片的变换结果除以所述mask矩阵的变换结果得到所述分片的最终变换结果;
压缩单元,用于对所述最终变换结果进行量化、编码,得到压缩后的结果。
本发明实施例提供一种对图像进行分片并对每片进行优化的dct变换压缩方法,能够有效地提升图像的压缩率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的方法流程图;
图2是本发明实施例提供的方法流程图;
图3是本发明实施例提供的方法流程图;
图4是本发明实施例提供的装置示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了一种图像压缩方法,如图1所示,所述方法包括:
步骤102,对图像进行分片。
可以采用任意方式对图像进行分片,例如通过深度学习方法进行分片,或者通过slic算法进行分片,本发明实施例对具体的分片方法不加限定。
步骤104,对所述每一分片,对所述分片的每一行、每一列分别作带系数的离散余弦变换,得到变换结果。
具体的,包括:
获取所述分片中每行的像素个数;
对于所述每行像素做dct变换,得到第一中间变换结果;
对所述第一中间变换结果乘以第一变换系数,得到第一变换结果;
对所述分片进行90°转置;
获取转置后的所述分片中每行的像素个数;
对于所述每行像素做dct变换,得到第二中间变换结果;
对所述第二中间变换结果乘以第二变换系数,得到所述分片的变换结果。
步骤106,获取所述分片对应的mask矩阵。
具体的,包括:
获取所述分片中的每个像素点的坐标值(x,y);
获取所有横坐标中的最大值xmax和最小值xmin;
获取所有纵坐标中的最大值ymax和最小值ymin;
由(xmax,ymax)、(xmax,ymin)、(xmin,ymax)、(xmin,ymin)四点所组成的矩形就是所述分片的最小包络矩形;
对于所述最小包络矩形中的每一像素,如果该像素的取值不为空,则所述mask矩阵中与该像素对应的值为1,否则,所述mask矩阵中与该像素对应的值为0。
步骤108,对所述mask矩阵的每一行、每一列分别作带系数的离散余弦变换,得到所述mask矩阵的变换结果。
具体的,包括:
获取所述mask中每行的像素个数;
对于所述mask矩阵的每行像素做dct变换,得到第三中间变换结果;
对所述第三中间变换结果乘以第三变换系数,得到第三变换结果;
对所述mask矩阵进行90°转置;
获取转置后的所述mask矩阵中每行的像素个数;
对于所述每行像素做dct变换,得到第四中间变换结果;
对所述第四中间变换结果乘以第四变换系数,得到所述mask矩阵的变换结果。
步骤110,以所述分片的变换结果除以所述mask矩阵的变换结果得到所述分片的最终变换结果。
步骤112,对所述最终变换结果进行量化、编码,得到压缩后的结果。
本发明实施例提供一种对图像进行分片并对每片进行优化的dct变换压缩方法,能够有效地提升图像的压缩率。
实施例二
本发明实施例提供了一种图像压缩方法,如图2所示,所述方法包括:
步骤202,对图像进行分片。
可以采用任意方式对图像进行分片,例如通过深度学习方法进行分片,或者通过slic算法进行分片,本发明实施例对具体的分片方法不加限定。
步骤204,对所述每一分片,计算其最小包络矩形。
具体的,包括:
获取所述分片中的每个像素点的坐标值(x,y);
获取所有横坐标中的最大值xmax和最小值xmin;
获取所有纵坐标中的最大值ymax和最小值ymin;
由(xmax,ymax)、(xmax,ymin)、(xmin,ymax)、(xmin,ymin)四点所组成的矩形就是所述分片的最小包络矩形。
步骤206,对所述每一分片,根据所述最小包络矩形计算对应的mask矩阵。
具体的,对于所述最小包络矩形中的每一像素,如果该像素的取值不为空,则所述mask矩阵中与该像素对应的值为1,否则,所述mask矩阵中与该像素对应的值为0。
步骤208,对所述每一分片,对所述mask矩阵进行采样编码。
具体的,通过采样建立所述mask矩阵的图像金字塔,直到所述图像金字塔的顶层只有1个像素为止。图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。
本发明实施例中采用逐级采样,直到所述图像金字塔的顶层只有1个像素为止。示例性的,假设原始图像的分辨率为512×512,对其进行第一次采样后得到分辨率为256×256的图像,再次采样后得到分辨率为128×128的图像,再次采样后得到分辨率为64×64的图像,再次采样后得到分辨率为32×32的图像,再次采样后得到分辨率为16×16的图像,再次采样后得到分辨率为8×8的图像,再次采样后得到分辨率为4×4的图像,再次采样后得到分辨率为2×2的图像,再次采样后最终得到分辨率为1×1的图像,即图像金字塔顶层的只有1个像素的图像。
步骤210,对所述每一分片,根据所述mask矩阵和所述采样编码进行压缩。
具体的,对于每个图像金字塔,处理方法如下:
首先,从所述图像金字塔的最顶层开始,通过该层对图像金字塔的下一层进行预测,得到预测结果。
具体的,使用该层的像素值对图像金字塔的下一层的像素进行填充,得到所述预测结果。示例性的,假设最顶层的1×1的像素取值为1,则通过填充得到的下一层2×2像素图像的预测结果为:
其次,根据所述预测结果与所述mask矩阵进行对比,得到比对结果。
具体的,将所述预测结果与所述mask矩阵中对应的像素位置的值进行比较,示例性的假设上述2×2像素图像对应的mask矩阵取值为:
则将(1)与(2)进行比较,得到的对比结果为1110(此处以1代表真,以0代表假)。
再次,根据所述mask矩阵对所述预测结果进行修正,得到修正后的预测结果:
最后,根据所述修正后的预测结果(3),采用上述方法对图像金字塔的下一层进行预测和比较,得到对比结果和修正后的预测结果,如此循环,直至所述图像金字塔的最底层。
最终,根据所述图像金字塔的顶层与其他每一层的比对结果得到所述图像金字塔对应的通道的二进制编码串。
对所述二进制编码串进行压缩。
示例性的,可以采用算术编码的方式对所述二进制编码串进行压缩,本发明实施例对具体的压缩方法不加限定。
步骤212,根据所有分片的压缩结果得到所述图像的第一压缩结果。
具体的,合并所有分片的压缩结果,得到所述图像的第一压缩结果。本发明实施例对具体的合并方法不加限制。
进一步地,在步骤202之后,还包括:
对所述每一分片的每个颜色通道进行压缩。
具体的,所述颜色通道包括:rgb通道或者yuv通道,如果该图像的颜色空间为rgb颜色空间,则该图像的三个通道分别为r、g、b通道,如果该图像的颜色空间为yuv颜色空间,则该图像的三个通道分别为y、u、v通道。
合并所有分片的所有颜色通道的压缩结果,得到所述图像的第二压缩结果。
将所述第一压缩结果和所述第二压缩结果合并为所述图像的压缩结果。
本发明实施例提供一种对图像进行分片并对每片的形状进行压缩的方法,能够有效地表征非线性特征,并提升图像的压缩率。
实施例三
本发明实施例提供了一种图像压缩方法,如图2所示,所述方法包括:
步骤202,对图像进行分片。
可以采用任意方式对图像进行分片,例如通过深度学习方法进行分片,或者通过slic算法进行分片,本发明实施例对具体的分片方法不加限定。
步骤204,对所述每一分片,计算其最小包络矩形。
具体的,包括:
获取所述分片中的每个像素点的坐标值(x,y);
获取所有横坐标中的最大值xmax和最小值xmin;
获取所有纵坐标中的最大值ymax和最小值ymin;
由(xmax,ymax)、(xmax,ymin)、(xmin,ymax)、(xmin,ymin)四点所组成的矩形就是所述分片的最小包络矩形。
步骤206,对所述每一分片,根据所述最小包络矩形计算对应的mask矩阵。
具体的,对于所述最小包络矩形中的每一像素,如果该像素的取值不为空,则所述mask矩阵中与该像素对应的值为1,否则,所述mask矩阵中与该像素对应的值为0。
步骤208,对所述每一分片,对所述mask矩阵进行采样编码。
具体的,通过采样建立所述mask矩阵的图像金字塔,直到所述图像金字塔的顶层只有1个像素为止。图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。
本发明实施例中采用逐级采样,直到所述图像金字塔的顶层只有1个像素为止。示例性的,假设原始图像的分辨率为512×512,对其进行第一次采样后得到分辨率为256×256的图像,再次采样后得到分辨率为128×128的图像,再次采样后得到分辨率为64×64的图像,再次采样后得到分辨率为32×32的图像,再次采样后得到分辨率为16×16的图像,再次采样后得到分辨率为8×8的图像,再次采样后得到分辨率为4×4的图像,再次采样后得到分辨率为2×2的图像,再次采样后最终得到分辨率为1×1的图像,即图像金字塔顶层的只有1个像素的图像。
步骤210,对所述每一分片,根据所述mask矩阵和所述采样编码进行压缩。
具体的,对于每个图像金字塔,处理方法如下:
首先,从所述图像金字塔的最顶层开始,通过该层对图像金字塔的下一层进行预测,得到预测结果。
具体的,使用该层的像素值对图像金字塔的下一层的像素进行填充,得到所述预测结果。示例性的,假设最顶层的1×1的像素取值为1,则通过填充得到的下一层2×2像素图像的预测结果为:
其次,根据所述预测结果与所述mask矩阵进行对比,得到比对结果。
具体的,将所述预测结果与所述mask矩阵中对应的像素位置的值进行比较,示例性的假设上述2×2像素图像对应的mask矩阵取值为:
则将(1)与(2)进行比较,得到的对比结果为1110(此处以1代表真,以0代表假)。
再次,根据所述mask矩阵对所述预测结果进行修正,得到修正后的预测结果:
最后,根据所述修正后的预测结果(3),采用上述方法对图像金字塔的下一层进行预测和比较,得到对比结果和修正后的预测结果,如此循环,直至所述图像金字塔的最底层。
最终,根据所述图像金字塔的顶层与其他每一层的比对结果得到所述图像金字塔对应的通道的二进制编码串。
对所述二进制编码串进行压缩。示例性的,可以采用算术编码的方式对所述二进制编码串进行压缩,本发明实施例对具体的压缩方法不加限定。
步骤212,根据所有分片的压缩结果得到所述图像的第一压缩结果。
具体的,合并所有分片的压缩结果,得到所述图像的第一压缩结果。本发明实施例对具体的合并方法不加限制。
进一步地,在步骤202之后,还包括:
对所述每一分片的每个颜色通道进行压缩。
具体的,所述颜色通道包括:rgb通道或者yuv通道,如果该图像的颜色空间为rgb颜色空间,则该图像的三个通道分别为r、g、b通道,如果该图像的颜色空间为yuv颜色空间,则该图像的三个通道分别为y、u、v通道。
所述对所述每一分片的每个颜色通道进行压缩包括:
对所述颜色通道的每一行做dct(discretecosinetransform,离散余弦变换)变换,得到变换后的结果。
具体的,所述对所述颜色通道的每一行做dct变换,得到变换后的结果包括:
获取所述分片中每行的像素个数。
示例性的,假设所述分片共有i行,则每行的像素个数记为ni。
对于所述每行像素做dct变换,得到中间变换结果。
示例性的,计算公式如下:
对所述中间变换结果乘以
对所述分片进行90°转置。
获取转置后的所述分片中每行的像素个数。
示例性的,假设所述分片共有j行,则每行的像素个数记为nj。
对于所述每行像素做dct变换,得到中间变换结果。
示例性的,计算公式如下:
对所述中间变换结果乘以
获取所述分片对应的mask矩阵,即对于所述分片对应的最小包络矩形中的每一像素,如果该像素的取值不为空,则所述mask矩阵中与该像素对应的值为1,否则,所述mask矩阵中与该像素对应的值为0。
对所述mask矩阵,也按照上述方法进行dct变换,得到对应的变换结果。
以所述分片的变换结果除以所述mask矩阵的变换结果得到所述分片的所述通道的最终变换结果。
对所述最终变换结果进行量化、编码,得到压缩后的结果。
合并所有分片的所有颜色通道的压缩结果,得到所述图像的第二压缩结果。
将所述第一压缩结果和所述第二压缩结果合并为所述图像的压缩结果。
本发明实施例提供一种图像压缩方法,基于每个图像分片的形状对dct变换进行优化,相比传统的dct变换压缩方法,能够有效的提升图像的压缩率。
实施例四
本发明实施例提供了一种图像压缩方法,如图3所示,所述方法包括:
步骤302,对图像进行分片。
可以采用任意方式对图像进行分片,例如通过深度学习方法进行分片,或者通过slic算法进行分片,本发明实施例对具体的分片方法不加限定。
步骤304,对所述每一分片,计算其最小包络矩形。
具体的,包括:
获取所述分片中的每个像素点的坐标值(x,y);
获取所有横坐标中的最大值xmax和最小值xmin;
获取所有纵坐标中的最大值ymax和最小值ymin;
由(xmax,ymax)、(xmax,ymin)、(xmin,ymax)、(xmin,ymin)四点所组成的矩形就是所述分片的最小包络矩形。
步骤306,对所述每一分片,根据所述最小包络矩形计算对应的mask矩阵。
具体的,对于所述最小包络矩形中的每一像素,如果该像素的取值不为空,则所述mask矩阵中与该像素对应的值为1,否则,所述mask矩阵中与该像素对应的值为0。
步骤308,对所述每一分片,对所述mask矩阵进行采样编码。
具体的,通过采样建立所述mask矩阵的图像金字塔,直到所述图像金字塔的顶层只有1个像素为止。图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。
本发明实施例中采用逐级采样,直到所述图像金字塔的顶层只有1个像素为止。示例性的,假设原始图像的分辨率为512×512,对其进行第一次采样后得到分辨率为256×256的图像,再次采样后得到分辨率为128×128的图像,再次采样后得到分辨率为64×64的图像,再次采样后得到分辨率为32×32的图像,再次采样后得到分辨率为16×16的图像,再次采样后得到分辨率为8×8的图像,再次采样后得到分辨率为4×4的图像,再次采样后得到分辨率为2×2的图像,再次采样后最终得到分辨率为1×1的图像,即图像金字塔顶层的只有1个像素的图像。
步骤310,对所述每一分片,根据所述mask矩阵和所述采样编码进行压缩。
具体的,对于每个图像金字塔,处理方法如下:
首先,从所述图像金字塔的最顶层开始,通过该层对图像金字塔的下一层进行预测,得到预测结果。
具体的,使用该层的像素值对图像金字塔的下一层的像素进行填充,得到所述预测结果。示例性的,假设最顶层的1×1的像素取值为1,则通过填充得到的下一层2×2像素图像的预测结果为:
其次,根据所述预测结果与所述mask矩阵进行对比,得到比对结果。
具体的,将所述预测结果与所述mask矩阵中对应的像素位置的值进行比较,示例性的假设上述2×2像素图像对应的mask矩阵取值为:
则将(1)与(2)进行比较,得到的对比结果为1110(此处以1代表真,以0代表假)。
再次,根据所述mask矩阵对所述预测结果进行修正,得到修正后的预测结果:
最后,根据所述修正后的预测结果(3),采用上述方法对图像金字塔的下一层进行预测和比较,得到对比结果和修正后的预测结果,如此循环,直至所述图像金字塔的最底层。
最终,根据所述图像金字塔的顶层与其他每一层的比对结果得到所述图像金字塔对应的通道的二进制编码串。
对所述二进制编码串进行压缩。示例性的,可以采用算术编码的方式对所述二进制编码串进行压缩,本发明实施例对具体的压缩方法不加限定。
步骤312,根据所有分片的压缩结果得到所述图像的第一压缩结果。
具体的,合并所有分片的压缩结果,得到所述图像的第一压缩结果。本发明实施例对具体的合并方法不加限制。
步骤314,按照预设规则对步骤302中的分片进行合并,得到合并后的新的分片。
具体的,可以根据各个分片的边界将相邻的分片进行合并,本发明对具体的合并方法不加限制。
步骤316,对每一个所述新分片,按照步骤304到步骤312的方法进行处理,得到所述图像的中间压缩结果。
步骤318,比较步骤312中的第一压缩结果和步骤316中的中间压缩结果,选择较优的结果为所述图像的新的第一压缩结果。
步骤320,重复步骤314至步骤318,直至收敛,以收敛后的压缩结果为所述图像的第一压缩结果。
进一步地,在步骤302之后,还包括:
对所述每一分片的每个颜色通道进行压缩。
具体的,所述颜色通道包括:rgb通道或者yuv通道,如果该图像的颜色空间为rgb颜色空间,则该图像的三个通道分别为r、g、b通道,如果该图像的颜色空间为yuv颜色空间,则该图像的三个通道分别为y、u、v通道。
所述对所述每一分片的每个颜色通道进行压缩包括:
对所述颜色通道的每一行做dct(discretecosinetransform,离散余弦变换)变换,得到变换后的结果。
具体的,所述对所述颜色通道的每一行做dct变换,得到变换后的结果包括:
获取所述分片中每行的像素个数。
示例性的,假设所述分片共有i行,则每行的像素个数记为ni。
对于所述每行像素做dct变换,得到中间变换结果。
示例性的,计算公式如下:
对所述中间变换结果乘以
对所述分片进行90°转置。
获取转置后的所述分片中每行的像素个数。
示例性的,假设所述分片共有j行,则每行的像素个数记为nj。
对于所述每行像素做dct变换,得到中间变换结果。
示例性的,计算公式如下:
对所述中间变换结果乘以
获取所述分片对应的mask矩阵,即对于所述分片对应的最小包络矩形中的每一像素,如果该像素的取值不为空,则所述mask矩阵中与该像素对应的值为1,否则,所述mask矩阵中与该像素对应的值为0。
对所述mask矩阵,也按照上述方法进行dct变换,得到对应的变换结果。
以所述分片的变换结果除以所述mask矩阵的变换结果得到所述分片的所述通道的最终变换结果。
对所述最终变换结果进行量化、编码,得到压缩后的结果。
合并所有分片的所有颜色通道的压缩结果,得到所述图像的第二压缩结果。
将所述第一压缩结果和所述第二压缩结果合并为所述图像的压缩结果。
本发明实施例提供一种图像压缩方法,通过对图像分片的合并、比较压缩结果来选择最优的分片方式,从而能够更好地提升图像的压缩率。
实施例五
本发明实施例提供了一种图像压缩方法,如图3所示,所述方法包括:
步骤302,对图像进行分片。
可以采用任意方式对图像进行分片,例如通过深度学习方法进行分片,或者通过slic算法进行分片,本发明实施例对具体的分片方法不加限定。
步骤304,对所述每一分片,计算其最小包络矩形。
具体的,包括:
获取所述分片中的每个像素点的坐标值(x,y);
获取所有横坐标中的最大值xmax和最小值xmin;
获取所有纵坐标中的最大值ymax和最小值ymin;
由(xmax,ymax)、(xmax,ymin)、(xmin,ymax)、(xmin,ymin)四点所组成的矩形就是所述分片的最小包络矩形。
步骤306,对所述每一分片,根据所述最小包络矩形计算对应的mask矩阵。
具体的,对于所述最小包络矩形中的每一像素,如果该像素的取值不为空,则所述mask矩阵中与该像素对应的值为1,否则,所述mask矩阵中与该像素对应的值为0。
步骤308,对所述每一分片,对所述mask矩阵进行采样编码。
具体的,通过采样建立所述mask矩阵的图像金字塔,直到所述图像金字塔的顶层只有1个像素为止。图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。
本发明实施例中采用逐级采样,直到所述图像金字塔的顶层只有1个像素为止。示例性的,假设原始图像的分辨率为512×512,对其进行第一次采样后得到分辨率为256×256的图像,再次采样后得到分辨率为128×128的图像,再次采样后得到分辨率为64×64的图像,再次采样后得到分辨率为32×32的图像,再次采样后得到分辨率为16×16的图像,再次采样后得到分辨率为8×8的图像,再次采样后得到分辨率为4×4的图像,再次采样后得到分辨率为2×2的图像,再次采样后最终得到分辨率为1×1的图像,即图像金字塔顶层的只有1个像素的图像。
步骤310,对所述每一分片,根据所述mask矩阵和所述采样编码进行压缩。
具体的,对于每个图像金字塔,处理方法如下:
首先,从所述图像金字塔的最顶层开始,通过该层对图像金字塔的下一层进行预测,得到预测结果。
具体的,使用该层的像素值对图像金字塔的下一层的像素进行填充,得到所述预测结果。
其次,根据所述预测结果与所述mask矩阵进行对比,得到比对结果。
通常来说,通过上述填充方法得到的预测结果中大部分的像素都是与mask矩阵中对应的像素相一致的,有可能出现不一致的地方大多出现在用于填充的填充层中的图像边界处,因为在这些边界处像素的取值可能会出现突变。利用这种特性,可以加快对比的速度。
具体的,计算该层图像金字塔的边界,获取所述预测结果中与所述边界对应的像素,将这些(这个)像素与所述mask矩阵中对应的像素位置的值进行比较,得到相应的对比结果,对于处于非边界处的像素,直接设置其比对结果为真。
再次,根据所述mask矩阵对所述预测结果进行修正,得到修正后的预测结果;
最后,根据所述修正后的预测结果,采用上述方法对图像金字塔的下一层进行预测和比较,得到对比结果和修正后的预测结果,如此循环,直至所述图像金字塔的最底层。
最终,根据所述图像金字塔的顶层与其他每一层的比对结果得到所述图像金字塔对应的通道的二进制编码串。
对所述二进制编码串进行压缩。示例性的,可以采用算术编码的方式对所述二进制编码串进行压缩,本发明实施例对具体的压缩方法不加限定。
步骤312,根据所有分片的压缩结果得到所述图像的第一压缩结果。
具体的,合并所有分片的压缩结果,得到所述图像的第一压缩结果。本发明实施例对具体的合并方法不加限制。
步骤314,按照预设规则对步骤302中的分片进行合并,得到合并后的新的分片。
具体的,可以根据各个分片的边界将相邻的分片进行合并,本发明对具体的合并方法不加限制。
步骤316,对每一个所述新分片,按照步骤304到步骤312的方法进行处理,得到所述图像的中间压缩结果。
步骤318,比较步骤312中的第一压缩结果和步骤316中的中间压缩结果,选择较优的结果为所述图像的新的第一压缩结果。
步骤320,重复步骤314至步骤318,直至收敛,以收敛后的压缩结果为所述图像的第一压缩结果。
进一步地,在步骤302之后,还包括:
对所述每一分片的每个颜色通道进行压缩。
具体的,所述颜色通道包括:rgb通道或者yuv通道,如果该图像的颜色空间为rgb颜色空间,则该图像的三个通道分别为r、g、b通道,如果该图像的颜色空间为yuv颜色空间,则该图像的三个通道分别为y、u、v通道。
所述对所述每一分片的每个颜色通道进行压缩包括:
对所述颜色通道的每一行做dct(discretecosinetransform,离散余弦变换)变换,得到变换后的结果。
具体的,所述对所述颜色通道的每一行做dct变换,得到变换后的结果包括:
获取所述分片中每行的像素个数。
示例性的,假设所述分片共有i行,则每行的像素个数记为ni。
对于所述每行像素做dct变换,得到中间变换结果。
示例性的,计算公式如下:
对所述中间变换结果乘以
对所述分片进行90°转置。
获取转置后的所述分片中每行的像素个数。
示例性的,假设所述分片共有j行,则每行的像素个数记为nj。
对于所述每行像素做dct变换,得到中间变换结果。
示例性的,计算公式如下:
对所述中间变换结果乘以
获取所述分片对应的mask矩阵,即对于所述分片对应的最小包络矩形中的每一像素,如果该像素的取值不为空,则所述mask矩阵中与该像素对应的值为1,否则,所述mask矩阵中与该像素对应的值为0。
对所述mask矩阵,也按照上述方法进行dct变换,得到对应的变换结果。
以所述分片的变换结果除以所述mask矩阵的变换结果得到所述分片的所述通道的最终变换结果。
对所述最终变换结果进行量化、编码,得到压缩后的结果。
合并所有分片的所有颜色通道的压缩结果,得到所述图像的第二压缩结果。
将所述第一压缩结果和所述第二压缩结果合并为所述图像的压缩结果。
本发明实施例提供一种图像压缩方法,通过获取边缘的方式加快对所述图像金字塔每一层的预测速度,能够有效的提升图像的压缩速度。
实施例六
本发明实施例提供了一种图像压缩装置,如图4所示,所述装置包括:
分片单元402,对图像进行分片。
可以采用任意方式对图像进行分片,例如通过深度学习方法进行分片,或者通过slic算法进行分片,本发明实施例对具体的分片方法不加限定。
变换单元404,对所述每一分片,对所述分片的每一行、每一列分别作带系数的离散余弦变换,得到变换结果。
具体的,包括:
获取所述分片中每行的像素个数;
对于所述每行像素做dct变换,得到第一中间变换结果;
对所述第一中间变换结果乘以第一变换系数,得到第一变换结果;
对所述分片进行90°转置;
获取转置后的所述分片中每行的像素个数;
对于所述每行像素做dct变换,得到第二中间变换结果;
对所述第二中间变换结果乘以第二变换系数,得到所述分片的变换结果。
mask矩阵获取单元406,获取所述分片对应的mask矩阵。
具体的,包括:
获取所述分片中的每个像素点的坐标值(x,y);
获取所有横坐标中的最大值xmax和最小值xmin;
获取所有纵坐标中的最大值ymax和最小值ymin;
由(xmax,ymax)、(xmax,ymin)、(xmin,ymax)、(xmin,ymin)四点所组成的矩形就是所述分片的最小包络矩形;
对于所述最小包络矩形中的每一像素,如果该像素的取值不为空,则所述mask矩阵中与该像素对应的值为1,否则,所述mask矩阵中与该像素对应的值为0。
mask矩阵变换单元408,对所述mask矩阵的每一行、每一列分别作带系数的离散余弦变换,得到所述mask矩阵的变换结果。
具体的,包括:
获取所述mask中每行的像素个数;
对于所述mask矩阵的每行像素做dct变换,得到第三中间变换结果;
对所述第三中间变换结果乘以第三变换系数,得到第三变换结果;
对所述mask矩阵进行90°转置;
获取转置后的所述mask矩阵中每行的像素个数;
对于所述每行像素做dct变换,得到第四中间变换结果;
对所述第四中间变换结果乘以第四变换系数,得到所述mask矩阵的变换结果。
计算单元410,以所述分片的变换结果除以所述mask矩阵的变换结果得到所述分片的最终变换结果。
压缩单元412,对所述最终变换结果进行量化、编码,得到压缩后的结果。
本发明实施例提供一种对图像进行分片并对每片进行优化的dct变换压缩装置,能够有效地提升图像的压缩率。