评估压缩图像的质量?

时间:2010-11-16 10:05:31

标签: compression computer-vision jpeg

我有用于计算机视觉任务的图像。该任务对图像质量很敏感。我想删除所有低于某个阈值的图像,但我不确定是否有任何方法/启发式方法可以自动检测通过JPEG严重压缩的图像。有人有想法吗?

3 个答案:

答案 0 :(得分:21)

图像质量评估是一个快速发展的研究领域。由于您未提及能够访问原始(未压缩)图像,因此您对无参考图像质量评估感兴趣。这实际上是一个非常难的问题,但这里有一些要点让你开始:

  • 由于您提到JPEG,因此在JPEG压缩图像中有两种主要的降级功能:阻止模糊
  • 无参考图像质量评估指标通常会查找这两个功能
  • 阻止相当容易,因为它只出现在宏块边界上。宏块是固定大小 - 8x8或16x16,具体取决于使用
  • 编码的图像
  • 模糊有点困难。之所以出现这种情况,是因为图像中的较高频率已被衰减(移除)。您可以将图像分解为块,DCT(离散余弦变换)每个块,并查看DCT结果的高频分量。如果大多数块都缺少高频成分,那么你可能会看到一个模糊的图像
  • 模糊检测的另一种方法是测量图像边缘的平均宽度。对图像执行Sobel边缘检测,然后测量边缘两侧的局部最小值/最大值之间的距离。 Google为Marziliano提供的“无参考感知模糊指标” - 这是一种着名的方法。 Debing的“没有基于参考块的模糊检测”是最近的一篇论文

无论您使用何种指标,请考虑如何处理误报/否定。与简单的阈值处理相反,我使用度量结果对图像进行排序,然后剪切列表的末尾,看起来它只包含模糊的图像。

如果您的图像集包含非常相似的内容(例如仅限脸部),您的任务将会更加简单。这是因为图像质量评估指标 不幸的是,它往往会受到图像内容的影响。

Google学术搜索真的是你的朋友。我希望我能给你一个具体的解决方案,但我还没有 - 如果我做了,我将是一位非常成功的硕士生。

<强>更新

想到另一个想法:对于每个图像,使用JPEG重新压缩图像并检查重新压缩之前和之后文件大小的变化。如果重新压缩后的文件大小比以前小得多,则可能是图像没有被大量压缩,因为它具有通过重新压缩去除的一些重要细节。否则(重新压缩后差异或文件大小很小)很可能是图像被严重压缩。

在重新压缩过程中使用质量设置将允许您确定严重压缩的含义。

如果您使用的是Linux,那么使用bash和imageMagick的转换实用程序实现起来应该不会太难。

您可以尝试此方法的其他变体:

  • 尝试其他形式的降级,而不是JPEG压缩,例如高斯模糊
  • 不是仅仅比较文件大小,而是尝试完整的参考指标,例如SSIM - 这是一个OpenCV实现freely available。其他实现(例如Matlab,C#)也存在,所以环顾四周。

让我知道你怎么走。

答案 1 :(得分:4)

我有很多照片拍摄到一本古老的书籍(布局相似,每张图片两页),但有些照片很模糊,以至于文字无法读取。我搜索了一个现成的批处理脚本来找到最模糊的一个,但我没有找到任何有用的,所以我用了另一部分脚本在网上(基于ImageMagick,但不再工作;我不能检索作者的信用!),有助于评估单个图像的模糊级别,调整它,并在整个文件夹中自动进行。我上传到这里:

https://gist.github.com/888239

希望它对其他人有用。它适用于Linux系统,并使用ImageMagick(有些通常是命令行安装的工具,如gawk,sort,grep等)。

答案 2 :(得分:0)

一个简单的启发式方法可能是width * height * color depth < sigma * file size。当然,您必须为sigma确定一个好的值。 sigma取决于您正在查看的图像的预期熵。