Оптический поток для периодического / последовательности изображений для обнаружения движения видов - PullRequest
0 голосов
/ 04 мая 2020

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

Я нашел в сети код Оптический поток только для двух изображений и применил к моим изображениям. Я хочу применить код оптического потока для последовательности изображений в папке, содержащей 100/1000 изображений . Может кто-нибудь помочь с кодом или учебник для изображений?

Это последовательность изображений, которую я собираюсь использовать. [1] https://drive.google.com/drive/folders/17hQEC3J7-Z_pONCT3Fuq9u0Y8zR5lMT1?usp=sharing На одном снимке я показал свой объект с желтой отметкой. Это ящерица https://drive.google.com/drive/folders/17hQEC3J7-Z_pONCT3Fuq9u0Y8zR5lMT1?usp=sharing

Я применил приведенный ниже код для двух изображений.

import cv2
import numpy as np
import matplotlib.pyplot as plt 

raster = plt.imread("41.JPG")
raster_disp = plt.imread("42.JPG")

prvs = cv2.cvtColor(raster, cv2.COLOR_BGR2GRAY)
next = cv2.cvtColor(raster_disp, cv2.COLOR_BGR2GRAY)

hsv = np.zeros_like(raster)
hsv[...,1] = 255

flow = cv2.calcOpticalFlowFarneback(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0)

mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
hsv[...,0] = ang*180/np.pi/2
hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)
bgr = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)

plt.imshow(bgr)
...