boofcv.abst.feature.tracker.PointTrackerTwoPass Maven / Gradle / Ivy
Show all versions of geo Show documentation
/*
* Copyright (c) 2011-2013, Peter Abeles. All Rights Reserved.
*
* This file is part of BoofCV (http://boofcv.org).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package boofcv.abst.feature.tracker;
import boofcv.struct.image.ImageBase;
/**
*
* Extension of {@link PointTracker} allows for predictions of a feature's location to be incorporated into the tracker.
* A typical usage would be to first run the tracker, estimate a motion model, then use the said motion model to
* predict each feature's location.
*
*
*
* The behavior of {@link #process(boofcv.struct.image.ImageBase)}} has been changed. It will only update each track's
* location and the active list. {@link #performSecondPass()} will also only update the track's location and
* active list. {@link #finishTracking()} will update the dropped list and change the track's description.
*
*
*
* Dropping tracks: Tracks should not be dropped until after finishTracking() has been called. If a track is
* dropped between process() and finishTracking() are called, then the behavior is not defined.
*
*
*
* NOTES:
*
* - A track hint can be set before {@link #process(boofcv.struct.image.ImageBase)} is called.
* - Calling {@link #process(boofcv.struct.image.ImageBase)} and {@link #finishTracking()} is equivalent
* to just calling process() in the standard {@link PointTracker} interface.
*
*
*
* @author Peter Abeles
*/
public interface PointTrackerTwoPass extends PointTracker {
/**
* Changes behavior of {@link PointTracker#process(boofcv.struct.image.ImageBase)} in that it will only
* update each track's location, but not its description, and the active list. Call {@link #finishTracking()}
* to update the track's description, the inactive list, and the dropped list. An exception is thrown if
* multiple calls to this function are made without calling {@link #finishTracking()}.
*
* @param image Next image in the sequence
*/
public void process(T image);
/**
* Updates spacial information for each track and active list. Does not change the track description or any other
* lists. Can be called multiple times.
*/
public void performSecondPass();
/**
* Finishes tracking and updates the track's description, updates inactive and drop track lists.
*/
public void finishTracking();
/**
* Provides a hint for where the
* @param pixelX x-coordinate hint for where the track is in the image
* @param pixelY y-coordinate hint for where the track is in the image
* @param track The track for which the hint is being provided for
*/
public void setHint( double pixelX , double pixelY , PointTrack track );
}