Python OpenCV 中 calcOpticalFlowFarneback 函数的输出值范围
Range of output values in calcOpticalFlowFarneback function in Python OpenCV
我正在使用
计算视频的光流
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
函数期望值的有效范围。
理论上,光流估计中没有最小和最大界限,因为没有像块匹配方法那样的搜索范围。运动矢量源自图像梯度和光流方程,可以指向图像或视频边界之外。高误差可能是流量估计的粗略异常值,这完全正常,如果图像中的内容由于光照变化、阴影、运动模糊、编码伪影等而发生显着变化,则可能会导致这种情况。
我正在使用
计算视频的光流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
函数期望值的有效范围。
理论上,光流估计中没有最小和最大界限,因为没有像块匹配方法那样的搜索范围。运动矢量源自图像梯度和光流方程,可以指向图像或视频边界之外。高误差可能是流量估计的粗略异常值,这完全正常,如果图像中的内容由于光照变化、阴影、运动模糊、编码伪影等而发生显着变化,则可能会导致这种情况。