2014-02-15 35 views
2

我在JPEG文件中有许多不同版本的相同照片。我需要一个在Linux上运行的命令行工具或库,它从可用版本中选择最高质量的版本。逐个查看文件(并放大)不是一种选择,因为我需要对数千套照片重复此操作。我已经知道哪些照片是彼此的版本。如何选择最高质量的照片版本?

最简单的近似解决方案是选择宽度和高度最大的图像文件。有图像A和图像B时不起作用;图像B是通过将图像A缩小因子2而创建的,然后将结果按比例缩放3倍。在这种情况下,图像A具有更多信息并且质量更高,但图像B具有更大的尺寸。我需要一个解决方案,在这种情况下和类似的情况下选择图像A.

+3

棘手的问题。 [This](https://ece.uwaterloo.ca/~z70wang/publications/icip02.pdf)可以作为一个起点。 –

+0

这不反映文件的大小吗?我会假设,放大的JPEG图像比原始大小相同的图像占用更少的空间。也许你可以根据文件大小,压缩比以及宽度/高度作为特征来开发一些启发式方法? – qqilihq

+1

我可能会从https://www.google.com/search?q=measure+image+entropy – bobah

回答

1

图片的“质量”不是一件容易测量的东西,而且很可能是主观的。也就是说,有两个近似的解决方案可以想到。

  • 文件大小:正如@qqilihq所示,jpeg的文件大小将大致反映照片的质量。在您给出的示例中,文件缩小后恢复为完整大小时,您会希望原始(非缩放)版本具有更大的文件大小。缩小JPEG文件时丢失的细节将不再占用文件中的空间。似乎很容易测试,至少。
  • 您可以从jpeg的元数据中提取有用的信息。用于编辑jpeg的程序和jpegs的规格可能会有很大不同。以下是两个资源:ExifOracle
+0

开始感谢您的提示。是的,我可以使用文件大小,宽度和高度的组合作为信号,但还需要做更多的研究,以便将这些结合起来以得到可靠的分数。我忘了提及输入文件没有任何元数据。 – pts