我有一些用于计算机视觉任务的图像。这个任务对图像质量非常敏感。我想删除所有低于某个阈值的图像,但我不确定是否有任何方法/启发式来自动检测通过JPEG大量压缩的图像。有人有想法吗?
我有一些用于计算机视觉任务的图像。这个任务对图像质量非常敏感。我想删除所有低于某个阈值的图像,但我不确定是否有任何方法/启发式来自动检测通过JPEG大量压缩的图像。有人有想法吗?
图像质量评估是一个快速发展的研究领域。由于您没有提到能够访问原始(未压缩)图像,因此您对无参考图像质量评估感兴趣。这实际上是一个相当棘手的问题,但以下是一些入门的要点:
无论您使用哪种指标,都要考虑如何处理假阳性/阴性。与简单的阈值相反,我会使用指标结果对图像进行排序,然后剪切看起来只包含模糊图像的列表末尾。
如果您的图像集包含相似的内容(例如仅包含人脸),那么您的任务将更加简单。这是因为遗憾的是,图像质量评估指标通常会受到图像内容的影响。
Google Scholar在这里确实是您的好朋友。我希望我能给您一个具体的解决方案,但我目前还没有一个 - 如果有的话,我会成为一个非常成功的硕士研究生。
更新:
我想到了另一个想法:对于每个图像,使用JPEG重新压缩该图像,并检查重新压缩前后文件大小的变化。如果重新压缩后的文件大小显著小于之前的大小,则很可能该图像没有被强烈压缩,因为重新压缩时移除了一些重要细节。否则(差异非常小或重新压缩后文件大小更大),则很可能该图像已经被强烈压缩。
在重新压缩过程中使用图像质量设置将允许您确定何为强烈压缩。
如果您使用Linux,那么使用bash和imageMagick的convert实用程序实现这个想法应该不太难。
您可以尝试这个方法的其他变体:
请告诉我您的进展情况。
一个简单的启发式方法是查看 width * height * color depth < sigma * file size
。当然,您需要确定sigma
的一个好值。 sigma
将取决于您正在查看的图像的预期熵。