如何量化两幅图像之间的差异?

225

以下是我想做的事情:

我想定期使用网络摄像头拍照片。有点像时间流逝的东西。但是,如果没有真正发生改变,也就是说,图片基本上看起来相同,我不想存储最新的快照。

我想象有一种量化差异的方法,我将不得不凭经验确定阈值。

我寻求简单而非完美。 我正在使用Python。


相关:https://dev59.com/EnVD5IYBdhLWcg3wTJvF - Anoyz
25个回答

1
使用numpy计算均方误差是一种简单快捷的解决方案:
before = np.array(get_picture())
while True:
    now = np.array(get_picture())
    MSE = np.mean((now - before)**2)

    if  MSE > threshold:
        break

    before = now

0

有许多指标可以用来评估两张图片是否相似,以及它们的相似程度。

我不会在这里涉及任何代码,因为我认为这应该是一个科学问题,而不是技术问题。

一般来说,这个问题与人类对图像的感知有关,因此每个算法都有其支持人类视觉系统特征的方法。

经典的方法包括:

可见差异预测器:一种用于评估图像保真度的算法(https://www.spiedigitallibrary.org/conference-proceedings-of-spie/1666/0000/Visible-differences-predictor--an-algorithm-for-the-assessment-of/10.1117/12.135952.short?SSO=1

图像质量评估:从误差可见性到结构相似性(http://www.cns.nyu.edu/pub/lcv/wang03-reprint.pdf

FSIM:一种用于图像质量评估的特征相似性指数(https://www4.comp.polyu.edu.hk/~cslzhang/IQA/TIP_IQA_FSIM.pdf)。

其中,SSIM(从误差可见性到结构相似性的图像质量评估)是最容易计算且开销也最小的方法,正如另一篇论文“基于梯度相似性的图像质量评估”所报道的那样(https://www.semanticscholar.org/paper/Image-Quality-Assessment-Based-on-Gradient-Liu-Lin/2b819bef80c02d5d4cb56f27b202535e119df988)。

还有许多其他方法。如果您对艺术感兴趣/非常关心,请查看Google学术并搜索类似“视觉差异”,“图像质量评估”等内容。


0
使用SSIM来测量两张图片之间的结构相似性指数。

0

我认为你可以简单地计算欧几里得距离(即逐像素差的平方和的平方根),并在此基础上考虑两个图像的亮度是否相等,如果它们的距离低于某个经验阈值,则认为它们相等。最好使用C函数来实现。


0

如果有人需要检查图像质量指标,可以看看这个非常有用的Python包project sewar


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接