Диапазон выходных значений в функции calcOpticalFlowFarneback в Python OpenCV - PullRequest
0 голосов
/ 17 апреля 2019

Я рассчитываю оптический поток для видео, используя

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

Входное разрешение 320x240.Я вычислил некоторые основные статистические данные для данных о потоке, полученных от функции с этим кодом

arr1 = np.load(file_path)
y = arr1[:,:,0]
x = arr1[:,:,1]

if (y_min > y.min()):
    y_min = y.min()

if (y_max < y.max()):
    y_max = y.max()

, и получил следующие значения:

y:

    min                max                mean                std_dev
-838.59191895        850.21942139        0.01124349        4.41635523



x:

    min                max                mean                std_dev
-58.26990128        73.48989105        0.00110086        2.47226620

Я заметил, что для y координатыминимальное и максимальное значения намного превышают входные размеры, то есть 320x240.Кто-нибудь может указать причину этого наблюдения?Я не могу определить действительный диапазон значений, ожидаемых от функции cv2.calcOpticalFlowFarneback.

1 Ответ

1 голос
/ 01 мая 2019

Теоретически не существует минимальной и максимальной границы в оценках оптического потока, поскольку отсутствует диапазон поиска, как в методах сопоставления блоков.Вектор движения получается из градиентов изображения и уравнения оптического потока и может указывать за границы изображения или видео.Высокие ошибки могут быть грубыми выбросами оценки потока, которая в целом нормальна и может быть вызвана тем, что содержимое изображений резко меняется из-за изменений освещенности, теней, размытости изображения, артефактов кодирования и т. Д.

...