繁体   English   中英

计算连续帧中两个二维坐标之间的实际速度

[英]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=1pixel_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM