Hi,
For
OdometryBOW, there is no "keyframe", only a local map of 3D features to compare to. While the camera is moving, new features of the new frame are added to the local map. If the local map size grows over a fixed threshold ("OdomBow/LocalHistorySize" parameter, default 1000), the oldest points are removed from the local map.
For
OdometryOpticalFlow, transformations are estimated frame to frame. Features are tracked using optical flow. Because it is frame to frame, the estimated position of the camera may drift even when the camera is not moving.
Cheers