如果更改了分辨率,则查找相似图像

Find similar image if resolution was changed

如果存在 GIF 格式的网页横幅,我会使用 python 检查数百个网站。 我有一个包含 gif 文件的文件夹作为示例,我将每个网站的 gif 文件与我自己的示例文件进行比较。 我使用 filecmp,但我发现许多网站都压缩 gif 文件,因此即使文件在视觉上完全相同,filecmp 也不会检测到相同。
是否有任何 python 库来检测两个 gif 文件或视频是否相似,即使分辨率已更改?

比较两幅图像的相似性是一个常见的图像处理问题,因此您开发的解决方案可以简单也可以复杂,具体取决于您的意愿。在您的特定情况下,您需要一种使两个图像大小相同的方法和一种比较图像的方法。

首先,您可能需要将图像转换为 RGB 或灰度数组以进行比较。

我建议将较大图像的尺寸缩小为较小图像的尺寸。与增加较小图像的尺寸相比,这不太可能引入伪影。可以使用 Python Pillow 库来调整大小。

Image.resize(size, resample=None, box=None, reducing_gap=None)

https://pillow.readthedocs.io/en/stable/reference/Image.html

重采样方法可能对相似性度量有一些小的影响。但是,您可能只使用 resample = NEAREST 就好了。

确保图片大小相同后,必须进行比较。可以使用均方误差 (MSE) 或结构相似性 (SSIM) 来比较它们。幸运的是,SSIM 已经在 scikit-image 中实现了。

from skimage.metrics import structural_similarity as ssim

s = ssim(imageA, imageB)

https://www.pyimagesearch.com/2014/09/15/python-compare-two-images/?_ga=2.129476107.608689084.1632687977-376301729.1627364626

对于您的情况,MSE 可能同样有效。但是,如果图像的平均亮度已被某种过程改变,您需要先从每张图像中减去它。

如果调整大小是唯一的问题,那应该就是了。但是,如果图像可能已被翻转、旋转或裁剪,则可能需要额外的步骤。