以下是我想做的事情:
我想定期使用网络摄像头拍照片。有点像时间流逝的东西。但是,如果没有真正发生改变,也就是说,图片基本上看起来相同,我不想存储最新的快照。
我想象有一种量化差异的方法,我将不得不凭经验确定阈值。
我寻求简单而非完美。 我正在使用Python。
以下是我想做的事情:
我想定期使用网络摄像头拍照片。有点像时间流逝的东西。但是,如果没有真正发生改变,也就是说,图片基本上看起来相同,我不想存储最新的快照。
我想象有一种量化差异的方法,我将不得不凭经验确定阈值。
我寻求简单而非完美。 我正在使用Python。
before = np.array(get_picture())
while True:
now = np.array(get_picture())
MSE = np.mean((now - before)**2)
if MSE > threshold:
break
before = now
有许多指标可以用来评估两张图片是否相似,以及它们的相似程度。
我不会在这里涉及任何代码,因为我认为这应该是一个科学问题,而不是技术问题。
一般来说,这个问题与人类对图像的感知有关,因此每个算法都有其支持人类视觉系统特征的方法。
经典的方法包括:
可见差异预测器:一种用于评估图像保真度的算法(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学术并搜索类似“视觉差异”,“图像质量评估”等内容。
我认为你可以简单地计算欧几里得距离(即逐像素差的平方和的平方根),并在此基础上考虑两个图像的亮度是否相等,如果它们的距离低于某个经验阈值,则认为它们相等。最好使用C函数来实现。