评估压缩图像的质量?

muc*_*out 12 compression jpeg computer-vision

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

mpe*_*kov 21

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

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

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

如果您的图像集包含非常相似的内容(例如仅面部),则您的任务将更加简单.这是因为遗憾的是,图像质量评估度量通常会受到图像内容的影响.

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

更新:

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

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

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

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

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

让我知道你怎么去.


小智 5

我拍了很多照片到一本古书上(如此相似的布局,每张图片两页),但有些照片非常模糊,以至于无法阅读文字。我搜索了一个现成的批处理脚本,找到了最模糊的一个,但我没有找到任何有用的,所以我使用了网上的另一部分脚本(基于ImageMagick,但不再工作;我不能检索作者以获得学分!),有助于评估单个图像的模糊程度,对其进行调整,并在整个文件夹中对其进行自动化。我在这里上传:

https://gist.github.com/888239

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