Motion Models

Suppose we know that our motion followed a certain pattern, or that certain objects in the scene moved in a certain way. This would allow us to further constrain our motion beyond the simple constraints that we imposed earlier (smoothness, brightness constancy, etc.). For example, we know that objects closer to the camera move more on the camera image plane than objects further away from the camera, for the same amount of motion. Thus, if we know the depth of a region of points, we can enforce another constraint on their motion and get better flow fields.

1. Full motion model

A point rotating about some origin with a rotational velocity ω that also has a translational velocity t has a total velocity of:

V=Ω×R+T

[vxvyvz]=[0ωzωyωz0ωxωyωx0][XYZ]+[vTxvTyvTz]

2. General Motion

In order to figure out how the point is moving in the image, we need to convert from these values in world space (X,Y,Z) to image space (x,y) x=fXZy=fYZ Velocity is the derivative of the positions: u=vx=fZVXXVZZ2=fVXZxVZZv=vY=fZVyXVZZ2=fVYZyVZZ

To make it look nicer: [u(x,y)v(x,y)]=1Z(x,y)A(x,y)T+B(x,y)Ω where T is the translation vector, Ω is rotation A(x,y)=[f0x0fy]B(x,y)=[(xy)/f(f+x2)/fy(f+y2)/f(xy)/fx] The beauty of this arrangement is that A and B are functions of things we know, and they relate our world-space vectors t,ω to image space. This is the general motion model. We can see that the depth in world space, Z(x,y) only impacts the translational term.

results matching ""

    No results matching ""