视频中的速度和加速度测量

时间:2015-05-21 15:54:22

标签: opencv processing velocity frames units-of-measurement

我试图找到一种方法来计算被跟踪物体的速度和加速度,让我们说一个球落下。我正在使用Processing 2制作这个程序,我知道从相机到物体的距离,它可以计算它在运动过程中每一帧的位置。

为了计算速度,我使用了这个公式(全部以像素计算):VelocityX =(PositionX - LastPositionX)/ delta time

与加速类似的东西:AccelerationX =(VelocityX - LastVelocityX)/ delta time

然后,我用帧改变了delta时间。所以现在我的每帧像素的速度和加速度都有,但我的问题是如何将每帧的像素转换为mm / s?更直观的单位。

我也以像素为单位计算位置,但之后我转换为mm,但我对速度和加速度如何做到这一点感到困惑。

// get the current time
    currTime = frameCount;

    deltaTime = (currTime - prevTime);
    // remember current time for the next frame
    prevTime = currTime;
    // Calculate velocity in X and Y directions (pixels / frame)
    if (lastMovingX != Float.MAX_VALUE) {
      velX = (PX - lastMovingX) / deltaTime;
      velY = (PY - lastMovingY) / deltaTime;
    }
    //Save the current frame position for the next calculation
    lastMovingX = PX;
    lastMovingY = PY;
if (lastVelX != Float.MAX_VALUE) {
      accelX = (velX - lastVelX) / deltaTime;
      accelY = (velY - lastVelY) / deltaTime;
    }
    lastVelX = velX;
    lastVelY = velY;

1 个答案:

答案 0 :(得分:1)

如果您知道对象的大小,则可以提取像素/ mm的比率。如果您知道帧速率,则可以将帧转换为秒。

查找像素/ mm =像素大小/对象大小(mm)

(像素/帧)/(像素/ mm)= mm /帧

毫米/帧*帧/秒=毫米/秒

这是你在找什么?