[英]Calculating actual speed between two 2d coordinates in consecutive frames
我试图根据二维坐标的两个点的像素偏移来计算帧之间的实际速度。
坐标的存储方式是co_ordinates[frame_number][pixel_index][pixel_value_x][pixel_value_y]
例如,这就是当co_ordinates[0][0]
时frame_number=1
和pixel_index=1
的显示方式
array([[113. , 231. ],
[112.83630458, 230.73530376]])
您的代码应该可以正常工作。 你可能想也许是先计算帧点云重心的坐标,并从该推断帧的速度。 这更快,并且具有略微减少错误传播的优势:
cx = 0;
cy = 0;
for point_number in range(0, number_of_points):
cx = cx + co_ordinates[frame_number][point_number][0][0]
cy = cy + co_ordinates[frame_number][point_number][0][1]
cx = cx / number_of_points;
cy = cy / number_of_points;
if frame_number > 0:
distance = math.sqrt((cx-prevx)**2 + (cy-prevy)**2)
# Calculate speed
prevx = cx;
prevy = cy;
您可能还想计算帧之间的旋转(所谓的点云配准)。 一种蛮力方法是计算每个点与重心之间的角度,然后计算该点与下一帧中新重心之间的角度,以及所有点的平均角度。 对于刚性云,这给出了与四元数方法相同的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.