我正在查看将多个JPEG图像作为单个较大图像一起存储时,减少存储空间的问题。基本的直觉是,图像往往有一些相似之处(如在同一地点或在同一时间点采取的),我们可以利用这种相似性来节省空间吗?JPEG图像压缩
整个流程是:输入图像JPG
- >每个图像转换成RGB
图像平铺 - >重新组织相似RGB
瓦片一起 - >再次变换到JPG
格式。当然,在检索图像时,我们需要反向的过程。
使用Y分量的DC系数作为瓷砖重组的相似度量,对于10幅图像我获得了〜8%的空间节省。当我为100张图片做这件事时,节省下降到〜3%。
如何在重新组织后得到储蓄 - 即JPEG编码过程的哪个部分利用了此图像块重组?
相反Y分量的DC系数,在那里你能想到的,其他一些指标将通过JPEG编码来更好地利用
修订:
有一些其他除JPG以外的图像格式可以利用这种相似性聚合多个图像时更好吗?比如像PNG?
谢谢,这很有道理!我使用libjpeg来进行编码和解码。由于JPEG在8x8宏块内进行DCT,所以瓷砖之间的相似性(大于宏块)可能没有多大帮助。但是,我认为相邻宏块的DCT系数是相对编码的,这可能在一定程度上通过这种块重组而得到改善。我修改了我的问题 - 请看看。 – user655617 2013-03-08 00:14:09
很高兴我能帮助澄清事情。是的,libjpeg是IJG参考JPEG标准的JFIF实现。我不记得使用delta编码的DCT系数(在相邻的宏块之间)。 AFAIR中,每个宏块都变成一个单一的8x8系数矩阵,然后对其进行抽取(分割以减少存储它们所需的位数 - 这是有损压缩中的“损失”来自哪里),并在zig中读出时尚。这种排序产生长时间运行的0,它们通过运行长度编码被有效地压缩(而不是存储17个零,我们存储17,0)。 – 2013-03-08 06:14:10