JPEG图像压缩

时间:2013-03-07 12:48:35

标签: image-processing compression png jpeg libpng

我正在研究将多个JPEG 图像作为单个较大图像存储在一起时减少存储空间的问题。基本的直觉是图像往往具有一些相似之处(比如在同一位置或大约在同一时间点拍摄的图像),我们可以利用这种相似性来节省空间吗?

整体流程为:输入JPG图片 - >每个图像转换为RGB图像平铺 - >将类似的RGB图块重新组织在一起 - >再次转换为JPG格式。当然,在检索图像时,我们需要反转过程。

使用Y分量的DC系数作为区块重组的相似性度量,我获得了10个图像的~8%空间节省。当我为100张图像执行此操作时,节省的成本降低到约3%。

  • 如何在磁贴重组后获得节省 - 即JPEG编码过程的哪一部分利用此图像磁贴重组?

  • 除了Y分量的DC系数之外,还有一些其他可以想到的指标,可以通过JPEG编码更好地利用


修:

除了JPG之外,还有一些其他图像格式可以在聚合多个图像时更好地利用这种相似性吗?比如PNG?

2 个答案:

答案 0 :(得分:5)

您最有可能使用JFIF进行编码。

我不确定您希望这种方法如何工作。如果我理解正确的话,你就是将图像分割成图块,将它们聚合成一个巨型图像,“相似”的图块彼此靠近排列。

AFAIK,JPEG实现在图像中为每个单独的8x8图块执行单独的DCT,称为宏块。换句话说,JPEG不能利用相邻宏块之间的一致性(这似乎是压缩技术的基本假设)。

如果您自己的磁贴大于宏块,则除了图像标题空间的节省之外,您将看不到任何改进。

例如:10个JPG图像标题替换为1将节省90%的空间,但仅在标题中。查看整个文件时,标题只占整个文件的一小部分,因此节省的空间很少。将100个图像标题替换为1时,可以节省99%,但只能在标题上再次。在这两种情况下,所有宏块仍然像以前一样被编码和存储。

答案 1 :(得分:2)

有两个方面你会看到好处:

首先,当你把相似的区域放在一起时(特别是如果图像的边缘完美匹配而没有不连续性 - 虽然这将是非常罕见的),DCT(频率空间) jpeg算法的一部分通过逐步逼近大区域(不确定最大大小是多少)来工作,然后查看大区域和多个较小区域的近似之间的误差,并生成更多的局部化校正。

我怀疑这种效果很小,除非你的图像非常相似或非常小(因此它们的边缘长度与其面积成比例)。

其次,jpeg压缩的Huffman coding部分会看到一个好处,因为相同的位模式会出现在多个子图像中,并使用相同的(短)令牌进行压缩)。

此方面不取决于您压缩图像的布置 - 只要它们位于同一图像中。