Сравнивая размытость двух похожих изображений - PullRequest
0 голосов
/ 07 марта 2019

Я работаю над прототипом приложения для создания карты (изображения) ткани, отсканированной с помощью микроскопа.Для этого я:

  1. записываю видео, пока использую микроскоп, чтобы «исследовать» ткань
  2. , извлекая некоторые кадры
  3. , сшивая их, чтобы получитьPanorama Image.

Код для извлечения кадров из видео прост и понятен:

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, поиск менее размытого кадра и отбрасывание остальных.

Приветствуются и другие идеи о том, как я могу изменить свой подход (в качестве комментария), имейте в виду, что я работаю над прототипом, поэтому я хотел бы избежать слишком большого количества времени, затрачиваемого на написание решения.Кроме того, он не должен запускаться в режиме реального времени.

Вопрос:

Существует ли умный / простой способ сравнения очень похожих изображений, чтобы определить, какое из нихменее (или более) размыто?

1 Ответ

1 голос
/ 07 марта 2019

Размытость изображения можно оценить с помощью

cv2.Laplacian(image, cv2.CV_64F).var()

См. Также этот превосходный пост https://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/, из которого было взято это предложение.

...