code: public KltTrackFault track(PyramidKltFeature feature) {
  
  		// this is the first level it was able to track the feature at
  		int firstLevelTracked = -1;
  
  		float x = feature.x;
  		float y = feature.y;
  
  		// track from the top of the pyramid to the bottom
  		for (int layer = image.getNumLayers()-1; layer >= 0; layer--) {
  			float scale = (float)image.getScale(layer);
  			x /= scale;
  			y /= scale;
  
  			// tracking never needs the derivative
  			tracker.unsafe_setImage(image.getLayer(layer), null, null);
  
  			KltFeature f = feature.desc[layer];
  			f.setPosition(x, y);
  			KltTrackFault ret = tracker.track(f);
  
  			if (ret == KltTrackFault.SUCCESS) {
  				if( firstLevelTracked == -1 )
  					firstLevelTracked = layer;
  				// nothing bad happened, save this result
  				x = feature.desc[layer].x;
  				y = feature.desc[layer].y;
  			} else {
  				// tracking failed
  				return ret;
  			}
  
  			x *= scale;
  			y *= scale;
  		}
  
  		feature.setPosition(x, y);
  		return KltTrackFault.SUCCESS;
  	}
docs: <p>
  Finds the feature's new location in the image. The feature's position can be modified even if
  tracking fails.
  </p>
  
  <p>
  NOTE: The feature's description is not updated and tracking over several frames can break down
  if its description is not updated.
  </p>
  
  @param feature The feature being tracked.
  @return If tracking failed or not.