比较两个相似图像的模糊度

Comparing blurriness of two similar images

我正在开发一个原型应用程序,以创建用显微镜扫描的组织的地图(图像)。为此,我是:

  1. 在我使用显微镜 "explore" 组织
  2. 时录制视频
  3. 正在提取一些帧
  4. 拼接得到一张全景图。

从视频中提取帧的代码简单易懂:

import cv2
vidcap = cv2.VideoCapture('.\images\microscope2.avi')
success,image = vidcap.read()
count = 0
success = True
while success:
  success,image = vidcap.read()
  if (count / 20) * 20 == count:
      cv2.imwrite("./images/microscope/frame%d.jpg" % (count/20), image)
  if cv2.waitKey(10) == 27:
      break
  count += 1

如您所见,我只是每 20 帧提取一帧。我目前的问题是有些帧很模糊,因此拼接算法无法检测特征以对齐和重叠图像。

一种解决方案是每 20 帧取一些 - 比方说 3 - 连续帧,找到不太模糊的帧并丢弃其他帧。

欢迎提出关于如何改变我的方法的其他想法(作为评论),请记住我正在开发原型,因此我想避免花费太多时间来编写解决方案。此外,它不需要实时运行。

问题:

是否有 smart/simple 方法来比较非常相似的图像,以判断哪张图像不那么(或更)模糊?

图像的模糊度可以用

来估计
cv2.Laplacian(image, cv2.CV_64F).var()

另请参阅这个出色的 post https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/,此建议就是从中采纳的。