Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/libmv/libmv/autotrack/autotrack.h')
-rw-r--r--extern/libmv/libmv/autotrack/autotrack.h226
1 files changed, 0 insertions, 226 deletions
diff --git a/extern/libmv/libmv/autotrack/autotrack.h b/extern/libmv/libmv/autotrack/autotrack.h
deleted file mode 100644
index 1d7422f54e7..00000000000
--- a/extern/libmv/libmv/autotrack/autotrack.h
+++ /dev/null
@@ -1,226 +0,0 @@
-// Copyright (c) 2014 libmv authors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-// IN THE SOFTWARE.
-//
-// Author: mierle@gmail.com (Keir Mierle)
-
-#ifndef LIBMV_AUTOTRACK_AUTOTRACK_H_
-#define LIBMV_AUTOTRACK_AUTOTRACK_H_
-
-#include "libmv/autotrack/tracks.h"
-#include "libmv/autotrack/region.h"
-#include "libmv/tracking/track_region.h"
-
-namespace libmv {
-class CameraIntrinsics;
-};
-
-namespace mv {
-
-using libmv::CameraIntrinsics;
-using libmv::TrackRegionOptions;
-using libmv::TrackRegionResult;
-
-struct FrameAccessor;
-class OperationListener;
-
-// The coordinator of all tracking operations; keeps track of all state
-// relating to tracking and reconstruction; for example, 2D tracks and motion
-// models, reconstructed cameras, points, and planes; tracking settings; etc.
-//
-// Typical usage for full autotrack:
-//
-// AutoTrack auto_track(image_accessor);
-// auto_track.SetNumFramesInClip(0, 10);
-// auto_track.SetNumFramesInClip(1, 54);
-// auto_track.AutoTrack()
-//
-// It is also possible to specify options to control the reconstruction.
-// Furthermore, the individual methods of reconstruction are exposed to make it
-// possible to interact with the pipeline as it runs. For example, to track one
-// marker across frames,
-//
-// AutoTrack auto_track(image_accessor);
-// auto_track.SetNumFramesInClip(0, 10);
-// auto_track.SetNumFramesInClip(1, 54);
-// auto_track.AddMarker(...);
-// auto_track.TrackMarkerToFrame(int clip1, int frame1,
-// int clip2, int frame2,
-// options?)
-//
-class AutoTrack {
- public:
- struct Options {
- // Default configuration for 2D tracking when calling TrackMarkerToFrame().
- TrackRegionOptions track_region;
-
- // Default search window for region tracking, in absolute frame pixels.
- Region search_region;
- };
-
- AutoTrack(FrameAccessor* frame_accessor)
- : frame_accessor_(frame_accessor) {}
-
- // Marker manipulation.
- // Clip manipulation.
-
- // Set the number of clips. These clips will get accessed from the frame
- // accessor, matches between frames found, and a reconstruction created.
- //void SetNumFrames(int clip, int num_frames);
-
- // Tracking & Matching
-
- // Find the marker for the track in the frame indicated by the marker.
- // Caller maintains ownership of *result and *tracked_marker.
- bool TrackMarker(Marker* tracked_marker,
- TrackRegionResult* result,
- const TrackRegionOptions* track_options=NULL);
-
- // Wrapper around Tracks API; however these may add additional processing.
- void AddMarker(const Marker& tracked_marker);
- void SetMarkers(vector<Marker>* markers);
- bool GetMarker(int clip, int frame, int track, Marker* marker) const;
-
- // TODO(keir): Implement frame matching! This could be very cool for loop
- // closing and connecting across clips.
- //void MatchFrames(int clip1, int frame1, int clip2, int frame2) {}
-
- // Wrapper around the Reconstruction API.
- // Returns the new ID.
- int AddCameraIntrinsics(CameraIntrinsics* intrinsics) {
- (void) intrinsics;
- return 0;
- } // XXX
- int SetClipIntrinsics(int clip, int intrinsics) {
- (void) clip;
- (void) intrinsics;
- return 0;
- } // XXX
-
- enum Motion {
- GENERAL_CAMERA_MOTION,
- TRIPOD_CAMERA_MOTION,
- };
- int SetClipMotion(int clip, Motion motion) {
- (void) clip;
- (void) motion;
- return 0;
- } // XXX
-
- // Decide what to refine for the given intrinsics. bundle_options is from
- // bundle.h (e.g. BUNDLE_FOCAL_LENGTH | BUNDLE_RADIAL_K1).
- void SetIntrinsicsRefine(int intrinsics, int bundle_options) {
- (void) intrinsics;
- (void) bundle_options;
- } // XXX
-
- // Keyframe read/write.
- struct ClipFrame {
- int clip;
- int frame;
- };
- const vector<ClipFrame>& keyframes() { return keyframes_; }
- void ClearKeyframes() { keyframes_.clear(); }
- void SetKeyframes(const vector<ClipFrame>& keyframes) {
- keyframes_ = keyframes;
- }
-
- // What about reporting what happened? -- callbacks; maybe result struct.
- void Reconstruct();
-
- // Detect and track in 2D.
- struct DetectAndTrackOptions {
- int min_num_features;
- };
- void DetectAndTrack(const DetectAndTrackOptions& options);
-
- struct DetectFeaturesInFrameOptions {
- };
- void DetectFeaturesInFrame(int clip, int frame,
- const DetectFeaturesInFrameOptions* options=NULL) {
- (void) clip;
- (void) frame;
- (void) options;
- } // XXX
-
- // Does not take ownership of the given listener, but keeps a reference to it.
- void AddListener(OperationListener* listener) {(void) listener;} // XXX
-
- // Create the initial reconstruction,
- //void FindInitialReconstruction();
-
- // State machine
- //
- // Question: Have explicit state? Or determine state from existing data?
- // Conclusion: Determine state from existing data.
- //
- // Preliminary state thoughts
- //
- // No tracks or markers
- // - Tracks empty.
- //
- // Initial tracks found
- // - All images have at least 5 tracks
- //
- // Ran RANSAC on tracks to mark inliers / outliers.
- // - All images have at least 8 "inlier" tracks
- //
- // Detector matching run to close loops and match across clips
- // - At least 5 matching tracks between clips
- //
- // Initial reconstruction found (2 frames)?
- // - There exists two cameras with intrinsics / extrinsics
- //
- // Preliminary reconstruction finished
- // - Poses for all frames in all clips estimated.
- //
- // Final reconstruction finished
- // - Final reconstruction bundle adjusted.
-
- // For now, expose options directly. In the future this may change.
- Options options;
-
- private:
- bool Log();
- bool Progress();
- bool Cancelled() { return false; }
-
- Tracks tracks_; // May be normalized camera coordinates or raw pixels.
- //Reconstruction reconstruction_;
-
- // TODO(keir): Add the motion models here.
- //vector<MotionModel> motion_models_;
-
- // TODO(keir): Should num_clips and num_frames get moved to FrameAccessor?
- // TODO(keir): What about masking for clips and frames to prevent various
- // things like reconstruction or tracking from happening on certain frames?
- FrameAccessor* frame_accessor_;
- //int num_clips_;
- //vector<int> num_frames_; // Indexed by clip.
-
- // The intrinsics for each clip, assuming each clip has fixed intrinsics.
- // TODO(keir): Decide what the semantics should be for varying focal length.
- vector<int> clip_intrinsics_;
-
- vector<ClipFrame> keyframes_;
-};
-
-} // namespace mv
-
-#endif // LIBMV_AUTOTRACK_AUTOTRACK_H_