Я работаю над прототипом приложения для создания карты (изображения) ткани, отсканированной с помощью микроскопа.Для этого я:
- записываю видео, пока использую микроскоп, чтобы «исследовать» ткань
- , извлекая некоторые кадры
- , сшивая их, чтобы получить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, поиск менее размытого кадра и отбрасывание остальных.
Приветствуются и другие идеи о том, как я могу изменить свой подход (в качестве комментария), имейте в виду, что я работаю над прототипом, поэтому я хотел бы избежать слишком большого количества времени, затрачиваемого на написание решения.Кроме того, он не должен запускаться в режиме реального времени.
Вопрос:
Существует ли умный / простой способ сравнения очень похожих изображений, чтобы определить, какое из нихменее (или более) размыто?